diff --git a/node/model/db.js b/node/model/db.js index 1ca23fec4834b18a90f918ddf7b7d04b7e3de145..45e3ec0a5793065718ac59b751dcceb7e9aaa703 100644 --- a/node/model/db.js +++ b/node/model/db.js @@ -11,5 +11,4 @@ conn.on('query', () => { conn.on('error', (err) => { console.log('连接失败' + err) }) - module.exports = mongoose \ No newline at end of file diff --git a/node/model/module/axl_db.js b/node/model/module/axl_db.js index 629293c0ca17c7f57077991ef53283a398d4a503..2f57b096532714aecf23aa9ad1716599aed08beb 100644 --- a/node/model/module/axl_db.js +++ b/node/model/module/axl_db.js @@ -17,6 +17,47 @@ const mongoose = require('../db') // const UserModel = mongoose.model('UserModel', UserSchema, 'UserModel') +const orderSchema = new mongoose.Schema({ + ordernum:String,//订单编号 + ordername:String,//订单名称 + orderdesc:String,//订单详情 + orderprice:String,//订单价格 + orderimg:String,//订单图片 + ordernumber:Number,//订单数量 + ordertime:String,//订单时间 + orderaddress:String,//订单地址 + orderphone:String,//订单电话 + orderuser:String,//订单用户 + userid:String,//用户id + ordertype:{type:String,default:'待服务'},//订单类型[1:待付款2:待服务3:待评价] +}) + + + +const order1Schema = new mongoose.Schema({ + ordernum:String,//订单编号 + ordername:String,//订单名称 + orderprice:String,//订单价格 + orderimg:String,//订单图片 + ordernumber:Number,//订单数量 + ordersize:String,//订单尺码 + ordertype:{type:String,default:'待发货'},//订单类型[0:待付款1:待评价2:待收货3:待发货] + }) + + + const addmessSchema = new mongoose.Schema({ + name:String, //用户姓名 + tel:String, //用户电话 + city:String, //用户城市 + address:String, //用户地址 + uid:String, //用户id + isDefault:Boolean//是否是默认地址 + }) + + const orderModel = mongoose.model('orderModel', orderSchema, 'order') + const orderModel1 = mongoose.model('orderModel1', order1Schema, 'order1') + const addmessModel = mongoose.model('addmessModel', addmessSchema, 'addmess') + // 暴露文件 -module.exports = {} \ No newline at end of file +module.exports = {orderModel,orderModel1,addmessModel} \ No newline at end of file diff --git a/node/model/module/hjc_db.js b/node/model/module/hjc_db.js index 7f376c5cfa59294908dea03d74735f974e6375c6..db41063ecb3a2f04b6300719ab2fe1029fa02ddd 100644 --- a/node/model/module/hjc_db.js +++ b/node/model/module/hjc_db.js @@ -42,4 +42,4 @@ const yonghuModel = mongoose.model('yonghuModel', yonghuSchema, 'yonghu') // 暴露文件 -module.exports = {yonghuModel} \ No newline at end of file +module.exports = {yonghuModel} diff --git a/node/model/module/llf_db.js b/node/model/module/llf_db.js index 2a280c9c23ae10e0fd80b9b5ccfe303e846e681a..58f4b866ffe3a75451216ceec43c57c933719362 100644 --- a/node/model/module/llf_db.js +++ b/node/model/module/llf_db.js @@ -90,4 +90,4 @@ const LoginModel = mongoose.model('Login', LoginSchema, 'Login'); // }) // 暴露文件 -module.exports = {RefreshToken,LoginModel } \ No newline at end of file +module.exports = {RefreshToken,LoginModel } diff --git a/node/node_modules/.bin/acorn b/node/node_modules/.bin/acorn index 4ab9cd86e3ee8b8531f84ab4df8cfbc8f74ddd6d..09ef9a9e2053787705bf3d91a172a764b1286aae 100644 --- a/node/node_modules/.bin/acorn +++ b/node/node_modules/.bin/acorn @@ -2,6 +2,7 @@ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in +<<<<<<< HEAD *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac @@ -13,5 +14,13 @@ fi if [ -x "$basedir/node" ]; then exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@" else +======= + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@" +else +>>>>>>> d60373f (lws) exec node "$basedir/../acorn/bin/acorn" "$@" fi diff --git a/node/node_modules/.bin/acorn.cmd b/node/node_modules/.bin/acorn.cmd index f39ca1bc68ec0b2e6ff8740538e40dd777c9673c..786cb280b163cc210626f568277ab325dd901a64 100644 --- a/node/node_modules/.bin/acorn.cmd +++ b/node/node_modules/.bin/acorn.cmd @@ -1,3 +1,4 @@ +<<<<<<< HEAD @SETLOCAL @IF NOT DEFINED NODE_PATH ( @SET "NODE_PATH=E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\acorn\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\acorn\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" @@ -10,3 +11,22 @@ @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\acorn\bin\acorn" %* ) +======= +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %* +>>>>>>> d60373f (lws) diff --git a/node/node_modules/.bin/acorn.ps1 b/node/node_modules/.bin/acorn.ps1 index 665fe839dd7fd3295e710d026d95b6a15564e955..7b8998f02c9e21395435e3f36a25c4d2e0a3c15e 100644 --- a/node/node_modules/.bin/acorn.ps1 +++ b/node/node_modules/.bin/acorn.ps1 @@ -2,13 +2,17 @@ $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" +<<<<<<< HEAD $pathsep=":" $env_node_path=$env:NODE_PATH $new_node_path="E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\acorn\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\acorn\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" +======= +>>>>>>> d60373f (lws) if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { # Fix case when both the Windows and Linux builds of Node # are installed in the same directory $exe=".exe" +<<<<<<< HEAD $pathsep=";" } else { $new_node_path="/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/acorn/bin/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/acorn/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/node_modules:/mnt/e/学习笔记/专高六/node_modules:/mnt/e/学习笔记/node_modules:/mnt/e/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/node_modules" @@ -19,6 +23,9 @@ if ([string]::IsNullOrEmpty($env_node_path)) { $env:NODE_PATH="$new_node_path$pathsep$env_node_path" } +======= +} +>>>>>>> d60373f (lws) $ret=0 if (Test-Path "$basedir/node$exe") { # Support pipeline input @@ -37,5 +44,8 @@ if (Test-Path "$basedir/node$exe") { } $ret=$LASTEXITCODE } +<<<<<<< HEAD $env:NODE_PATH=$env_node_path +======= +>>>>>>> d60373f (lws) exit $ret diff --git a/node/node_modules/.bin/cleancss b/node/node_modules/.bin/cleancss index 4c9d3eaae182ed38b74a38470ae7d990b00eb108..1e8a0dc682c7bfbec4593fe9d71a59bccca9fc23 100644 --- a/node/node_modules/.bin/cleancss +++ b/node/node_modules/.bin/cleancss @@ -2,6 +2,7 @@ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in +<<<<<<< HEAD *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac @@ -13,5 +14,13 @@ fi if [ -x "$basedir/node" ]; then exec "$basedir/node" "$basedir/../clean-css/bin/cleancss" "$@" else +======= + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../clean-css/bin/cleancss" "$@" +else +>>>>>>> d60373f (lws) exec node "$basedir/../clean-css/bin/cleancss" "$@" fi diff --git a/node/node_modules/.bin/cleancss.cmd b/node/node_modules/.bin/cleancss.cmd index a6de069af603aa1df3436fbeb581ee523c92b2e7..6862565578b782cdfb0db1a38056d9512a0d5e6e 100644 --- a/node/node_modules/.bin/cleancss.cmd +++ b/node/node_modules/.bin/cleancss.cmd @@ -1,3 +1,4 @@ +<<<<<<< HEAD @SETLOCAL @IF NOT DEFINED NODE_PATH ( @SET "NODE_PATH=E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\clean-css\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\clean-css\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" @@ -10,3 +11,22 @@ @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\clean-css\bin\cleancss" %* ) +======= +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\clean-css\bin\cleancss" %* +>>>>>>> d60373f (lws) diff --git a/node/node_modules/.bin/cleancss.ps1 b/node/node_modules/.bin/cleancss.ps1 index f7e75e4c7dd62f5b24ac4d58c38435e238b4bb51..f948212587011b98fb2209872868bed614ef16f4 100644 --- a/node/node_modules/.bin/cleancss.ps1 +++ b/node/node_modules/.bin/cleancss.ps1 @@ -2,13 +2,17 @@ $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" +<<<<<<< HEAD $pathsep=":" $env_node_path=$env:NODE_PATH $new_node_path="E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\clean-css\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\clean-css\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" +======= +>>>>>>> d60373f (lws) if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { # Fix case when both the Windows and Linux builds of Node # are installed in the same directory $exe=".exe" +<<<<<<< HEAD $pathsep=";" } else { $new_node_path="/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/clean-css/bin/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/clean-css/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/node_modules:/mnt/e/学习笔记/专高六/node_modules:/mnt/e/学习笔记/node_modules:/mnt/e/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/node_modules" @@ -19,6 +23,9 @@ if ([string]::IsNullOrEmpty($env_node_path)) { $env:NODE_PATH="$new_node_path$pathsep$env_node_path" } +======= +} +>>>>>>> d60373f (lws) $ret=0 if (Test-Path "$basedir/node$exe") { # Support pipeline input @@ -37,5 +44,8 @@ if (Test-Path "$basedir/node$exe") { } $ret=$LASTEXITCODE } +<<<<<<< HEAD $env:NODE_PATH=$env_node_path +======= +>>>>>>> d60373f (lws) exit $ret diff --git a/node/node_modules/.bin/jade b/node/node_modules/.bin/jade index 8d3975b130fed1838543842beaa9dcf7b6168dac..6878225543fca0c36a0bc80edb2dcebafc332d56 100644 --- a/node/node_modules/.bin/jade +++ b/node/node_modules/.bin/jade @@ -2,6 +2,7 @@ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in +<<<<<<< HEAD *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac @@ -13,5 +14,13 @@ fi if [ -x "$basedir/node" ]; then exec "$basedir/node" "$basedir/../jade/bin/jade.js" "$@" else +======= + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../jade/bin/jade.js" "$@" +else +>>>>>>> d60373f (lws) exec node "$basedir/../jade/bin/jade.js" "$@" fi diff --git a/node/node_modules/.bin/jade.cmd b/node/node_modules/.bin/jade.cmd index 2457f172033eaf8b5828e53a835b5941dbacc33f..41d175bf30fa1d18307daca37c9121b32faa560d 100644 --- a/node/node_modules/.bin/jade.cmd +++ b/node/node_modules/.bin/jade.cmd @@ -1,3 +1,4 @@ +<<<<<<< HEAD @SETLOCAL @IF NOT DEFINED NODE_PATH ( @SET "NODE_PATH=E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\registry.npmmirror.com+jade@1.11.0\node_modules\jade\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\registry.npmmirror.com+jade@1.11.0\node_modules\jade\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\registry.npmmirror.com+jade@1.11.0\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" @@ -10,3 +11,22 @@ @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\jade\bin\jade.js" %* ) +======= +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jade\bin\jade.js" %* +>>>>>>> d60373f (lws) diff --git a/node/node_modules/.bin/jade.ps1 b/node/node_modules/.bin/jade.ps1 index 174cfc97f99dcbb41d6cd5f241375c941bb0905b..2bad91e1b25e283397d2d625d8461b3de4ef8da9 100644 --- a/node/node_modules/.bin/jade.ps1 +++ b/node/node_modules/.bin/jade.ps1 @@ -2,13 +2,17 @@ $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" +<<<<<<< HEAD $pathsep=":" $env_node_path=$env:NODE_PATH $new_node_path="E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\registry.npmmirror.com+jade@1.11.0\node_modules\jade\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\registry.npmmirror.com+jade@1.11.0\node_modules\jade\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\registry.npmmirror.com+jade@1.11.0\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" +======= +>>>>>>> d60373f (lws) if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { # Fix case when both the Windows and Linux builds of Node # are installed in the same directory $exe=".exe" +<<<<<<< HEAD $pathsep=";" } else { $new_node_path="/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/registry.npmmirror.com+jade@1.11.0/node_modules/jade/bin/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/registry.npmmirror.com+jade@1.11.0/node_modules/jade/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/registry.npmmirror.com+jade@1.11.0/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/node_modules" @@ -19,6 +23,9 @@ if ([string]::IsNullOrEmpty($env_node_path)) { $env:NODE_PATH="$new_node_path$pathsep$env_node_path" } +======= +} +>>>>>>> d60373f (lws) $ret=0 if (Test-Path "$basedir/node$exe") { # Support pipeline input @@ -37,5 +44,8 @@ if (Test-Path "$basedir/node$exe") { } $ret=$LASTEXITCODE } +<<<<<<< HEAD $env:NODE_PATH=$env_node_path +======= +>>>>>>> d60373f (lws) exit $ret diff --git a/node/node_modules/.bin/mime b/node/node_modules/.bin/mime index 2405801312d047cf81f1050e410daba618bb26bc..6d60a47d8e23a561b18a3a2cb7a3e3a582bb51ac 100644 --- a/node/node_modules/.bin/mime +++ b/node/node_modules/.bin/mime @@ -2,6 +2,7 @@ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in +<<<<<<< HEAD *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac @@ -13,5 +14,13 @@ fi if [ -x "$basedir/node" ]; then exec "$basedir/node" "$basedir/../mime/cli.js" "$@" else +======= + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mime/cli.js" "$@" +else +>>>>>>> d60373f (lws) exec node "$basedir/../mime/cli.js" "$@" fi diff --git a/node/node_modules/.bin/mime.cmd b/node/node_modules/.bin/mime.cmd index 7b0e30a4287fc09cd3556e46d99696e3d374be76..0e1a85159ffc411ca6774fa92043b1ee7cc1e015 100644 --- a/node/node_modules/.bin/mime.cmd +++ b/node/node_modules/.bin/mime.cmd @@ -1,3 +1,4 @@ +<<<<<<< HEAD @SETLOCAL @IF NOT DEFINED NODE_PATH ( @SET "NODE_PATH=E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\mime\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" @@ -10,3 +11,22 @@ @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\mime\cli.js" %* ) +======= +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* +>>>>>>> d60373f (lws) diff --git a/node/node_modules/.bin/mime.ps1 b/node/node_modules/.bin/mime.ps1 index 10f0892977eff7c5f777e426627f64b04f69b179..20bbe3e0f72c41723d8ab26253b1e61fe22a1e53 100644 --- a/node/node_modules/.bin/mime.ps1 +++ b/node/node_modules/.bin/mime.ps1 @@ -2,13 +2,17 @@ $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" +<<<<<<< HEAD $pathsep=":" $env_node_path=$env:NODE_PATH $new_node_path="E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\mime\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" +======= +>>>>>>> d60373f (lws) if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { # Fix case when both the Windows and Linux builds of Node # are installed in the same directory $exe=".exe" +<<<<<<< HEAD $pathsep=";" } else { $new_node_path="/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/mime/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/node_modules:/mnt/e/学习笔记/专高六/node_modules:/mnt/e/学习笔记/node_modules:/mnt/e/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/node_modules" @@ -19,6 +23,9 @@ if ([string]::IsNullOrEmpty($env_node_path)) { $env:NODE_PATH="$new_node_path$pathsep$env_node_path" } +======= +} +>>>>>>> d60373f (lws) $ret=0 if (Test-Path "$basedir/node$exe") { # Support pipeline input @@ -37,5 +44,8 @@ if (Test-Path "$basedir/node$exe") { } $ret=$LASTEXITCODE } +<<<<<<< HEAD $env:NODE_PATH=$env_node_path +======= +>>>>>>> d60373f (lws) exit $ret diff --git a/node/node_modules/.bin/mkdirp b/node/node_modules/.bin/mkdirp index 01b4caa792cc3c2e219fe954600789405f32a7ca..1404801ea9037802919f5fc8147b0b4c48e67212 100644 --- a/node/node_modules/.bin/mkdirp +++ b/node/node_modules/.bin/mkdirp @@ -2,6 +2,7 @@ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in +<<<<<<< HEAD *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac @@ -13,5 +14,13 @@ fi if [ -x "$basedir/node" ]; then exec "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" else +======= + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" +else +>>>>>>> d60373f (lws) exec node "$basedir/../mkdirp/bin/cmd.js" "$@" fi diff --git a/node/node_modules/.bin/mkdirp.cmd b/node/node_modules/.bin/mkdirp.cmd index 9a6f99c4154c01e918c36ca38fa781635b1d9295..38f9ac708fa0e9e264d0d10ab863722a12dcf8b2 100644 --- a/node/node_modules/.bin/mkdirp.cmd +++ b/node/node_modules/.bin/mkdirp.cmd @@ -1,3 +1,4 @@ +<<<<<<< HEAD @SETLOCAL @IF NOT DEFINED NODE_PATH ( @SET "NODE_PATH=E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\mkdirp\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\mkdirp\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" @@ -10,3 +11,22 @@ @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\mkdirp\bin\cmd.js" %* ) +======= +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mkdirp\bin\cmd.js" %* +>>>>>>> d60373f (lws) diff --git a/node/node_modules/.bin/mkdirp.ps1 b/node/node_modules/.bin/mkdirp.ps1 index 80e25c7a25ce9f1b5e4cd4062db8823d599df3b1..a8707b73278ee770c968804d1c24fbf4e8558a85 100644 --- a/node/node_modules/.bin/mkdirp.ps1 +++ b/node/node_modules/.bin/mkdirp.ps1 @@ -2,13 +2,17 @@ $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" +<<<<<<< HEAD $pathsep=":" $env_node_path=$env:NODE_PATH $new_node_path="E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\mkdirp\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\mkdirp\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" +======= +>>>>>>> d60373f (lws) if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { # Fix case when both the Windows and Linux builds of Node # are installed in the same directory $exe=".exe" +<<<<<<< HEAD $pathsep=";" } else { $new_node_path="/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/mkdirp/bin/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/mkdirp/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/node_modules:/mnt/e/学习笔记/专高六/node_modules:/mnt/e/学习笔记/node_modules:/mnt/e/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/node_modules" @@ -19,6 +23,9 @@ if ([string]::IsNullOrEmpty($env_node_path)) { $env:NODE_PATH="$new_node_path$pathsep$env_node_path" } +======= +} +>>>>>>> d60373f (lws) $ret=0 if (Test-Path "$basedir/node$exe") { # Support pipeline input @@ -37,5 +44,8 @@ if (Test-Path "$basedir/node$exe") { } $ret=$LASTEXITCODE } +<<<<<<< HEAD $env:NODE_PATH=$env_node_path +======= +>>>>>>> d60373f (lws) exit $ret diff --git a/node/node_modules/.bin/uglifyjs b/node/node_modules/.bin/uglifyjs index 25aed40ec8b3bf1712aaa3b5d2ea1d7b80c147ef..3abb6e85e46cc04f45f298fbbf1a96e0a69a8d82 100644 --- a/node/node_modules/.bin/uglifyjs +++ b/node/node_modules/.bin/uglifyjs @@ -2,6 +2,7 @@ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in +<<<<<<< HEAD *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac @@ -13,5 +14,13 @@ fi if [ -x "$basedir/node" ]; then exec "$basedir/node" "$basedir/../uglify-js/bin/uglifyjs" "$@" else +======= + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../uglify-js/bin/uglifyjs" "$@" +else +>>>>>>> d60373f (lws) exec node "$basedir/../uglify-js/bin/uglifyjs" "$@" fi diff --git a/node/node_modules/.bin/uglifyjs.cmd b/node/node_modules/.bin/uglifyjs.cmd index 420168c57b1d111453473fc410fc3a26d34aee7e..68f7eef82c2afc203d4e99aad6c49966afc39f72 100644 --- a/node/node_modules/.bin/uglifyjs.cmd +++ b/node/node_modules/.bin/uglifyjs.cmd @@ -1,3 +1,4 @@ +<<<<<<< HEAD @SETLOCAL @IF NOT DEFINED NODE_PATH ( @SET "NODE_PATH=E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\uglify-js\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\uglify-js\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" @@ -10,3 +11,22 @@ @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\..\uglify-js\bin\uglifyjs" %* ) +======= +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\uglify-js\bin\uglifyjs" %* +>>>>>>> d60373f (lws) diff --git a/node/node_modules/.bin/uglifyjs.ps1 b/node/node_modules/.bin/uglifyjs.ps1 index 84e873350092f6fb23f0285838cfffe1cd5f7211..0cf8191e87891ab5e7f77165759e02e92cbd2fd0 100644 --- a/node/node_modules/.bin/uglifyjs.ps1 +++ b/node/node_modules/.bin/uglifyjs.ps1 @@ -2,13 +2,17 @@ $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent $exe="" +<<<<<<< HEAD $pathsep=":" $env_node_path=$env:NODE_PATH $new_node_path="E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\uglify-js\bin\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\uglify-js\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node_modules;E:\学习笔记\专高六\专高六第三个月\node_modules;E:\学习笔记\专高六\node_modules;E:\学习笔记\node_modules;E:\node_modules;E:\学习笔记\专高六\专高六第三个月\专高六项目\node\node_modules\.pnpm\node_modules" +======= +>>>>>>> d60373f (lws) if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { # Fix case when both the Windows and Linux builds of Node # are installed in the same directory $exe=".exe" +<<<<<<< HEAD $pathsep=";" } else { $new_node_path="/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/uglify-js/bin/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/uglify-js/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/node_modules:/mnt/e/学习笔记/专高六/node_modules:/mnt/e/学习笔记/node_modules:/mnt/e/node_modules:/mnt/e/学习笔记/专高六/专高六第三个月/专高六项目/node/node_modules/.pnpm/node_modules" @@ -19,6 +23,9 @@ if ([string]::IsNullOrEmpty($env_node_path)) { $env:NODE_PATH="$new_node_path$pathsep$env_node_path" } +======= +} +>>>>>>> d60373f (lws) $ret=0 if (Test-Path "$basedir/node$exe") { # Support pipeline input @@ -37,5 +44,8 @@ if (Test-Path "$basedir/node$exe") { } $ret=$LASTEXITCODE } +<<<<<<< HEAD $env:NODE_PATH=$env_node_path +======= +>>>>>>> d60373f (lws) exit $ret diff --git a/node/node_modules/.package-lock.json b/node/node_modules/.package-lock.json index ae95e98edcaef55072f36260e37b6c2c7463bbda..f56e0aef5b21cdab1ff12a16c071ffb1901089f0 100644 --- a/node/node_modules/.package-lock.json +++ b/node/node_modules/.package-lock.json @@ -126,11 +126,14 @@ "node": ">=16.20.1" } }, +<<<<<<< HEAD "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, +======= +>>>>>>> d60373f (lws) "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", @@ -318,6 +321,7 @@ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.0.4.tgz", "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" }, +<<<<<<< HEAD "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -326,6 +330,8 @@ "safe-buffer": "^5.0.1" } }, +======= +>>>>>>> d60373f (lws) "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -468,6 +474,30 @@ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, +<<<<<<< HEAD +======= + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "optional": true, + "peer": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "optional": true, + "peer": true + }, +>>>>>>> d60373f (lws) "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -507,6 +537,7 @@ "jade": "bin/jade.js" } }, +<<<<<<< HEAD "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmmirror.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -551,6 +582,14 @@ "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +======= + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "optional": true, + "peer": true +>>>>>>> d60373f (lws) }, "node_modules/jstransformer": { "version": "0.0.2", @@ -561,6 +600,7 @@ "promise": "^6.0.1" } }, +<<<<<<< HEAD "node_modules/jwa": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/jwa/-/jwa-2.0.0.tgz", @@ -580,6 +620,8 @@ "safe-buffer": "^5.0.1" } }, +======= +>>>>>>> d60373f (lws) "node_modules/kareem": { "version": "2.5.1", "resolved": "https://registry.npmmirror.com/kareem/-/kareem-2.5.1.tgz", @@ -607,6 +649,7 @@ "node": ">=0.10.0" } }, +<<<<<<< HEAD "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -642,6 +685,8 @@ "resolved": "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, +======= +>>>>>>> d60373f (lws) "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/longest/-/longest-1.0.1.tgz", @@ -650,6 +695,7 @@ "node": ">=0.10.0" } }, +<<<<<<< HEAD "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", @@ -661,6 +707,8 @@ "node": ">=10" } }, +======= +>>>>>>> d60373f (lws) "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", @@ -1009,6 +1057,7 @@ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, +<<<<<<< HEAD "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz", @@ -1023,6 +1072,8 @@ "node": ">=10" } }, +======= +>>>>>>> d60373f (lws) "node_modules/send": { "version": "0.16.2", "resolved": "https://registry.npmmirror.com/send/-/send-0.16.2.tgz", @@ -1070,6 +1121,35 @@ "resolved": "https://registry.npmmirror.com/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, +<<<<<<< HEAD +======= + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "optional": true, + "peer": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/source-map": { "version": "0.4.4", "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz", @@ -1097,6 +1177,17 @@ "node": ">= 0.6" } }, +<<<<<<< HEAD +======= + "node_modules/swiper": { + "version": "11.0.7", + "resolved": "https://registry.npmmirror.com/swiper/-/swiper-11.0.7.tgz", + "integrity": "sha512-cDfglW1B6uSmB6eB6pNmzDTNLmZtu5bWWa1vak0RU7fOI9qHjMzl7gVBvYSl34b0RU2N11HxxETJqQ5LeqI1cA==", + "engines": { + "node": ">= 4.7.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/tr46": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/tr46/-/tr46-4.1.1.tgz", @@ -1290,11 +1381,14 @@ "node": ">=0.4.0" } }, +<<<<<<< HEAD "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, +======= +>>>>>>> d60373f (lws) "node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmmirror.com/yargs/-/yargs-3.10.0.tgz", diff --git a/node/node_modules/ip-address/LICENSE b/node/node_modules/ip-address/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ec79adb0c4020387142e3e82b9bdbb212af6a557 --- /dev/null +++ b/node/node_modules/ip-address/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2011 by Beau Gunderson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node/node_modules/ip-address/README.md b/node/node_modules/ip-address/README.md new file mode 100644 index 0000000000000000000000000000000000000000..877a8ca6ed17d502eedc051e984b71363d7b2544 --- /dev/null +++ b/node/node_modules/ip-address/README.md @@ -0,0 +1,108 @@ +![CircleCI](https://img.shields.io/circleci/build/github/beaugunderson/ip-address) +[![codecov]](https://codecov.io/github/beaugunderson/ip-address?branch=master) +[![downloads]](https://www.npmjs.com/package/ip-address) +[![npm]](https://www.npmjs.com/package/ip-address) +[![snyk]](https://snyk.io/test/github/beaugunderson/ip-address) + +[codecov]: https://codecov.io/github/beaugunderson/ip-address/coverage.svg?branch=master +[downloads]: https://img.shields.io/npm/dm/ip-address.svg +[npm]: https://img.shields.io/npm/v/ip-address.svg +[snyk]: https://snyk.io/test/github/beaugunderson/ip-address/badge.svg + +## ip-address + +`ip-address` is a library for validating and manipulating IPv4 and IPv6 +addresses in JavaScript. + + +### Migrating from 6.x to 7.x + +`ip-address` was rewritten in TypeScript for version 7. If you were using +version 6 you'll need to make these changes to upgrade: + +- Instead of checking `isValid()`, which has been removed, you'll need to use a + `try`/`catch` if you're accepting unknown input. This made the TypeScript + types substantially easier as well as allowed the use of an `AddressError` + class which will contain a `parseMessage` if an error occurred in the parsing + step. +- Instead of using the `error`, `parseError`, and `valid` attributes you'll + need to use the `message` and `parseMessage` of the thrown `AddressError`. + +### Documentation + +Documentation is available at [ip-address.js.org](http://ip-address.js.org/). + +### Examples + +```js +var Address6 = require('ip-address').Address6; + +var address = new Address6('2001:0:ce49:7601:e866:efff:62c3:fffe'); + +var teredo = address.inspectTeredo(); + +teredo.client4; // '157.60.0.1' +``` + +### Features + +- Usable via CommonJS or ESM +- Parsing of all IPv6 notations +- Parsing of IPv6 addresses and ports from URLs with `Address6.fromURL(url)` +- Validity checking +- Decoding of the [Teredo + information](http://en.wikipedia.org/wiki/Teredo_tunneling#IPv6_addressing) + in an address +- Whether one address is a valid subnet of another +- What special properties a given address has (multicast prefix, unique + local address prefix, etc.) +- Number of subnets of a certain size in a given address +- Display methods + - Hex, binary, and decimal + - Canonical form + - Correct form + - IPv4-compatible (i.e. `::ffff:192.168.0.1`) +- Works in [node](http://nodejs.org/) and the browser (with browserify) +- ~1,600 test cases + +### Used by + +- [anon](https://github.com/edsu/anon) which powers + [@congressedits](https://twitter.com/congressedits), among + [many others](https://github.com/edsu/anon#community) +- [base85](https://github.com/noseglid/base85): base85 encoding/decoding +- [contrail-web-core](https://github.com/Juniper/contrail-web-core): part of + Contrail, a network virtualization solution made by Juniper Networks +- [dhcpjs](https://github.com/apaprocki/node-dhcpjs): a DHCP client and server +- [epochtalk](https://github.com/epochtalk/epochtalk): next generation forum + software +- [geoip-web](https://github.com/tfrce/node-geoip-web): a server for + quickly geolocating IP addresses +- [hexabus](https://github.com/mysmartgrid/hexabus): an IPv6-based home + automation bus +- [hubot-deploy](https://github.com/atmos/hubot-deploy): GitHub Flow via hubot +- [heroku-portscanner](https://github.com/robison/heroku-portscanner): nmap + hosted on Heroku +- [ipfs-swarm](https://github.com/diasdavid/node-ipfs-swarm): a swarm + implementation based on IPFS +- [javascript-x-server](https://github.com/GothAck/javascript-x-server): an X + server written in JavaScript +- [libnmap](https://github.com/jas-/node-libnmap): a node API for nmap +- [mail-io](https://github.com/mofux/mail-io): a lightweight SMTP server +- [maxmind-db-reader](https://github.com/PaddeK/node-maxmind-db): a library for + reading MaxMind database files +- [proxy-protocol-v2](https://github.com/ably/proxy-protocol-v2): a proxy + protocol encoder/decoder built by [Ably](https://www.ably.io/) +- [Samsara](https://github.com/mariusGundersen/Samsara): a Docker web interface +- [sis-api](https://github.com/sis-cmdb/sis-api): a configuration management + database API +- [socks5-client](https://github.com/mattcg/socks5-client): a SOCKS v5 client +- [socksified](https://github.com/vially/node-socksified): a SOCKS v5 client +- [socksv5](https://github.com/mscdex/socksv5): a SOCKS v5 server/client +- [ssdapi](https://github.com/rsolomou/ssdapi): an API created by the + University of Portsmouth +- [SwitchyOmega](https://github.com/FelisCatus/SwitchyOmega): a [Chrome + extension](https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif) + for switching between multiple proxies with ~311k users! +- [swiz](https://github.com/racker/node-swiz): a serialization framework built + and used by [Rackspace](http://www.rackspace.com/) diff --git a/node/node_modules/ip-address/dist/address-error.d.ts b/node/node_modules/ip-address/dist/address-error.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..59b21651678495cf9d6c28d331a984501df156cc --- /dev/null +++ b/node/node_modules/ip-address/dist/address-error.d.ts @@ -0,0 +1,5 @@ +export declare class AddressError extends Error { + parseMessage?: string; + constructor(message: string, parseMessage?: string); +} +//# sourceMappingURL=address-error.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/address-error.d.ts.map b/node/node_modules/ip-address/dist/address-error.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d5a6f7b62c9027a81e824b927ffd95989492061c --- /dev/null +++ b/node/node_modules/ip-address/dist/address-error.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"address-error.d.ts","sourceRoot":"","sources":["../src/address-error.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CASnD"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/address-error.js b/node/node_modules/ip-address/dist/address-error.js new file mode 100644 index 0000000000000000000000000000000000000000..4fcade3ba2486c3ef5e2775512c8f81ff663da6d --- /dev/null +++ b/node/node_modules/ip-address/dist/address-error.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AddressError = void 0; +class AddressError extends Error { + constructor(message, parseMessage) { + super(message); + this.name = 'AddressError'; + if (parseMessage !== null) { + this.parseMessage = parseMessage; + } + } +} +exports.AddressError = AddressError; +//# sourceMappingURL=address-error.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/address-error.js.map b/node/node_modules/ip-address/dist/address-error.js.map new file mode 100644 index 0000000000000000000000000000000000000000..2a0ae22548a6297e413a25117bd595c4be973c80 --- /dev/null +++ b/node/node_modules/ip-address/dist/address-error.js.map @@ -0,0 +1 @@ +{"version":3,"file":"address-error.js","sourceRoot":"","sources":["../src/address-error.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IAGrC,YAAY,OAAe,EAAE,YAAqB;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAE3B,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;SAClC;IACH,CAAC;CACF;AAZD,oCAYC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/common.d.ts b/node/node_modules/ip-address/dist/common.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d06d63e26f2e6797895cdc780a5d2f22519c02e9 --- /dev/null +++ b/node/node_modules/ip-address/dist/common.d.ts @@ -0,0 +1,8 @@ +import { Address4 } from './ipv4'; +import { Address6 } from './ipv6'; +export interface ReverseFormOptions { + omitSuffix?: boolean; +} +export declare function isInSubnet(this: Address4 | Address6, address: Address4 | Address6): boolean; +export declare function isCorrect(defaultBits: number): (this: Address4 | Address6) => boolean; +//# sourceMappingURL=common.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/common.d.ts.map b/node/node_modules/ip-address/dist/common.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..c73c0e3ea2f83b759c1031b1050e25e4e3413b2a --- /dev/null +++ b/node/node_modules/ip-address/dist/common.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,QAAQ,WAUjF;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,UACpB,QAAQ,GAAG,QAAQ,aAW3C"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/common.js b/node/node_modules/ip-address/dist/common.js new file mode 100644 index 0000000000000000000000000000000000000000..4d10c9a4e820352fd9a25e866796e6dbfb2123ab --- /dev/null +++ b/node/node_modules/ip-address/dist/common.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCorrect = exports.isInSubnet = void 0; +function isInSubnet(address) { + if (this.subnetMask < address.subnetMask) { + return false; + } + if (this.mask(address.subnetMask) === address.mask()) { + return true; + } + return false; +} +exports.isInSubnet = isInSubnet; +function isCorrect(defaultBits) { + return function () { + if (this.addressMinusSuffix !== this.correctForm()) { + return false; + } + if (this.subnetMask === defaultBits && !this.parsedSubnet) { + return true; + } + return this.parsedSubnet === String(this.subnetMask); + }; +} +exports.isCorrect = isCorrect; +//# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/common.js.map b/node/node_modules/ip-address/dist/common.js.map new file mode 100644 index 0000000000000000000000000000000000000000..239691955fdb57909255ac212547c3d51969622f --- /dev/null +++ b/node/node_modules/ip-address/dist/common.js.map @@ -0,0 +1 @@ +{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAOA,SAAgB,UAAU,CAA4B,OAA4B;IAChF,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE;QACxC,OAAO,KAAK,CAAC;KACd;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE;QACpD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,gCAUC;AAED,SAAgB,SAAS,CAAC,WAAmB;IAC3C,OAAO;QACL,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;YAClD,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACzD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC;AAZD,8BAYC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ip-address.d.ts b/node/node_modules/ip-address/dist/ip-address.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b8297c0da1169470c04ef6015f57d77f21d988d8 --- /dev/null +++ b/node/node_modules/ip-address/dist/ip-address.d.ts @@ -0,0 +1,11 @@ +import { Address4 } from './ipv4'; +import { Address6 } from './ipv6'; +import { AddressError } from './address-error'; +export { Address4 }; +export { Address6 }; +export { AddressError }; +import * as helpers from './v6/helpers'; +export declare const v6: { + helpers: typeof helpers; +}; +//# sourceMappingURL=ip-address.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ip-address.d.ts.map b/node/node_modules/ip-address/dist/ip-address.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cff761016678833b42571d910ce3665b689360a7 --- /dev/null +++ b/node/node_modules/ip-address/dist/ip-address.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ip-address.d.ts","sourceRoot":"","sources":["../src/ip-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,EAAE;;CAAc,CAAC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ip-address.js b/node/node_modules/ip-address/dist/ip-address.js new file mode 100644 index 0000000000000000000000000000000000000000..553c005a63cb64b826fc134b44802b6d3a663cfe --- /dev/null +++ b/node/node_modules/ip-address/dist/ip-address.js @@ -0,0 +1,35 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.v6 = exports.AddressError = exports.Address6 = exports.Address4 = void 0; +const ipv4_1 = require("./ipv4"); +Object.defineProperty(exports, "Address4", { enumerable: true, get: function () { return ipv4_1.Address4; } }); +const ipv6_1 = require("./ipv6"); +Object.defineProperty(exports, "Address6", { enumerable: true, get: function () { return ipv6_1.Address6; } }); +const address_error_1 = require("./address-error"); +Object.defineProperty(exports, "AddressError", { enumerable: true, get: function () { return address_error_1.AddressError; } }); +const helpers = __importStar(require("./v6/helpers")); +exports.v6 = { helpers }; +//# sourceMappingURL=ip-address.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ip-address.js.map b/node/node_modules/ip-address/dist/ip-address.js.map new file mode 100644 index 0000000000000000000000000000000000000000..a1a3230e35459e69f608de9a4abd0a45f9d1da3b --- /dev/null +++ b/node/node_modules/ip-address/dist/ip-address.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ip-address.js","sourceRoot":"","sources":["../src/ip-address.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAkC;AAIzB,yFAJA,eAAQ,OAIA;AAHjB,iCAAkC;AAIzB,yFAJA,eAAQ,OAIA;AAHjB,mDAA+C;AAItC,6FAJA,4BAAY,OAIA;AAErB,sDAAwC;AAE3B,QAAA,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv4.d.ts b/node/node_modules/ip-address/dist/ipv4.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..06f53bd8ff59fc2f07cb9b1951b1627eaf3e87e5 --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv4.d.ts @@ -0,0 +1,194 @@ +import * as common from './common'; +import { BigInteger } from 'jsbn'; +/** + * Represents an IPv4 address + * @class Address4 + * @param {string} address - An IPv4 address string + */ +export declare class Address4 { + address: string; + addressMinusSuffix?: string; + groups: number; + parsedAddress: string[]; + parsedSubnet: string; + subnet: string; + subnetMask: number; + v4: boolean; + constructor(address: string); + static isValid(address: string): boolean; + parse(address: string): string[]; + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm(): string; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address4 + * @instance + * @returns {Boolean} + */ + isCorrect: (this: Address4 | import("./ipv6").Address6) => boolean; + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex: string): Address4; + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer: number): Address4; + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress: string): Address4; + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex(): string; + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray(): number[]; + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6(): string; + /** + * Returns the address as a BigInteger + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + bigInteger(): BigInteger; + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + _startAddress(): BigInteger; + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress(): Address4; + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive(): Address4; + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + _endAddress(): BigInteger; + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress(): Address4; + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive(): Address4; + /** + * Converts a BigInteger to a v4 address object + * @memberof Address4 + * @static + * @param {BigInteger} bigInteger - a BigInteger to convert + * @returns {Address4} + */ + static fromBigInteger(bigInteger: BigInteger): Address4; + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask?: number): string; + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start: number, end: number): string; + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string; + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isInSubnet: typeof common.isInSubnet; + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean; + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad(): string; + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6(): string; +} +//# sourceMappingURL=ipv4.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv4.d.ts.map b/node/node_modules/ip-address/dist/ipv4.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..26e709a18434761b2fadddcdca330504883c9ca6 --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv4.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv4.d.ts","sourceRoot":"","sources":["../src/ipv4.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGlC;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAoB;IAClC,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,YAAY,EAAE,MAAM,CAAM;IAC1B,MAAM,EAAE,MAAM,CAAS;IACvB,UAAU,EAAE,MAAM,CAAM;IACxB,EAAE,EAAE,OAAO,CAAQ;gBAEP,OAAO,EAAE,MAAM;IAsB3B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAcxC,KAAK,CAAC,OAAO,EAAE,MAAM;IAUrB;;;;;OAKG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;OAKG;IACH,SAAS,0DAAoC;IAE7C;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAcrC;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAI7C;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ;IASlD;;;;;OAKG;IACH,KAAK,IAAI,MAAM;IAIf;;;;;OAKG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;;;;OAKG;IACH,QAAQ,IAAI,MAAM;IAiBlB;;;;;OAKG;IACH,UAAU,IAAI,UAAU;IAOxB;;;;;OAKG;IACH,aAAa,IAAI,UAAU;IAI3B;;;;;;OAMG;IACH,YAAY,IAAI,QAAQ;IAIxB;;;;;;OAMG;IACH,qBAAqB,IAAI,QAAQ;IAKjC;;;;;OAKG;IACH,WAAW,IAAI,UAAU;IAIzB;;;;;;OAMG;IACH,UAAU,IAAI,QAAQ;IAItB;;;;;;OAMG;IACH,mBAAmB,IAAI,QAAQ;IAK/B;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ;IAIvD;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAQ3B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAIhD;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,kBAAkB,GAAG,MAAM;IAcxD;;;;;OAKG;IACH,UAAU,2BAAqB;IAE/B;;;;;OAKG;IACH,WAAW,IAAI,OAAO;IAItB;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,UAAU,IAAI,MAAM;CAYrB"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv4.js b/node/node_modules/ip-address/dist/ipv4.js new file mode 100644 index 0000000000000000000000000000000000000000..22a81b5047f05abb34d8db57874d31552204ba11 --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv4.js @@ -0,0 +1,326 @@ +"use strict"; +/* eslint-disable no-param-reassign */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Address4 = void 0; +const common = __importStar(require("./common")); +const constants = __importStar(require("./v4/constants")); +const address_error_1 = require("./address-error"); +const jsbn_1 = require("jsbn"); +const sprintf_js_1 = require("sprintf-js"); +/** + * Represents an IPv4 address + * @class Address4 + * @param {string} address - An IPv4 address string + */ +class Address4 { + constructor(address) { + this.groups = constants.GROUPS; + this.parsedAddress = []; + this.parsedSubnet = ''; + this.subnet = '/32'; + this.subnetMask = 32; + this.v4 = true; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address4 + * @instance + * @returns {Boolean} + */ + this.isCorrect = common.isCorrect(constants.BITS); + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + this.isInSubnet = common.isInSubnet; + this.address = address; + const subnet = constants.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (this.subnetMask < 0 || this.subnetMask > constants.BITS) { + throw new address_error_1.AddressError('Invalid subnet mask.'); + } + address = address.replace(constants.RE_SUBNET_STRING, ''); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(address); + } + static isValid(address) { + try { + // eslint-disable-next-line no-new + new Address4(address); + return true; + } + catch (e) { + return false; + } + } + /* + * Parses a v4 address + */ + parse(address) { + const groups = address.split('.'); + if (!address.match(constants.RE_ADDRESS)) { + throw new address_error_1.AddressError('Invalid IPv4 address.'); + } + return groups; + } + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm() { + return this.parsedAddress.map((part) => parseInt(part, 10)).join('.'); + } + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex) { + const padded = hex.replace(/:/g, '').padStart(8, '0'); + const groups = []; + let i; + for (i = 0; i < 8; i += 2) { + const h = padded.slice(i, i + 2); + groups.push(parseInt(h, 16)); + } + return new Address4(groups.join('.')); + } + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer) { + return Address4.fromHex(integer.toString(16)); + } + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress) { + // remove ending ".in-addr.arpa." or just "." + const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, ''); + const address = leader.split('.').reverse().join('.'); + return new Address4(address); + } + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex() { + return this.parsedAddress.map((part) => (0, sprintf_js_1.sprintf)('%02x', parseInt(part, 10))).join(':'); + } + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray() { + return this.parsedAddress.map((part) => parseInt(part, 10)); + } + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6() { + const output = []; + let i; + for (i = 0; i < constants.GROUPS; i += 2) { + const hex = (0, sprintf_js_1.sprintf)('%02x%02x', parseInt(this.parsedAddress[i], 10), parseInt(this.parsedAddress[i + 1], 10)); + output.push((0, sprintf_js_1.sprintf)('%x', parseInt(hex, 16))); + } + return output.join(':'); + } + /** + * Returns the address as a BigInteger + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + bigInteger() { + return new jsbn_1.BigInteger(this.parsedAddress.map((n) => (0, sprintf_js_1.sprintf)('%02x', parseInt(n, 10))).join(''), 16); + } + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + _startAddress() { + return new jsbn_1.BigInteger(this.mask() + '0'.repeat(constants.BITS - this.subnetMask), 2); + } + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress() { + return Address4.fromBigInteger(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive() { + const adjust = new jsbn_1.BigInteger('1'); + return Address4.fromBigInteger(this._startAddress().add(adjust)); + } + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + _endAddress() { + return new jsbn_1.BigInteger(this.mask() + '1'.repeat(constants.BITS - this.subnetMask), 2); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress() { + return Address4.fromBigInteger(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive() { + const adjust = new jsbn_1.BigInteger('1'); + return Address4.fromBigInteger(this._endAddress().subtract(adjust)); + } + /** + * Converts a BigInteger to a v4 address object + * @memberof Address4 + * @static + * @param {BigInteger} bigInteger - a BigInteger to convert + * @returns {Address4} + */ + static fromBigInteger(bigInteger) { + return Address4.fromInteger(parseInt(bigInteger.toString(), 10)); + } + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask) { + if (mask === undefined) { + mask = this.subnetMask; + } + return this.getBitsBase2(0, mask); + } + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const reversed = this.correctForm().split('.').reverse().join('.'); + if (options.omitSuffix) { + return reversed; + } + return (0, sprintf_js_1.sprintf)('%s.in-addr.arpa.', reversed); + } + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.isInSubnet(new Address4('224.0.0.0/4')); + } + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad() { + return this.bigInteger().toString(2).padStart(constants.BITS, '0'); + } + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6() { + const segments = this.parsedAddress; + return this.address.replace(constants.RE_ADDRESS, (0, sprintf_js_1.sprintf)('%s.%s', segments.slice(0, 2).join('.'), segments.slice(2, 4).join('.'))); + } +} +exports.Address4 = Address4; +//# sourceMappingURL=ipv4.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv4.js.map b/node/node_modules/ip-address/dist/ipv4.js.map new file mode 100644 index 0000000000000000000000000000000000000000..55334e21b51e894b8a885700a4d7bc358c5a9ef3 --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv4.js","sourceRoot":"","sources":["../src/ipv4.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv6.d.ts b/node/node_modules/ip-address/dist/ipv6.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b950947d1321200bfe3b881892bbf4e16027be9b --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv6.d.ts @@ -0,0 +1,429 @@ +import * as common from './common'; +import { Address4 } from './ipv4'; +import { BigInteger } from 'jsbn'; +interface SixToFourProperties { + prefix: string; + gateway: string; +} +interface TeredoProperties { + prefix: string; + server4: string; + client4: string; + flags: string; + coneNat: boolean; + microsoft: { + reserved: boolean; + universalLocal: boolean; + groupIndividual: boolean; + nonce: string; + }; + udpPort: string; +} +/** + * Represents an IPv6 address + * @class Address6 + * @param {string} address - An IPv6 address string + * @param {number} [groups=8] - How many octets to parse + * @example + * var address = new Address6('2001::/32'); + */ +export declare class Address6 { + address4?: Address4; + address: string; + addressMinusSuffix: string; + elidedGroups?: number; + elisionBegin?: number; + elisionEnd?: number; + groups: number; + parsedAddress4?: string; + parsedAddress: string[]; + parsedSubnet: string; + subnet: string; + subnetMask: number; + v4: boolean; + zone: string; + constructor(address: string, optionalGroups?: number); + static isValid(address: string): boolean; + /** + * Convert a BigInteger to a v6 address object + * @memberof Address6 + * @static + * @param {BigInteger} bigInteger - a BigInteger to convert + * @returns {Address6} + * @example + * var bigInteger = new BigInteger('1000000000000'); + * var address = Address6.fromBigInteger(bigInteger); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInteger(bigInteger: BigInteger): Address6; + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url: string): { + error: string; + address: null; + port: null; + } | { + address: Address6; + port: number | null; + error?: undefined; + }; + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address: string): Address6; + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress: string): Address6; + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription(): string; + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask?: number): string; + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [size=128] - the subnet size + * @returns {String} + */ + possibleSubnets(subnetSize?: number): string; + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + _startAddress(): BigInteger; + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress(): Address6; + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive(): Address6; + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + _endAddress(): BigInteger; + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress(): Address6; + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive(): Address6; + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope(): string; + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType(): string; + /** + * Return the bits in the given range as a BigInteger + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + getBits(start: number, end: number): BigInteger; + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start: number, end: number): string; + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start: number, end: number): string; + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet(): string; + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string; + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm(): string; + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad(): string; + parse4in6(address: string): string; + parse(address: string): string[]; + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm(): string; + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal(): string; + /** + * Return the address as a BigInteger + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + bigInteger(): BigInteger; + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4(): Address4; + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6(): string; + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo(): TeredoProperties; + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4(): SixToFourProperties; + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4(): Address6 | null; + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray(): number[]; + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray(): number[]; + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes: Array): Address6; + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes: Array): Address6; + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isInSubnet: typeof common.isInSubnet; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCorrect: (this: Address4 | Address6) => boolean; + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical(): boolean; + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal(): boolean; + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean; + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4(): boolean; + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo(): boolean; + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4(): boolean; + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback(): boolean; + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort?: number | string): string; + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options?: { + className?: string; + prefix?: string; + v4?: boolean; + }): string; + /** + * Groups an address + * @returns {String} + */ + group(): string; + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(this: Address6, substringSearch?: boolean): string; + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(this: Address6, substringSearch?: boolean): RegExp; +} +export {}; +//# sourceMappingURL=ipv6.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv6.d.ts.map b/node/node_modules/ip-address/dist/ipv6.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..bc64ab70b9475366ddb6246bca3a1c66aa3eceaf --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv6.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv6.d.ts","sourceRoot":"","sources":["../src/ipv6.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv6.js b/node/node_modules/ip-address/dist/ipv6.js new file mode 100644 index 0000000000000000000000000000000000000000..c88ab84b9ad77a9ccaf9417fb27daa137ebad5c3 --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv6.js @@ -0,0 +1,998 @@ +"use strict"; +/* eslint-disable prefer-destructuring */ +/* eslint-disable no-param-reassign */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Address6 = void 0; +const common = __importStar(require("./common")); +const constants4 = __importStar(require("./v4/constants")); +const constants6 = __importStar(require("./v6/constants")); +const helpers = __importStar(require("./v6/helpers")); +const ipv4_1 = require("./ipv4"); +const regular_expressions_1 = require("./v6/regular-expressions"); +const address_error_1 = require("./address-error"); +const jsbn_1 = require("jsbn"); +const sprintf_js_1 = require("sprintf-js"); +function assert(condition) { + if (!condition) { + throw new Error('Assertion failed.'); + } +} +function addCommas(number) { + const r = /(\d+)(\d{3})/; + while (r.test(number)) { + number = number.replace(r, '$1,$2'); + } + return number; +} +function spanLeadingZeroes4(n) { + n = n.replace(/^(0{1,})([1-9]+)$/, '$1$2'); + n = n.replace(/^(0{1,})(0)$/, '$1$2'); + return n; +} +/* + * A helper function to compact an array + */ +function compact(address, slice) { + const s1 = []; + const s2 = []; + let i; + for (i = 0; i < address.length; i++) { + if (i < slice[0]) { + s1.push(address[i]); + } + else if (i > slice[1]) { + s2.push(address[i]); + } + } + return s1.concat(['compact']).concat(s2); +} +function paddedHex(octet) { + return (0, sprintf_js_1.sprintf)('%04x', parseInt(octet, 16)); +} +function unsignByte(b) { + // eslint-disable-next-line no-bitwise + return b & 0xff; +} +/** + * Represents an IPv6 address + * @class Address6 + * @param {string} address - An IPv6 address string + * @param {number} [groups=8] - How many octets to parse + * @example + * var address = new Address6('2001::/32'); + */ +class Address6 { + constructor(address, optionalGroups) { + this.addressMinusSuffix = ''; + this.parsedSubnet = ''; + this.subnet = '/128'; + this.subnetMask = 128; + this.v4 = false; + this.zone = ''; + // #region Attributes + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address6 + * @instance + * @returns {boolean} + */ + this.isInSubnet = common.isInSubnet; + /** + * Returns true if the address is correct, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + this.isCorrect = common.isCorrect(constants6.BITS); + if (optionalGroups === undefined) { + this.groups = constants6.GROUPS; + } + else { + this.groups = optionalGroups; + } + this.address = address; + const subnet = constants6.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (Number.isNaN(this.subnetMask) || + this.subnetMask < 0 || + this.subnetMask > constants6.BITS) { + throw new address_error_1.AddressError('Invalid subnet mask.'); + } + address = address.replace(constants6.RE_SUBNET_STRING, ''); + } + else if (/\//.test(address)) { + throw new address_error_1.AddressError('Invalid subnet mask.'); + } + const zone = constants6.RE_ZONE_STRING.exec(address); + if (zone) { + this.zone = zone[0]; + address = address.replace(constants6.RE_ZONE_STRING, ''); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(this.addressMinusSuffix); + } + static isValid(address) { + try { + // eslint-disable-next-line no-new + new Address6(address); + return true; + } + catch (e) { + return false; + } + } + /** + * Convert a BigInteger to a v6 address object + * @memberof Address6 + * @static + * @param {BigInteger} bigInteger - a BigInteger to convert + * @returns {Address6} + * @example + * var bigInteger = new BigInteger('1000000000000'); + * var address = Address6.fromBigInteger(bigInteger); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInteger(bigInteger) { + const hex = bigInteger.toString(16).padStart(32, '0'); + const groups = []; + let i; + for (i = 0; i < constants6.GROUPS; i++) { + groups.push(hex.slice(i * 4, (i + 1) * 4)); + } + return new Address6(groups.join(':')); + } + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url) { + let host; + let port = null; + let result; + // If we have brackets parse them and find a port + if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) { + result = constants6.RE_URL_WITH_PORT.exec(url); + if (result === null) { + return { + error: 'failed to parse address with port', + address: null, + port: null, + }; + } + host = result[1]; + port = result[2]; + // If there's a URL extract the address + } + else if (url.indexOf('/') !== -1) { + // Remove the protocol prefix + url = url.replace(/^[a-z0-9]+:\/\//, ''); + // Parse the address + result = constants6.RE_URL.exec(url); + if (result === null) { + return { + error: 'failed to parse address from URL', + address: null, + port: null, + }; + } + host = result[1]; + // Otherwise just assign the URL to the host and let the library parse it + } + else { + host = url; + } + // If there's a port convert it to an integer + if (port) { + port = parseInt(port, 10); + // squelch out of range ports + if (port < 0 || port > 65536) { + port = null; + } + } + else { + // Standardize `undefined` to `null` + port = null; + } + return { + address: new Address6(host), + port, + }; + } + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address) { + const address4 = new ipv4_1.Address4(address); + const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask); + return new Address6(`::ffff:${address4.correctForm()}/${mask6}`); + } + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress) { + // remove ending ".ip6.arpa." or just "." + let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, ''); + const semicolonAmount = 7; + // correct ip6.arpa form with ending removed will be 63 characters + if (address.length !== 63) { + throw new address_error_1.AddressError("Invalid 'ip6.arpa' form."); + } + const parts = address.split('.').reverse(); + for (let i = semicolonAmount; i > 0; i--) { + const insertIndex = i * 4; + parts.splice(insertIndex, 0, ':'); + } + address = parts.join(''); + return new Address6(address); + } + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription() { + return (0, sprintf_js_1.sprintf)('%s.ipv6-literal.net', this.correctForm().replace(/:/g, '-')); + } + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask = this.subnetMask) { + return this.getBitsBase2(0, mask); + } + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [size=128] - the subnet size + * @returns {String} + */ + // TODO: probably useful to have a numeric version of this too + possibleSubnets(subnetSize = 128) { + const availableBits = constants6.BITS - this.subnetMask; + const subnetBits = Math.abs(subnetSize - constants6.BITS); + const subnetPowers = availableBits - subnetBits; + if (subnetPowers < 0) { + return '0'; + } + return addCommas(new jsbn_1.BigInteger('2', 10).pow(subnetPowers).toString(10)); + } + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + _startAddress() { + return new jsbn_1.BigInteger(this.mask() + '0'.repeat(constants6.BITS - this.subnetMask), 2); + } + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress() { + return Address6.fromBigInteger(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive() { + const adjust = new jsbn_1.BigInteger('1'); + return Address6.fromBigInteger(this._startAddress().add(adjust)); + } + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + _endAddress() { + return new jsbn_1.BigInteger(this.mask() + '1'.repeat(constants6.BITS - this.subnetMask), 2); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress() { + return Address6.fromBigInteger(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive() { + const adjust = new jsbn_1.BigInteger('1'); + return Address6.fromBigInteger(this._endAddress().subtract(adjust)); + } + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope() { + let scope = constants6.SCOPES[this.getBits(12, 16).intValue()]; + if (this.getType() === 'Global unicast' && scope !== 'Link local') { + scope = 'Global'; + } + return scope || 'Unknown'; + } + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType() { + for (const subnet of Object.keys(constants6.TYPES)) { + if (this.isInSubnet(new Address6(subnet))) { + return constants6.TYPES[subnet]; + } + } + return 'Global unicast'; + } + /** + * Return the bits in the given range as a BigInteger + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + getBits(start, end) { + return new jsbn_1.BigInteger(this.getBitsBase2(start, end), 2); + } + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start, end) { + const length = end - start; + if (length % 4 !== 0) { + throw new Error('Length of bits to retrieve must be divisible by four'); + } + return this.getBits(start, end) + .toString(16) + .padStart(length / 4, '0'); + } + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet() { + return this.getBitsBase2(this.subnetMask, constants6.BITS); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const characters = Math.floor(this.subnetMask / 4); + const reversed = this.canonicalForm() + .replace(/:/g, '') + .split('') + .slice(0, characters) + .reverse() + .join('.'); + if (characters > 0) { + if (options.omitSuffix) { + return reversed; + } + return (0, sprintf_js_1.sprintf)('%s.ip6.arpa.', reversed); + } + if (options.omitSuffix) { + return ''; + } + return 'ip6.arpa.'; + } + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm() { + let i; + let groups = []; + let zeroCounter = 0; + const zeroes = []; + for (i = 0; i < this.parsedAddress.length; i++) { + const value = parseInt(this.parsedAddress[i], 16); + if (value === 0) { + zeroCounter++; + } + if (value !== 0 && zeroCounter > 0) { + if (zeroCounter > 1) { + zeroes.push([i - zeroCounter, i - 1]); + } + zeroCounter = 0; + } + } + // Do we end with a string of zeroes? + if (zeroCounter > 1) { + zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]); + } + const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1); + if (zeroes.length > 0) { + const index = zeroLengths.indexOf(Math.max(...zeroLengths)); + groups = compact(this.parsedAddress, zeroes[index]); + } + else { + groups = this.parsedAddress; + } + for (i = 0; i < groups.length; i++) { + if (groups[i] !== 'compact') { + groups[i] = parseInt(groups[i], 16).toString(16); + } + } + let correct = groups.join(':'); + correct = correct.replace(/^compact$/, '::'); + correct = correct.replace(/^compact|compact$/, ':'); + correct = correct.replace(/compact/, ''); + return correct; + } + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad() { + return this.bigInteger().toString(2).padStart(constants6.BITS, '0'); + } + // TODO: Improve the semantics of this helper function + parse4in6(address) { + const groups = address.split(':'); + const lastGroup = groups.slice(-1)[0]; + const address4 = lastGroup.match(constants4.RE_ADDRESS); + if (address4) { + this.parsedAddress4 = address4[0]; + this.address4 = new ipv4_1.Address4(this.parsedAddress4); + for (let i = 0; i < this.address4.groups; i++) { + if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { + throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join('.'))); + } + } + this.v4 = true; + groups[groups.length - 1] = this.address4.toGroup6(); + address = groups.join(':'); + } + return address; + } + // TODO: Make private? + parse(address) { + address = this.parse4in6(address); + const badCharacters = address.match(constants6.RE_BAD_CHARACTERS); + if (badCharacters) { + throw new address_error_1.AddressError((0, sprintf_js_1.sprintf)('Bad character%s detected in address: %s', badCharacters.length > 1 ? 's' : '', badCharacters.join('')), address.replace(constants6.RE_BAD_CHARACTERS, '$1')); + } + const badAddress = address.match(constants6.RE_BAD_ADDRESS); + if (badAddress) { + throw new address_error_1.AddressError((0, sprintf_js_1.sprintf)('Address failed regex: %s', badAddress.join('')), address.replace(constants6.RE_BAD_ADDRESS, '$1')); + } + let groups = []; + const halves = address.split('::'); + if (halves.length === 2) { + let first = halves[0].split(':'); + let last = halves[1].split(':'); + if (first.length === 1 && first[0] === '') { + first = []; + } + if (last.length === 1 && last[0] === '') { + last = []; + } + const remaining = this.groups - (first.length + last.length); + if (!remaining) { + throw new address_error_1.AddressError('Error parsing groups'); + } + this.elidedGroups = remaining; + this.elisionBegin = first.length; + this.elisionEnd = first.length + this.elidedGroups; + groups = groups.concat(first); + for (let i = 0; i < remaining; i++) { + groups.push('0'); + } + groups = groups.concat(last); + } + else if (halves.length === 1) { + groups = address.split(':'); + this.elidedGroups = 0; + } + else { + throw new address_error_1.AddressError('Too many :: groups found'); + } + groups = groups.map((group) => (0, sprintf_js_1.sprintf)('%x', parseInt(group, 16))); + if (groups.length !== this.groups) { + throw new address_error_1.AddressError('Incorrect number of groups found'); + } + return groups; + } + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm() { + return this.parsedAddress.map(paddedHex).join(':'); + } + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal() { + return this.parsedAddress.map((n) => (0, sprintf_js_1.sprintf)('%05d', parseInt(n, 16))).join(':'); + } + /** + * Return the address as a BigInteger + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + bigInteger() { + return new jsbn_1.BigInteger(this.parsedAddress.map(paddedHex).join(''), 16); + } + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4() { + const binary = this.binaryZeroPad().split(''); + return ipv4_1.Address4.fromHex(new jsbn_1.BigInteger(binary.slice(96, 128).join(''), 2).toString(16)); + } + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6() { + const address4 = this.to4(); + const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6); + const correct = address6.correctForm(); + let infix = ''; + if (!/:$/.test(correct)) { + infix = ':'; + } + return correct + infix + address4.address; + } + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo() { + /* + - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32). + - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that + is used. + - Bits 64 to 79 can be used to define some flags. Currently only the + higher order bit is used; it is set to 1 if the Teredo client is + located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista + and Windows Server 2008 implementations, more bits are used. In those + implementations, the format for these 16 bits is "CRAAAAUG AAAAAAAA", + where "C" remains the "Cone" flag. The "R" bit is reserved for future + use. The "U" bit is for the Universal/Local flag (set to 0). The "G" bit + is Individual/Group flag (set to 0). The A bits are set to a 12-bit + randomly generated number chosen by the Teredo client to introduce + additional protection for the Teredo node against IPv6-based scanning + attacks. + - Bits 80 to 95 contains the obfuscated UDP port number. This is the + port number that is mapped by the NAT to the Teredo client with all + bits inverted. + - Bits 96 to 127 contains the obfuscated IPv4 address. This is the + public IPv4 address of the NAT with all bits inverted. + */ + const prefix = this.getBitsBase16(0, 32); + const udpPort = this.getBits(80, 96).xor(new jsbn_1.BigInteger('ffff', 16)).toString(); + const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64)); + const client4 = ipv4_1.Address4.fromHex(this.getBits(96, 128).xor(new jsbn_1.BigInteger('ffffffff', 16)).toString(16)); + const flags = this.getBits(64, 80); + const flagsBase2 = this.getBitsBase2(64, 80); + const coneNat = flags.testBit(15); + const reserved = flags.testBit(14); + const groupIndividual = flags.testBit(8); + const universalLocal = flags.testBit(9); + const nonce = new jsbn_1.BigInteger(flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16), 2).toString(10); + return { + prefix: (0, sprintf_js_1.sprintf)('%s:%s', prefix.slice(0, 4), prefix.slice(4, 8)), + server4: server4.address, + client4: client4.address, + flags: flagsBase2, + coneNat, + microsoft: { + reserved, + universalLocal, + groupIndividual, + nonce, + }, + udpPort, + }; + } + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4() { + /* + - Bits 0 to 15 are set to the 6to4 prefix (2002::/16). + - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used. + */ + const prefix = this.getBitsBase16(0, 16); + const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48)); + return { + prefix: (0, sprintf_js_1.sprintf)('%s', prefix.slice(0, 4)), + gateway: gateway.address, + }; + } + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4() { + if (!this.is4()) { + return null; + } + const addr6to4 = [ + '2002', + this.getBitsBase16(96, 112), + this.getBitsBase16(112, 128), + '', + '/16', + ].join(':'); + return new Address6(addr6to4); + } + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray() { + const byteArray = this.bigInteger().toByteArray(); + // work around issue where `toByteArray` returns a leading 0 element + if (byteArray.length === 17 && byteArray[0] === 0) { + return byteArray.slice(1); + } + return byteArray; + } + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray() { + return this.toByteArray().map(unsignByte); + } + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes) { + return this.fromUnsignedByteArray(bytes.map(unsignByte)); + } + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes) { + const BYTE_MAX = new jsbn_1.BigInteger('256', 10); + let result = new jsbn_1.BigInteger('0', 10); + let multiplier = new jsbn_1.BigInteger('1', 10); + for (let i = bytes.length - 1; i >= 0; i--) { + result = result.add(multiplier.multiply(new jsbn_1.BigInteger(bytes[i].toString(10), 10))); + multiplier = multiplier.multiply(BYTE_MAX); + } + return Address6.fromBigInteger(result); + } + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical() { + return this.addressMinusSuffix === this.canonicalForm(); + } + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal() { + // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10' + if (this.getBitsBase2(0, 64) === + '1111111010000000000000000000000000000000000000000000000000000000') { + return true; + } + return false; + } + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.getType() === 'Multicast'; + } + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4() { + return this.v4; + } + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo() { + return this.isInSubnet(new Address6('2001::/32')); + } + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4() { + return this.isInSubnet(new Address6('2002::/16')); + } + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback() { + return this.getType() === 'Loopback'; + } + // #endregion + // #region HTML + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort) { + if (optionalPort === undefined) { + optionalPort = ''; + } + else { + optionalPort = (0, sprintf_js_1.sprintf)(':%s', optionalPort); + } + return (0, sprintf_js_1.sprintf)('http://[%s]%s/', this.correctForm(), optionalPort); + } + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options) { + if (!options) { + options = {}; + } + if (options.className === undefined) { + options.className = ''; + } + if (options.prefix === undefined) { + options.prefix = '/#address='; + } + if (options.v4 === undefined) { + options.v4 = false; + } + let formFunction = this.correctForm; + if (options.v4) { + formFunction = this.to4in6; + } + if (options.className) { + return (0, sprintf_js_1.sprintf)('%2$s', options.prefix, formFunction.call(this), options.className); + } + return (0, sprintf_js_1.sprintf)('%2$s', options.prefix, formFunction.call(this)); + } + /** + * Groups an address + * @returns {String} + */ + group() { + if (this.elidedGroups === 0) { + // The simple case + return helpers.simpleGroup(this.address).join(':'); + } + assert(typeof this.elidedGroups === 'number'); + assert(typeof this.elisionBegin === 'number'); + // The elided case + const output = []; + const [left, right] = this.address.split('::'); + if (left.length) { + output.push(...helpers.simpleGroup(left)); + } + else { + output.push(''); + } + const classes = ['hover-group']; + for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { + classes.push((0, sprintf_js_1.sprintf)('group-%d', i)); + } + output.push((0, sprintf_js_1.sprintf)('', classes.join(' '))); + if (right.length) { + output.push(...helpers.simpleGroup(right, this.elisionEnd)); + } + else { + output.push(''); + } + if (this.is4()) { + assert(this.address4 instanceof ipv4_1.Address4); + output.pop(); + output.push(this.address4.groupForV6()); + } + return output.join(':'); + } + // #endregion + // #region Regular expressions + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(substringSearch = false) { + let output = []; + // TODO: revisit why this is necessary + const address6 = new Address6(this.correctForm()); + if (address6.elidedGroups === 0) { + // The simple case + output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress)); + } + else if (address6.elidedGroups === constants6.GROUPS) { + // A completely elided address + output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS)); + } + else { + // A partially elided address + const halves = address6.address.split('::'); + if (halves[0].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(':'))); + } + assert(typeof address6.elidedGroups === 'number'); + output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0)); + if (halves[1].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(':'))); + } + output = [output.join(':')]; + } + if (!substringSearch) { + output = [ + '(?=^|', + regular_expressions_1.ADDRESS_BOUNDARY, + '|[^\\w\\:])(', + ...output, + ')(?=[^\\w\\:]|', + regular_expressions_1.ADDRESS_BOUNDARY, + '|$)', + ]; + } + return output.join(''); + } + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(substringSearch = false) { + return new RegExp(this.regularExpressionString(substringSearch), 'i'); + } +} +exports.Address6 = Address6; +//# sourceMappingURL=ipv6.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/ipv6.js.map b/node/node_modules/ip-address/dist/ipv6.js.map new file mode 100644 index 0000000000000000000000000000000000000000..0a967d7c523358e8cdfc272ee5343ca08c275752 --- /dev/null +++ b/node/node_modules/ip-address/dist/ipv6.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ipv6.js","sourceRoot":"","sources":["../src/ipv6.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v4/constants.d.ts b/node/node_modules/ip-address/dist/v4/constants.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e85d4a4bd9c919577328012955f210c53f2acfd --- /dev/null +++ b/node/node_modules/ip-address/dist/v4/constants.d.ts @@ -0,0 +1,5 @@ +export declare const BITS = 32; +export declare const GROUPS = 4; +export declare const RE_ADDRESS: RegExp; +export declare const RE_SUBNET_STRING: RegExp; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v4/constants.d.ts.map b/node/node_modules/ip-address/dist/v4/constants.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..56e7237f48d58af10bb3eee295a5df2357beecc6 --- /dev/null +++ b/node/node_modules/ip-address/dist/v4/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/v4/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,KAAK,CAAC;AACvB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB,eAAO,MAAM,UAAU,QAAsK,CAAC;AAE9L,eAAO,MAAM,gBAAgB,QAAe,CAAC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v4/constants.js b/node/node_modules/ip-address/dist/v4/constants.js new file mode 100644 index 0000000000000000000000000000000000000000..6fa2518f964912465170c00b01c004133621deab --- /dev/null +++ b/node/node_modules/ip-address/dist/v4/constants.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RE_SUBNET_STRING = exports.RE_ADDRESS = exports.GROUPS = exports.BITS = void 0; +exports.BITS = 32; +exports.GROUPS = 4; +exports.RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g; +exports.RE_SUBNET_STRING = /\/\d{1,2}$/; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v4/constants.js.map b/node/node_modules/ip-address/dist/v4/constants.js.map new file mode 100644 index 0000000000000000000000000000000000000000..46f409eb7eeec30437d8d9d98ab43a9e437dbded --- /dev/null +++ b/node/node_modules/ip-address/dist/v4/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/v4/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,EAAE,CAAC;AACV,QAAA,MAAM,GAAG,CAAC,CAAC;AAEX,QAAA,UAAU,GAAG,mKAAmK,CAAC;AAEjL,QAAA,gBAAgB,GAAG,YAAY,CAAC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/constants.d.ts b/node/node_modules/ip-address/dist/v6/constants.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1302375313fb67f38e577ead8c7e2976541d5802 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/constants.d.ts @@ -0,0 +1,45 @@ +export declare const BITS = 128; +export declare const GROUPS = 8; +/** + * Represents IPv6 address scopes + * @memberof Address6 + * @static + */ +export declare const SCOPES: { + [key: number]: string | undefined; +}; +/** + * Represents IPv6 address types + * @memberof Address6 + * @static + */ +export declare const TYPES: { + [key: string]: string | undefined; +}; +/** + * A regular expression that matches bad characters in an IPv6 address + * @memberof Address6 + * @static + */ +export declare const RE_BAD_CHARACTERS: RegExp; +/** + * A regular expression that matches an incorrect IPv6 address + * @memberof Address6 + * @static + */ +export declare const RE_BAD_ADDRESS: RegExp; +/** + * A regular expression that matches an IPv6 subnet + * @memberof Address6 + * @static + */ +export declare const RE_SUBNET_STRING: RegExp; +/** + * A regular expression that matches an IPv6 zone + * @memberof Address6 + * @static + */ +export declare const RE_ZONE_STRING: RegExp; +export declare const RE_URL: RegExp; +export declare const RE_URL_WITH_PORT: RegExp; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/constants.d.ts.map b/node/node_modules/ip-address/dist/v6/constants.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a764b18d0de74936cc051faa75db4dba96e11a4b --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/v6/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,MAAM,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAS9C,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAuB7C,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAqB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAA6C,CAAC;AAEzE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAqB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC,eAAO,MAAM,MAAM,QAA4C,CAAC;AAChE,eAAO,MAAM,gBAAgB,QAA8C,CAAC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/constants.js b/node/node_modules/ip-address/dist/v6/constants.js new file mode 100644 index 0000000000000000000000000000000000000000..e316bb0d0c2cd58d9c4f89750976e09e496d01f3 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/constants.js @@ -0,0 +1,76 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RE_URL_WITH_PORT = exports.RE_URL = exports.RE_ZONE_STRING = exports.RE_SUBNET_STRING = exports.RE_BAD_ADDRESS = exports.RE_BAD_CHARACTERS = exports.TYPES = exports.SCOPES = exports.GROUPS = exports.BITS = void 0; +exports.BITS = 128; +exports.GROUPS = 8; +/** + * Represents IPv6 address scopes + * @memberof Address6 + * @static + */ +exports.SCOPES = { + 0: 'Reserved', + 1: 'Interface local', + 2: 'Link local', + 4: 'Admin local', + 5: 'Site local', + 8: 'Organization local', + 14: 'Global', + 15: 'Reserved', +}; +/** + * Represents IPv6 address types + * @memberof Address6 + * @static + */ +exports.TYPES = { + 'ff01::1/128': 'Multicast (All nodes on this interface)', + 'ff01::2/128': 'Multicast (All routers on this interface)', + 'ff02::1/128': 'Multicast (All nodes on this link)', + 'ff02::2/128': 'Multicast (All routers on this link)', + 'ff05::2/128': 'Multicast (All routers in this site)', + 'ff02::5/128': 'Multicast (OSPFv3 AllSPF routers)', + 'ff02::6/128': 'Multicast (OSPFv3 AllDR routers)', + 'ff02::9/128': 'Multicast (RIP routers)', + 'ff02::a/128': 'Multicast (EIGRP routers)', + 'ff02::d/128': 'Multicast (PIM routers)', + 'ff02::16/128': 'Multicast (MLDv2 reports)', + 'ff01::fb/128': 'Multicast (mDNSv6)', + 'ff02::fb/128': 'Multicast (mDNSv6)', + 'ff05::fb/128': 'Multicast (mDNSv6)', + 'ff02::1:2/128': 'Multicast (All DHCP servers and relay agents on this link)', + 'ff05::1:2/128': 'Multicast (All DHCP servers and relay agents in this site)', + 'ff02::1:3/128': 'Multicast (All DHCP servers on this link)', + 'ff05::1:3/128': 'Multicast (All DHCP servers in this site)', + '::/128': 'Unspecified', + '::1/128': 'Loopback', + 'ff00::/8': 'Multicast', + 'fe80::/10': 'Link-local unicast', +}; +/** + * A regular expression that matches bad characters in an IPv6 address + * @memberof Address6 + * @static + */ +exports.RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi; +/** + * A regular expression that matches an incorrect IPv6 address + * @memberof Address6 + * @static + */ +exports.RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi; +/** + * A regular expression that matches an IPv6 subnet + * @memberof Address6 + * @static + */ +exports.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/; +/** + * A regular expression that matches an IPv6 zone + * @memberof Address6 + * @static + */ +exports.RE_ZONE_STRING = /%.*$/; +exports.RE_URL = new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/); +exports.RE_URL_WITH_PORT = new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/); +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/constants.js.map b/node/node_modules/ip-address/dist/v6/constants.js.map new file mode 100644 index 0000000000000000000000000000000000000000..61e273389044642d42be7611e61a1819c17e795a --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/v6/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,MAAM,GAAG,CAAC,CAAC;AAExB;;;;GAIG;AACU,QAAA,MAAM,GAA0C;IAC3D,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,YAAY;IACf,CAAC,EAAE,oBAAoB;IACvB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,UAAU;CACN,CAAC;AAEX;;;;GAIG;AACU,QAAA,KAAK,GAA0C;IAC1D,aAAa,EAAE,yCAAyC;IACxD,aAAa,EAAE,2CAA2C;IAC1D,aAAa,EAAE,oCAAoC;IACnD,aAAa,EAAE,sCAAsC;IACrD,aAAa,EAAE,sCAAsC;IACrD,aAAa,EAAE,mCAAmC;IAClD,aAAa,EAAE,kCAAkC;IACjD,aAAa,EAAE,yBAAyB;IACxC,aAAa,EAAE,2BAA2B;IAC1C,aAAa,EAAE,yBAAyB;IACxC,cAAc,EAAE,2BAA2B;IAC3C,cAAc,EAAE,oBAAoB;IACpC,cAAc,EAAE,oBAAoB;IACpC,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,4DAA4D;IAC7E,eAAe,EAAE,4DAA4D;IAC7E,eAAe,EAAE,2CAA2C;IAC5D,eAAe,EAAE,2CAA2C;IAC5D,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,oBAAoB;CACzB,CAAC;AAEX;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD;;;;GAIG;AACU,QAAA,cAAc,GAAG,0CAA0C,CAAC;AAEzE;;;;GAIG;AACU,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD;;;;GAIG;AACU,QAAA,cAAc,GAAG,MAAM,CAAC;AAExB,QAAA,MAAM,GAAG,IAAI,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACnD,QAAA,gBAAgB,GAAG,IAAI,MAAM,CAAC,+BAA+B,CAAC,CAAC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/helpers.d.ts b/node/node_modules/ip-address/dist/v6/helpers.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e72f0311d6371f6288e970d09e22e63224573903 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/helpers.d.ts @@ -0,0 +1,18 @@ +/** + * @returns {String} the string with all zeroes contained in a + */ +export declare function spanAllZeroes(s: string): string; +/** + * @returns {String} the string with each character contained in a + */ +export declare function spanAll(s: string, offset?: number): string; +/** + * @returns {String} the string with leading zeroes contained in a + */ +export declare function spanLeadingZeroes(address: string): string; +/** + * Groups an address + * @returns {String} a grouped address + */ +export declare function simpleGroup(addressString: string, offset?: number): string[]; +//# sourceMappingURL=helpers.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/helpers.d.ts.map b/node/node_modules/ip-address/dist/v6/helpers.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a6ff22bdca7d68facfb95e94f7ac22a35cd632b0 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/helpers.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/v6/helpers.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAc7D;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,EAAE,CAc/E"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/helpers.js b/node/node_modules/ip-address/dist/v6/helpers.js new file mode 100644 index 0000000000000000000000000000000000000000..918aaa58c85d790e94bb5f5f3615d2c5588e7307 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/helpers.js @@ -0,0 +1,48 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.simpleGroup = exports.spanLeadingZeroes = exports.spanAll = exports.spanAllZeroes = void 0; +const sprintf_js_1 = require("sprintf-js"); +/** + * @returns {String} the string with all zeroes contained in a + */ +function spanAllZeroes(s) { + return s.replace(/(0+)/g, '$1'); +} +exports.spanAllZeroes = spanAllZeroes; +/** + * @returns {String} the string with each character contained in a + */ +function spanAll(s, offset = 0) { + const letters = s.split(''); + return letters + .map((n, i) => (0, sprintf_js_1.sprintf)('%s', n, i + offset, spanAllZeroes(n)) // XXX Use #base-2 .value-0 instead? + ) + .join(''); +} +exports.spanAll = spanAll; +function spanLeadingZeroesSimple(group) { + return group.replace(/^(0+)/, '$1'); +} +/** + * @returns {String} the string with leading zeroes contained in a + */ +function spanLeadingZeroes(address) { + const groups = address.split(':'); + return groups.map((g) => spanLeadingZeroesSimple(g)).join(':'); +} +exports.spanLeadingZeroes = spanLeadingZeroes; +/** + * Groups an address + * @returns {String} a grouped address + */ +function simpleGroup(addressString, offset = 0) { + const groups = addressString.split(':'); + return groups.map((g, i) => { + if (/group-v4/.test(g)) { + return g; + } + return (0, sprintf_js_1.sprintf)('%s', i + offset, spanLeadingZeroesSimple(g)); + }); +} +exports.simpleGroup = simpleGroup; +//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/helpers.js.map b/node/node_modules/ip-address/dist/v6/helpers.js.map new file mode 100644 index 0000000000000000000000000000000000000000..251feddbab2d17fb16c5e92c133bf8bef678b0c3 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/v6/helpers.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AAErC;;GAEG;AACH,SAAgB,aAAa,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;AAC5D,CAAC;AAFD,sCAEC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,CAAS,EAAE,SAAiB,CAAC;IACnD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE5B,OAAO,OAAO;SACX,GAAG,CACF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAA,oBAAO,EACL,oDAAoD,EACpD,CAAC,EACD,CAAC,GAAG,MAAM,EACV,aAAa,CAAC,CAAC,CAAC,CACjB,CAAC,oCAAoC;KACzC;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAdD,0BAcC;AAED,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAJD,8CAIC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,aAAqB,EAAE,SAAiB,CAAC;IACnE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,CAAC,CAAC;SACV;QAED,OAAO,IAAA,oBAAO,EACZ,8CAA8C,EAC9C,CAAC,GAAG,MAAM,EACV,uBAAuB,CAAC,CAAC,CAAC,CAC3B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAdD,kCAcC"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/regular-expressions.d.ts b/node/node_modules/ip-address/dist/v6/regular-expressions.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..181b91e81d36f2cf32e1f939f83ef4efcf5965a6 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/regular-expressions.d.ts @@ -0,0 +1,6 @@ +export declare function groupPossibilities(possibilities: string[]): string; +export declare function padGroup(group: string): string; +export declare const ADDRESS_BOUNDARY = "[^A-Fa-f0-9:]"; +export declare function simpleRegularExpression(groups: string[]): string; +export declare function possibleElisions(elidedGroups: number, moreLeft?: boolean, moreRight?: boolean): string; +//# sourceMappingURL=regular-expressions.d.ts.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/regular-expressions.d.ts.map b/node/node_modules/ip-address/dist/v6/regular-expressions.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..242e6c7189cc0a74d8f8752c04bd6e41738fefb2 --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/regular-expressions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"regular-expressions.d.ts","sourceRoot":"","sources":["../../src/v6/regular-expressions.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAElE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UA+BvD;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GAClB,MAAM,CA4CR"} \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/regular-expressions.js b/node/node_modules/ip-address/dist/v6/regular-expressions.js new file mode 100644 index 0000000000000000000000000000000000000000..616550a864509f44d10229c9c4eafc4544925e8a --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/regular-expressions.js @@ -0,0 +1,96 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.possibleElisions = exports.simpleRegularExpression = exports.ADDRESS_BOUNDARY = exports.padGroup = exports.groupPossibilities = void 0; +const v6 = __importStar(require("./constants")); +const sprintf_js_1 = require("sprintf-js"); +function groupPossibilities(possibilities) { + return (0, sprintf_js_1.sprintf)('(%s)', possibilities.join('|')); +} +exports.groupPossibilities = groupPossibilities; +function padGroup(group) { + if (group.length < 4) { + return (0, sprintf_js_1.sprintf)('0{0,%d}%s', 4 - group.length, group); + } + return group; +} +exports.padGroup = padGroup; +exports.ADDRESS_BOUNDARY = '[^A-Fa-f0-9:]'; +function simpleRegularExpression(groups) { + const zeroIndexes = []; + groups.forEach((group, i) => { + const groupInteger = parseInt(group, 16); + if (groupInteger === 0) { + zeroIndexes.push(i); + } + }); + // You can technically elide a single 0, this creates the regular expressions + // to match that eventuality + const possibilities = zeroIndexes.map((zeroIndex) => groups + .map((group, i) => { + if (i === zeroIndex) { + const elision = i === 0 || i === v6.GROUPS - 1 ? ':' : ''; + return groupPossibilities([padGroup(group), elision]); + } + return padGroup(group); + }) + .join(':')); + // The simplest case + possibilities.push(groups.map(padGroup).join(':')); + return groupPossibilities(possibilities); +} +exports.simpleRegularExpression = simpleRegularExpression; +function possibleElisions(elidedGroups, moreLeft, moreRight) { + const left = moreLeft ? '' : ':'; + const right = moreRight ? '' : ':'; + const possibilities = []; + // 1. elision of everything (::) + if (!moreLeft && !moreRight) { + possibilities.push('::'); + } + // 2. complete elision of the middle + if (moreLeft && moreRight) { + possibilities.push(''); + } + if ((moreRight && !moreLeft) || (!moreRight && moreLeft)) { + // 3. complete elision of one side + possibilities.push(':'); + } + // 4. elision from the left side + possibilities.push((0, sprintf_js_1.sprintf)('%s(:0{1,4}){1,%d}', left, elidedGroups - 1)); + // 5. elision from the right side + possibilities.push((0, sprintf_js_1.sprintf)('(0{1,4}:){1,%d}%s', elidedGroups - 1, right)); + // 6. no elision + possibilities.push((0, sprintf_js_1.sprintf)('(0{1,4}:){%d}0{1,4}', elidedGroups - 1)); + // 7. elision (including sloppy elision) from the middle + for (let groups = 1; groups < elidedGroups - 1; groups++) { + for (let position = 1; position < elidedGroups - groups; position++) { + possibilities.push((0, sprintf_js_1.sprintf)('(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}', position, elidedGroups - position - groups - 1)); + } + } + return groupPossibilities(possibilities); +} +exports.possibleElisions = possibleElisions; +//# sourceMappingURL=regular-expressions.js.map \ No newline at end of file diff --git a/node/node_modules/ip-address/dist/v6/regular-expressions.js.map b/node/node_modules/ip-address/dist/v6/regular-expressions.js.map new file mode 100644 index 0000000000000000000000000000000000000000..fe6c3c2fa05ee4041117e538b2cec8cbb28aa27a --- /dev/null +++ b/node/node_modules/ip-address/dist/v6/regular-expressions.js.map @@ -0,0 +1 @@ +{"version":3,"file":"regular-expressions.js","sourceRoot":"","sources":["../../src/v6/regular-expressions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/CONTRIBUTORS.md b/node/node_modules/ip-address/node_modules/sprintf-js/CONTRIBUTORS.md new file mode 100644 index 0000000000000000000000000000000000000000..a16608e936a72ca91fa9770f3dbd8ba5ad977f8d --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/CONTRIBUTORS.md @@ -0,0 +1,26 @@ +Alexander Rose [@arose](https://github.com/arose) +Alexandru Mărășteanu [@alexei](https://github.com/alexei) +Andras [@andrasq](https://github.com/andrasq) +Benoit Giannangeli [@giann](https://github.com/giann) +Branden Visser [@mrvisser](https://github.com/mrvisser) +David Baird +daurnimator [@daurnimator](https://github.com/daurnimator) +Doug Beck [@beck](https://github.com/beck) +Dzmitry Litskalau [@litmit](https://github.com/litmit) +Fred Ludlow [@fredludlow](https://github.com/fredludlow) +Hans Pufal +Henry [@alograg](https://github.com/alograg) +Johnny Shields [@johnnyshields](https://github.com/johnnyshields) +Kamal Abdali +Matt Simerson [@msimerson](https://github.com/msimerson) +Maxime Robert [@marob](https://github.com/marob) +MeriemKhelifi [@MeriemKhelifi](https://github.com/MeriemKhelifi) +Michael Schramm [@wodka](https://github.com/wodka) +Nazar Mokrynskyi [@nazar-pc](https://github.com/nazar-pc) +Oliver Salzburg [@oliversalzburg](https://github.com/oliversalzburg) +Pablo [@ppollono](https://github.com/ppollono) +Rabehaja Stevens [@RABEHAJA-STEVENS](https://github.com/RABEHAJA-STEVENS) +Raphael Pigulla [@pigulla](https://github.com/pigulla) +rebeccapeltz [@rebeccapeltz](https://github.com/rebeccapeltz) +Stefan Tingström [@stingstrom](https://github.com/stingstrom) +Tim Gates [@timgates42](https://github.com/timgates42) diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/LICENSE b/node/node_modules/ip-address/node_modules/sprintf-js/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..83f832a2ee2829132fac5b7f9dc0d909c5b96fc5 --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2007-present, Alexandru Mărășteanu +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of this software nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/README.md b/node/node_modules/ip-address/node_modules/sprintf-js/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8ef74f5300319941f5778bbbb9a088eddfbeca0f --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/README.md @@ -0,0 +1,143 @@ +# sprintf-js + +[![Build Status][travisci-image]][travisci-url] [![NPM Version][npm-image]][npm-url] [![Dependency Status][dependencies-image]][dependencies-url] [![devDependency Status][dev-dependencies-image]][dev-dependencies-url] + +[travisci-image]: https://travis-ci.org/alexei/sprintf.js.svg?branch=master +[travisci-url]: https://travis-ci.org/alexei/sprintf.js + +[npm-image]: https://badge.fury.io/js/sprintf-js.svg +[npm-url]: https://badge.fury.io/js/sprintf-js + +[dependencies-image]: https://david-dm.org/alexei/sprintf.js.svg +[dependencies-url]: https://david-dm.org/alexei/sprintf.js + +[dev-dependencies-image]: https://david-dm.org/alexei/sprintf.js/dev-status.svg +[dev-dependencies-url]: https://david-dm.org/alexei/sprintf.js#info=devDependencies + +**sprintf-js** is a complete open source JavaScript `sprintf` implementation for the **browser** and **Node.js**. + +**Note: as of v1.1.1 you might need some polyfills for older environments. See [Support](#support) section below.** + +## Usage + + var sprintf = require('sprintf-js').sprintf, + vsprintf = require('sprintf-js').vsprintf + + sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants') + vsprintf('The first 4 letters of the english alphabet are: %s, %s, %s and %s', ['a', 'b', 'c', 'd']) + +## Installation + +### NPM + + npm install sprintf-js + +### Bower + + bower install sprintf + +## API + +### `sprintf` + +Returns a formatted string: + + string sprintf(string format, mixed arg1?, mixed arg2?, ...) + +### `vsprintf` + +Same as `sprintf` except it takes an array of arguments, rather than a variable number of arguments: + + string vsprintf(string format, array arguments?) + +## Format specification + +The placeholders in the format string are marked by `%` and are followed by one or more of these elements, in this order: + +* An optional number followed by a `$` sign that selects which argument index to use for the value. If not specified, arguments will be placed in the same order as the placeholders in the input string. +* An optional `+` sign that forces to precede the result with a plus or minus sign on numeric values. By default, only the `-` sign is used on negative numbers. +* An optional padding specifier that says what character to use for padding (if specified). Possible values are `0` or any other character preceded by a `'` (single quote). The default is to pad with *spaces*. +* An optional `-` sign, that causes `sprintf` to left-align the result of this placeholder. The default is to right-align the result. +* An optional number, that says how many characters the result should have. If the value to be returned is shorter than this number, the result will be padded. When used with the `j` (JSON) type specifier, the padding length specifies the tab size used for indentation. +* An optional precision modifier, consisting of a `.` (dot) followed by a number, that says how many digits should be displayed for floating point numbers. When used with the `g` type specifier, it specifies the number of significant digits. When used on a string, it causes the result to be truncated. +* A type specifier that can be any of: + * `%` — yields a literal `%` character + * `b` — yields an integer as a binary number + * `c` — yields an integer as the character with that ASCII value + * `d` or `i` — yields an integer as a signed decimal number + * `e` — yields a float using scientific notation + * `u` — yields an integer as an unsigned decimal number + * `f` — yields a float as is; see notes on precision above + * `g` — yields a float as is; see notes on precision above + * `o` — yields an integer as an octal number + * `s` — yields a string as is + * `t` — yields `true` or `false` + * `T` — yields the type of the argument1 + * `v` — yields the primitive value of the specified argument + * `x` — yields an integer as a hexadecimal number (lower-case) + * `X` — yields an integer as a hexadecimal number (upper-case) + * `j` — yields a JavaScript object or array as a JSON encoded string + +## Features + +### Argument swapping + +You can also swap the arguments. That is, the order of the placeholders doesn't have to match the order of the arguments. You can do that by simply indicating in the format string which arguments the placeholders refer to: + + sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants') + +And, of course, you can repeat the placeholders without having to increase the number of arguments. + +### Named arguments + +Format strings may contain replacement fields rather than positional placeholders. Instead of referring to a certain argument, you can now refer to a certain key within an object. Replacement fields are surrounded by rounded parentheses - `(` and `)` - and begin with a keyword that refers to a key: + + var user = { + name: 'Dolly', + } + sprintf('Hello %(name)s', user) // Hello Dolly + +Keywords in replacement fields can be optionally followed by any number of keywords or indexes: + + var users = [ + {name: 'Dolly'}, + {name: 'Molly'}, + {name: 'Polly'}, + ] + sprintf('Hello %(users[0].name)s, %(users[1].name)s and %(users[2].name)s', {users: users}) // Hello Dolly, Molly and Polly + +Note: mixing positional and named placeholders is not (yet) supported + +### Computed values + +You can pass in a function as a dynamic value and it will be invoked (with no arguments) in order to compute the value on the fly. + + sprintf('Current date and time: %s', function() { return new Date().toString() }) + +### AngularJS + +You can use `sprintf` and `vsprintf` (also aliased as `fmt` and `vfmt` respectively) in your AngularJS projects. See `demo/`. + +## Support + +### Node.js + +`sprintf-js` runs in all active Node versions (4.x+). + +### Browser + +`sprintf-js` should work in all modern browsers. As of v1.1.1, you might need polyfills for the following: + + - `String.prototype.repeat()` (any IE) + - `Array.isArray()` (IE < 9) + - `Object.create()` (IE < 9) + +YMMV + +## License + +**sprintf-js** is licensed under the terms of the BSD 3-Clause License. + +## Notes + +1 `sprintf` doesn't use the `typeof` operator. As such, the value `null` is a `null`, an array is an `array` (not an `object`), a date value is a `date` etc. diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/dist/.gitattributes b/node/node_modules/ip-address/node_modules/sprintf-js/dist/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..a837fd3849f783253b30c123bd97a74ca88eeb94 --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/dist/.gitattributes @@ -0,0 +1,4 @@ +#ignore all generated files from diff +#also skip line ending check +*.js -diff -text +*.map -diff -text diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/dist/angular-sprintf.min.js b/node/node_modules/ip-address/node_modules/sprintf-js/dist/angular-sprintf.min.js new file mode 100644 index 0000000000000000000000000000000000000000..5dff8c54337dbd2362884c7d35325cca49680acf --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/dist/angular-sprintf.min.js @@ -0,0 +1,3 @@ +/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu | BSD-3-Clause */ +!function(){"use strict";angular.module("sprintf",[]).filter("sprintf",function(){return function(){return sprintf.apply(null,arguments)}}).filter("fmt",["$filter",function(t){return t("sprintf")}]).filter("vsprintf",function(){return function(t,n){return vsprintf(t,n)}}).filter("vfmt",["$filter",function(t){return t("vsprintf")}])}(); +//# sourceMappingURL=angular-sprintf.min.js.map diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/dist/angular-sprintf.min.js.map b/node/node_modules/ip-address/node_modules/sprintf-js/dist/angular-sprintf.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..d30f1a38955e04acf1784265419d282edf6f8f15 --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/dist/angular-sprintf.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["angular-sprintf.js"],"names":["angular","module","filter","sprintf","apply","arguments","$filter","format","argv","vsprintf"],"mappings":";CAEC,WACG,aAEAA,QACIC,OAAO,UAAW,IAClBC,OAAO,UAAW,WACd,OAAO,WACH,OAAOC,QAAQC,MAAM,KAAMC,cAGnCH,OAAO,MAAO,CAAC,UAAW,SAASI,GAC/B,OAAOA,EAAQ,cAEnBJ,OAAO,WAAY,WACf,OAAO,SAASK,EAAQC,GACpB,OAAOC,SAASF,EAAQC,MAGhCN,OAAO,OAAQ,CAAC,UAAW,SAASI,GAChC,OAAOA,EAAQ,eAnB1B","file":"angular-sprintf.min.js","sourcesContent":["/* global angular, sprintf, vsprintf */\n\n!function() {\n 'use strict'\n\n angular.\n module('sprintf', []).\n filter('sprintf', function() {\n return function() {\n return sprintf.apply(null, arguments)\n }\n }).\n filter('fmt', ['$filter', function($filter) {\n return $filter('sprintf')\n }]).\n filter('vsprintf', function() {\n return function(format, argv) {\n return vsprintf(format, argv)\n }\n }).\n filter('vfmt', ['$filter', function($filter) {\n return $filter('vsprintf')\n }])\n}(); // eslint-disable-line\n"]} \ No newline at end of file diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/dist/sprintf.min.js b/node/node_modules/ip-address/node_modules/sprintf-js/dist/sprintf.min.js new file mode 100644 index 0000000000000000000000000000000000000000..ed09637ea3905248804ea4e4ff6d2f86513008a9 --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/dist/sprintf.min.js @@ -0,0 +1,3 @@ +/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu | BSD-3-Clause */ +!function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n"]} \ No newline at end of file diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/package.json b/node/node_modules/ip-address/node_modules/sprintf-js/package.json new file mode 100644 index 0000000000000000000000000000000000000000..1d3dcf3deef669fc31442eae42398055e0c3e9f0 --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/package.json @@ -0,0 +1,35 @@ +{ + "name": "sprintf-js", + "version": "1.1.3", + "description": "JavaScript sprintf implementation", + "author": "Alexandru Mărășteanu ", + "main": "src/sprintf.js", + "scripts": { + "test": "mocha test/*.js", + "pretest": "npm run lint", + "lint": "eslint .", + "lint:fix": "eslint --fix ." + }, + "repository": { + "type": "git", + "url": "https://github.com/alexei/sprintf.js.git" + }, + "license": "BSD-3-Clause", + "readmeFilename": "README.md", + "devDependencies": { + "benchmark": "^2.1.4", + "eslint": "^5.10.0", + "gulp": "^3.9.1", + "gulp-benchmark": "^1.1.1", + "gulp-eslint": "^5.0.0", + "gulp-header": "^2.0.5", + "gulp-mocha": "^6.0.0", + "gulp-rename": "^1.4.0", + "gulp-sourcemaps": "^2.6.4", + "gulp-uglify": "^3.0.1", + "mocha": "^5.2.0" + }, + "overrides": { + "graceful-fs": "^4.2.11" + } +} diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/src/angular-sprintf.js b/node/node_modules/ip-address/node_modules/sprintf-js/src/angular-sprintf.js new file mode 100644 index 0000000000000000000000000000000000000000..dbfdd65ab25083aa0165492b55b03b7c8065c388 --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/src/angular-sprintf.js @@ -0,0 +1,24 @@ +/* global angular, sprintf, vsprintf */ + +!function() { + 'use strict' + + angular. + module('sprintf', []). + filter('sprintf', function() { + return function() { + return sprintf.apply(null, arguments) + } + }). + filter('fmt', ['$filter', function($filter) { + return $filter('sprintf') + }]). + filter('vsprintf', function() { + return function(format, argv) { + return vsprintf(format, argv) + } + }). + filter('vfmt', ['$filter', function($filter) { + return $filter('vsprintf') + }]) +}(); // eslint-disable-line diff --git a/node/node_modules/ip-address/node_modules/sprintf-js/src/sprintf.js b/node/node_modules/ip-address/node_modules/sprintf-js/src/sprintf.js new file mode 100644 index 0000000000000000000000000000000000000000..65d6324645ef1d0133614a71497751009dc5c912 --- /dev/null +++ b/node/node_modules/ip-address/node_modules/sprintf-js/src/sprintf.js @@ -0,0 +1,231 @@ +/* global window, exports, define */ + +!function() { + 'use strict' + + var re = { + not_string: /[^s]/, + not_bool: /[^t]/, + not_type: /[^T]/, + not_primitive: /[^v]/, + number: /[diefg]/, + numeric_arg: /[bcdiefguxX]/, + json: /[j]/, + not_json: /[^j]/, + text: /^[^\x25]+/, + modulo: /^\x25{2}/, + placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/, + key: /^([a-z_][a-z_\d]*)/i, + key_access: /^\.([a-z_][a-z_\d]*)/i, + index_access: /^\[(\d+)\]/, + sign: /^[+-]/ + } + + function sprintf(key) { + // `arguments` is not an array, but should be fine for this call + return sprintf_format(sprintf_parse(key), arguments) + } + + function vsprintf(fmt, argv) { + return sprintf.apply(null, [fmt].concat(argv || [])) + } + + function sprintf_format(parse_tree, argv) { + var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign + for (i = 0; i < tree_length; i++) { + if (typeof parse_tree[i] === 'string') { + output += parse_tree[i] + } + else if (typeof parse_tree[i] === 'object') { + ph = parse_tree[i] // convenience purposes only + if (ph.keys) { // keyword argument + arg = argv[cursor] + for (k = 0; k < ph.keys.length; k++) { + if (arg == undefined) { + throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1])) + } + arg = arg[ph.keys[k]] + } + } + else if (ph.param_no) { // positional argument (explicit) + arg = argv[ph.param_no] + } + else { // positional argument (implicit) + arg = argv[cursor++] + } + + if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) { + arg = arg() + } + + if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) { + throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg)) + } + + if (re.number.test(ph.type)) { + is_positive = arg >= 0 + } + + switch (ph.type) { + case 'b': + arg = parseInt(arg, 10).toString(2) + break + case 'c': + arg = String.fromCharCode(parseInt(arg, 10)) + break + case 'd': + case 'i': + arg = parseInt(arg, 10) + break + case 'j': + arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0) + break + case 'e': + arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential() + break + case 'f': + arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg) + break + case 'g': + arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg) + break + case 'o': + arg = (parseInt(arg, 10) >>> 0).toString(8) + break + case 's': + arg = String(arg) + arg = (ph.precision ? arg.substring(0, ph.precision) : arg) + break + case 't': + arg = String(!!arg) + arg = (ph.precision ? arg.substring(0, ph.precision) : arg) + break + case 'T': + arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase() + arg = (ph.precision ? arg.substring(0, ph.precision) : arg) + break + case 'u': + arg = parseInt(arg, 10) >>> 0 + break + case 'v': + arg = arg.valueOf() + arg = (ph.precision ? arg.substring(0, ph.precision) : arg) + break + case 'x': + arg = (parseInt(arg, 10) >>> 0).toString(16) + break + case 'X': + arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase() + break + } + if (re.json.test(ph.type)) { + output += arg + } + else { + if (re.number.test(ph.type) && (!is_positive || ph.sign)) { + sign = is_positive ? '+' : '-' + arg = arg.toString().replace(re.sign, '') + } + else { + sign = '' + } + pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' ' + pad_length = ph.width - (sign + arg).length + pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : '' + output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg) + } + } + } + return output + } + + var sprintf_cache = Object.create(null) + + function sprintf_parse(fmt) { + if (sprintf_cache[fmt]) { + return sprintf_cache[fmt] + } + + var _fmt = fmt, match, parse_tree = [], arg_names = 0 + while (_fmt) { + if ((match = re.text.exec(_fmt)) !== null) { + parse_tree.push(match[0]) + } + else if ((match = re.modulo.exec(_fmt)) !== null) { + parse_tree.push('%') + } + else if ((match = re.placeholder.exec(_fmt)) !== null) { + if (match[2]) { + arg_names |= 1 + var field_list = [], replacement_field = match[2], field_match = [] + if ((field_match = re.key.exec(replacement_field)) !== null) { + field_list.push(field_match[1]) + while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') { + if ((field_match = re.key_access.exec(replacement_field)) !== null) { + field_list.push(field_match[1]) + } + else if ((field_match = re.index_access.exec(replacement_field)) !== null) { + field_list.push(field_match[1]) + } + else { + throw new SyntaxError('[sprintf] failed to parse named argument key') + } + } + } + else { + throw new SyntaxError('[sprintf] failed to parse named argument key') + } + match[2] = field_list + } + else { + arg_names |= 2 + } + if (arg_names === 3) { + throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported') + } + + parse_tree.push( + { + placeholder: match[0], + param_no: match[1], + keys: match[2], + sign: match[3], + pad_char: match[4], + align: match[5], + width: match[6], + precision: match[7], + type: match[8] + } + ) + } + else { + throw new SyntaxError('[sprintf] unexpected placeholder') + } + _fmt = _fmt.substring(match[0].length) + } + return sprintf_cache[fmt] = parse_tree + } + + /** + * export to either browser or node.js + */ + /* eslint-disable quote-props */ + if (typeof exports !== 'undefined') { + exports['sprintf'] = sprintf + exports['vsprintf'] = vsprintf + } + if (typeof window !== 'undefined') { + window['sprintf'] = sprintf + window['vsprintf'] = vsprintf + + if (typeof define === 'function' && define['amd']) { + define(function() { + return { + 'sprintf': sprintf, + 'vsprintf': vsprintf + } + }) + } + } + /* eslint-enable quote-props */ +}(); // eslint-disable-line diff --git a/node/node_modules/ip-address/package.json b/node/node_modules/ip-address/package.json new file mode 100644 index 0000000000000000000000000000000000000000..0543fc41a13061ad93429b75125c6a307d2a7a41 --- /dev/null +++ b/node/node_modules/ip-address/package.json @@ -0,0 +1,87 @@ +{ + "name": "ip-address", + "description": "A library for parsing IPv4 and IPv6 IP addresses in node and the browser.", + "keywords": [ + "ipv6", + "ipv4", + "browser", + "validation" + ], + "version": "9.0.5", + "author": "Beau Gunderson (https://beaugunderson.com/)", + "license": "MIT", + "main": "dist/ip-address.js", + "types": "dist/ip-address.d.ts", + "scripts": { + "docs": "documentation build --github --output docs --format html ./ip-address.js", + "build": "rm -rf dist; mkdir dist; tsc", + "prepack": "npm run build", + "release": "release-it", + "test-ci": "nyc mocha", + "test": "mocha", + "watch": "mocha --watch" + }, + "nyc": { + "extension": [ + ".ts" + ], + "exclude": [ + "**/*.d.ts", + ".eslintrc.js", + "coverage/", + "dist/", + "test/", + "tmp/" + ], + "reporter": [ + "html", + "lcov", + "text" + ], + "all": true + }, + "engines": { + "node": ">= 12" + }, + "files": [ + "src", + "dist" + ], + "repository": { + "type": "git", + "url": "git://github.com/beaugunderson/ip-address.git" + }, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "devDependencies": { + "@types/chai": "^4.2.18", + "@types/jsbn": "^1.2.31", + "@types/mocha": "^10.0.1", + "@types/sprintf-js": "^1.1.2", + "@typescript-eslint/eslint-plugin": "^6.7.2", + "@typescript-eslint/parser": "^6.7.2", + "browserify": "^17.0.0", + "chai": "^4.3.4", + "codecov": "^3.8.2", + "documentation": "^14.0.2", + "eslint": "^8.50.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-filenames": "^1.3.2", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-sort-imports-es6-autofix": "^0.6.0", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "prettier": "^3.0.3", + "release-it": "^16.2.0", + "source-map-support": "^0.5.19", + "ts-node": "^10.0.0", + "typescript": "^5.2.2" + } +} diff --git a/node/node_modules/ip-address/src/address-error.ts b/node/node_modules/ip-address/src/address-error.ts new file mode 100644 index 0000000000000000000000000000000000000000..a59f503c0fa6d135a959c088aa304b29a162cd78 --- /dev/null +++ b/node/node_modules/ip-address/src/address-error.ts @@ -0,0 +1,13 @@ +export class AddressError extends Error { + parseMessage?: string; + + constructor(message: string, parseMessage?: string) { + super(message); + + this.name = 'AddressError'; + + if (parseMessage !== null) { + this.parseMessage = parseMessage; + } + } +} diff --git a/node/node_modules/ip-address/src/common.ts b/node/node_modules/ip-address/src/common.ts new file mode 100644 index 0000000000000000000000000000000000000000..e6b30189b6819c1b74bcc8a234cee5774a91e1e2 --- /dev/null +++ b/node/node_modules/ip-address/src/common.ts @@ -0,0 +1,32 @@ +import { Address4 } from './ipv4'; +import { Address6 } from './ipv6'; + +export interface ReverseFormOptions { + omitSuffix?: boolean; +} + +export function isInSubnet(this: Address4 | Address6, address: Address4 | Address6) { + if (this.subnetMask < address.subnetMask) { + return false; + } + + if (this.mask(address.subnetMask) === address.mask()) { + return true; + } + + return false; +} + +export function isCorrect(defaultBits: number) { + return function (this: Address4 | Address6) { + if (this.addressMinusSuffix !== this.correctForm()) { + return false; + } + + if (this.subnetMask === defaultBits && !this.parsedSubnet) { + return true; + } + + return this.parsedSubnet === String(this.subnetMask); + }; +} diff --git a/node/node_modules/ip-address/src/ip-address.ts b/node/node_modules/ip-address/src/ip-address.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a452f2d77da5bcc08276fc96e45faff0e2576ae --- /dev/null +++ b/node/node_modules/ip-address/src/ip-address.ts @@ -0,0 +1,11 @@ +import { Address4 } from './ipv4'; +import { Address6 } from './ipv6'; +import { AddressError } from './address-error'; + +export { Address4 }; +export { Address6 }; +export { AddressError }; + +import * as helpers from './v6/helpers'; + +export const v6 = { helpers }; diff --git a/node/node_modules/ip-address/src/ipv4.ts b/node/node_modules/ip-address/src/ipv4.ts new file mode 100644 index 0000000000000000000000000000000000000000..557216eeb2a94c86e2972e6ab730d9da438a7105 --- /dev/null +++ b/node/node_modules/ip-address/src/ipv4.ts @@ -0,0 +1,363 @@ +/* eslint-disable no-param-reassign */ + +import * as common from './common'; +import * as constants from './v4/constants'; +import { AddressError } from './address-error'; +import { BigInteger } from 'jsbn'; +import { sprintf } from 'sprintf-js'; + +/** + * Represents an IPv4 address + * @class Address4 + * @param {string} address - An IPv4 address string + */ +export class Address4 { + address: string; + addressMinusSuffix?: string; + groups: number = constants.GROUPS; + parsedAddress: string[] = []; + parsedSubnet: string = ''; + subnet: string = '/32'; + subnetMask: number = 32; + v4: boolean = true; + + constructor(address: string) { + this.address = address; + + const subnet = constants.RE_SUBNET_STRING.exec(address); + + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + + if (this.subnetMask < 0 || this.subnetMask > constants.BITS) { + throw new AddressError('Invalid subnet mask.'); + } + + address = address.replace(constants.RE_SUBNET_STRING, ''); + } + + this.addressMinusSuffix = address; + + this.parsedAddress = this.parse(address); + } + + static isValid(address: string): boolean { + try { + // eslint-disable-next-line no-new + new Address4(address); + + return true; + } catch (e) { + return false; + } + } + + /* + * Parses a v4 address + */ + parse(address: string) { + const groups = address.split('.'); + + if (!address.match(constants.RE_ADDRESS)) { + throw new AddressError('Invalid IPv4 address.'); + } + + return groups; + } + + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm(): string { + return this.parsedAddress.map((part) => parseInt(part, 10)).join('.'); + } + + /** + * Returns true if the address is correct, false otherwise + * @memberof Address4 + * @instance + * @returns {Boolean} + */ + isCorrect = common.isCorrect(constants.BITS); + + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex: string): Address4 { + const padded = hex.replace(/:/g, '').padStart(8, '0'); + const groups = []; + let i; + + for (i = 0; i < 8; i += 2) { + const h = padded.slice(i, i + 2); + + groups.push(parseInt(h, 16)); + } + + return new Address4(groups.join('.')); + } + + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer: number): Address4 { + return Address4.fromHex(integer.toString(16)); + } + + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress: string): Address4 { + // remove ending ".in-addr.arpa." or just "." + const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, ''); + + const address = leader.split('.').reverse().join('.'); + + return new Address4(address); + } + + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex(): string { + return this.parsedAddress.map((part) => sprintf('%02x', parseInt(part, 10))).join(':'); + } + + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray(): number[] { + return this.parsedAddress.map((part) => parseInt(part, 10)); + } + + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6(): string { + const output = []; + let i; + + for (i = 0; i < constants.GROUPS; i += 2) { + const hex = sprintf( + '%02x%02x', + parseInt(this.parsedAddress[i], 10), + parseInt(this.parsedAddress[i + 1], 10) + ); + + output.push(sprintf('%x', parseInt(hex, 16))); + } + + return output.join(':'); + } + + /** + * Returns the address as a BigInteger + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + bigInteger(): BigInteger { + return new BigInteger( + this.parsedAddress.map((n) => sprintf('%02x', parseInt(n, 10))).join(''), + 16 + ); + } + + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + _startAddress(): BigInteger { + return new BigInteger(this.mask() + '0'.repeat(constants.BITS - this.subnetMask), 2); + } + + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress(): Address4 { + return Address4.fromBigInteger(this._startAddress()); + } + + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive(): Address4 { + const adjust = new BigInteger('1'); + return Address4.fromBigInteger(this._startAddress().add(adjust)); + } + + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {BigInteger} + */ + _endAddress(): BigInteger { + return new BigInteger(this.mask() + '1'.repeat(constants.BITS - this.subnetMask), 2); + } + + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress(): Address4 { + return Address4.fromBigInteger(this._endAddress()); + } + + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive(): Address4 { + const adjust = new BigInteger('1'); + return Address4.fromBigInteger(this._endAddress().subtract(adjust)); + } + + /** + * Converts a BigInteger to a v4 address object + * @memberof Address4 + * @static + * @param {BigInteger} bigInteger - a BigInteger to convert + * @returns {Address4} + */ + static fromBigInteger(bigInteger: BigInteger): Address4 { + return Address4.fromInteger(parseInt(bigInteger.toString(), 10)); + } + + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask?: number): string { + if (mask === undefined) { + mask = this.subnetMask; + } + + return this.getBitsBase2(0, mask); + } + + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start: number, end: number): string { + return this.binaryZeroPad().slice(start, end); + } + + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string { + if (!options) { + options = {}; + } + + const reversed = this.correctForm().split('.').reverse().join('.'); + + if (options.omitSuffix) { + return reversed; + } + + return sprintf('%s.in-addr.arpa.', reversed); + } + + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isInSubnet = common.isInSubnet; + + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean { + return this.isInSubnet(new Address4('224.0.0.0/4')); + } + + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad(): string { + return this.bigInteger().toString(2).padStart(constants.BITS, '0'); + } + + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6(): string { + const segments = this.parsedAddress; + + return this.address.replace( + constants.RE_ADDRESS, + sprintf( + '%s.%s', + segments.slice(0, 2).join('.'), + segments.slice(2, 4).join('.') + ) + ); + } +} diff --git a/node/node_modules/ip-address/src/ipv6.ts b/node/node_modules/ip-address/src/ipv6.ts new file mode 100644 index 0000000000000000000000000000000000000000..2565d779d6fac20ba6147f7c70375c390394d663 --- /dev/null +++ b/node/node_modules/ip-address/src/ipv6.ts @@ -0,0 +1,1214 @@ +/* eslint-disable prefer-destructuring */ +/* eslint-disable no-param-reassign */ + +import * as common from './common'; +import * as constants4 from './v4/constants'; +import * as constants6 from './v6/constants'; +import * as helpers from './v6/helpers'; +import { Address4 } from './ipv4'; +import { + ADDRESS_BOUNDARY, + possibleElisions, + simpleRegularExpression, +} from './v6/regular-expressions'; +import { AddressError } from './address-error'; +import { BigInteger } from 'jsbn'; +import { sprintf } from 'sprintf-js'; + +function assert(condition: any): asserts condition { + if (!condition) { + throw new Error('Assertion failed.'); + } +} + +function addCommas(number: string): string { + const r = /(\d+)(\d{3})/; + + while (r.test(number)) { + number = number.replace(r, '$1,$2'); + } + + return number; +} + +function spanLeadingZeroes4(n: string): string { + n = n.replace(/^(0{1,})([1-9]+)$/, '$1$2'); + n = n.replace(/^(0{1,})(0)$/, '$1$2'); + + return n; +} + +/* + * A helper function to compact an array + */ +function compact(address: string[], slice: number[]) { + const s1 = []; + const s2 = []; + let i; + + for (i = 0; i < address.length; i++) { + if (i < slice[0]) { + s1.push(address[i]); + } else if (i > slice[1]) { + s2.push(address[i]); + } + } + + return s1.concat(['compact']).concat(s2); +} + +function paddedHex(octet: string): string { + return sprintf('%04x', parseInt(octet, 16)); +} + +function unsignByte(b: number) { + // eslint-disable-next-line no-bitwise + return b & 0xff; +} + + +interface SixToFourProperties { + prefix: string; + gateway: string; +} + +interface TeredoProperties { + prefix: string; + server4: string; + client4: string; + flags: string; + coneNat: boolean; + microsoft: { + reserved: boolean; + universalLocal: boolean; + groupIndividual: boolean; + nonce: string; + }; + udpPort: string; +} + +/** + * Represents an IPv6 address + * @class Address6 + * @param {string} address - An IPv6 address string + * @param {number} [groups=8] - How many octets to parse + * @example + * var address = new Address6('2001::/32'); + */ +export class Address6 { + address4?: Address4; + address: string; + addressMinusSuffix: string = ''; + elidedGroups?: number; + elisionBegin?: number; + elisionEnd?: number; + groups: number; + parsedAddress4?: string; + parsedAddress: string[]; + parsedSubnet: string = ''; + subnet: string = '/128'; + subnetMask: number = 128; + v4: boolean = false; + zone: string = ''; + + constructor(address: string, optionalGroups?: number) { + if (optionalGroups === undefined) { + this.groups = constants6.GROUPS; + } else { + this.groups = optionalGroups; + } + + this.address = address; + + const subnet = constants6.RE_SUBNET_STRING.exec(address); + + if (subnet) { + this.parsedSubnet = subnet[0].replace('/', ''); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + + if ( + Number.isNaN(this.subnetMask) || + this.subnetMask < 0 || + this.subnetMask > constants6.BITS + ) { + throw new AddressError('Invalid subnet mask.'); + } + + address = address.replace(constants6.RE_SUBNET_STRING, ''); + } else if (/\//.test(address)) { + throw new AddressError('Invalid subnet mask.'); + } + + const zone = constants6.RE_ZONE_STRING.exec(address); + + if (zone) { + this.zone = zone[0]; + + address = address.replace(constants6.RE_ZONE_STRING, ''); + } + + this.addressMinusSuffix = address; + + this.parsedAddress = this.parse(this.addressMinusSuffix); + } + + static isValid(address: string): boolean { + try { + // eslint-disable-next-line no-new + new Address6(address); + + return true; + } catch (e) { + return false; + } + } + + /** + * Convert a BigInteger to a v6 address object + * @memberof Address6 + * @static + * @param {BigInteger} bigInteger - a BigInteger to convert + * @returns {Address6} + * @example + * var bigInteger = new BigInteger('1000000000000'); + * var address = Address6.fromBigInteger(bigInteger); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInteger(bigInteger: BigInteger): Address6 { + const hex = bigInteger.toString(16).padStart(32, '0'); + const groups = []; + let i; + + for (i = 0; i < constants6.GROUPS; i++) { + groups.push(hex.slice(i * 4, (i + 1) * 4)); + } + + return new Address6(groups.join(':')); + } + + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url: string) { + let host: string; + let port: string | number | null = null; + let result: string[] | null; + + // If we have brackets parse them and find a port + if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) { + result = constants6.RE_URL_WITH_PORT.exec(url); + + if (result === null) { + return { + error: 'failed to parse address with port', + address: null, + port: null, + }; + } + + host = result[1]; + port = result[2]; + // If there's a URL extract the address + } else if (url.indexOf('/') !== -1) { + // Remove the protocol prefix + url = url.replace(/^[a-z0-9]+:\/\//, ''); + + // Parse the address + result = constants6.RE_URL.exec(url); + + if (result === null) { + return { + error: 'failed to parse address from URL', + address: null, + port: null, + }; + } + + host = result[1]; + // Otherwise just assign the URL to the host and let the library parse it + } else { + host = url; + } + + // If there's a port convert it to an integer + if (port) { + port = parseInt(port, 10); + + // squelch out of range ports + if (port < 0 || port > 65536) { + port = null; + } + } else { + // Standardize `undefined` to `null` + port = null; + } + + return { + address: new Address6(host), + port, + }; + } + + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address: string): Address6 { + const address4 = new Address4(address); + + const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask); + + return new Address6(`::ffff:${address4.correctForm()}/${mask6}`); + } + + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress: string): Address6 { + // remove ending ".ip6.arpa." or just "." + let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, ''); + const semicolonAmount = 7; + + // correct ip6.arpa form with ending removed will be 63 characters + if (address.length !== 63) { + throw new AddressError("Invalid 'ip6.arpa' form."); + } + + const parts = address.split('.').reverse(); + + for (let i = semicolonAmount; i > 0; i--) { + const insertIndex = i * 4; + parts.splice(insertIndex, 0, ':'); + } + + address = parts.join(''); + + return new Address6(address); + } + + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription(): string { + return sprintf('%s.ipv6-literal.net', this.correctForm().replace(/:/g, '-')); + } + + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask: number = this.subnetMask): string { + return this.getBitsBase2(0, mask); + } + + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [size=128] - the subnet size + * @returns {String} + */ + // TODO: probably useful to have a numeric version of this too + possibleSubnets(subnetSize: number = 128): string { + const availableBits = constants6.BITS - this.subnetMask; + const subnetBits = Math.abs(subnetSize - constants6.BITS); + const subnetPowers = availableBits - subnetBits; + + if (subnetPowers < 0) { + return '0'; + } + + return addCommas(new BigInteger('2', 10).pow(subnetPowers).toString(10)); + } + + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + _startAddress(): BigInteger { + return new BigInteger(this.mask() + '0'.repeat(constants6.BITS - this.subnetMask), 2); + } + + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress(): Address6 { + return Address6.fromBigInteger(this._startAddress()); + } + + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive(): Address6 { + const adjust = new BigInteger('1'); + return Address6.fromBigInteger(this._startAddress().add(adjust)); + } + + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + _endAddress(): BigInteger { + return new BigInteger(this.mask() + '1'.repeat(constants6.BITS - this.subnetMask), 2); + } + + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress(): Address6 { + return Address6.fromBigInteger(this._endAddress()); + } + + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive(): Address6 { + const adjust = new BigInteger('1'); + return Address6.fromBigInteger(this._endAddress().subtract(adjust)); + } + + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope(): string { + let scope = constants6.SCOPES[this.getBits(12, 16).intValue()]; + + if (this.getType() === 'Global unicast' && scope !== 'Link local') { + scope = 'Global'; + } + + return scope || 'Unknown'; + } + + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType(): string { + for (const subnet of Object.keys(constants6.TYPES)) { + if (this.isInSubnet(new Address6(subnet))) { + return constants6.TYPES[subnet] as string; + } + } + + return 'Global unicast'; + } + + /** + * Return the bits in the given range as a BigInteger + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + getBits(start: number, end: number): BigInteger { + return new BigInteger(this.getBitsBase2(start, end), 2); + } + + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start: number, end: number): string { + return this.binaryZeroPad().slice(start, end); + } + + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start: number, end: number): string { + const length = end - start; + + if (length % 4 !== 0) { + throw new Error('Length of bits to retrieve must be divisible by four'); + } + + return this.getBits(start, end) + .toString(16) + .padStart(length / 4, '0'); + } + + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet(): string { + return this.getBitsBase2(this.subnetMask, constants6.BITS); + } + + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options?: common.ReverseFormOptions): string { + if (!options) { + options = {}; + } + + const characters = Math.floor(this.subnetMask / 4); + + const reversed = this.canonicalForm() + .replace(/:/g, '') + .split('') + .slice(0, characters) + .reverse() + .join('.'); + + if (characters > 0) { + if (options.omitSuffix) { + return reversed; + } + + return sprintf('%s.ip6.arpa.', reversed); + } + + if (options.omitSuffix) { + return ''; + } + + return 'ip6.arpa.'; + } + + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm(): string { + let i; + let groups = []; + + let zeroCounter = 0; + const zeroes = []; + + for (i = 0; i < this.parsedAddress.length; i++) { + const value = parseInt(this.parsedAddress[i], 16); + + if (value === 0) { + zeroCounter++; + } + + if (value !== 0 && zeroCounter > 0) { + if (zeroCounter > 1) { + zeroes.push([i - zeroCounter, i - 1]); + } + + zeroCounter = 0; + } + } + + // Do we end with a string of zeroes? + if (zeroCounter > 1) { + zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]); + } + + const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1); + + if (zeroes.length > 0) { + const index = zeroLengths.indexOf(Math.max(...zeroLengths) as number); + + groups = compact(this.parsedAddress, zeroes[index]); + } else { + groups = this.parsedAddress; + } + + for (i = 0; i < groups.length; i++) { + if (groups[i] !== 'compact') { + groups[i] = parseInt(groups[i], 16).toString(16); + } + } + + let correct = groups.join(':'); + + correct = correct.replace(/^compact$/, '::'); + correct = correct.replace(/^compact|compact$/, ':'); + correct = correct.replace(/compact/, ''); + + return correct; + } + + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad(): string { + return this.bigInteger().toString(2).padStart(constants6.BITS, '0'); + } + + // TODO: Improve the semantics of this helper function + parse4in6(address: string): string { + const groups = address.split(':'); + const lastGroup = groups.slice(-1)[0]; + + const address4 = lastGroup.match(constants4.RE_ADDRESS); + + if (address4) { + this.parsedAddress4 = address4[0]; + this.address4 = new Address4(this.parsedAddress4); + + for (let i = 0; i < this.address4.groups; i++) { + if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { + throw new AddressError( + "IPv4 addresses can't have leading zeroes.", + address.replace( + constants4.RE_ADDRESS, + this.address4.parsedAddress.map(spanLeadingZeroes4).join('.') + ) + ); + } + } + + this.v4 = true; + + groups[groups.length - 1] = this.address4.toGroup6(); + + address = groups.join(':'); + } + + return address; + } + + // TODO: Make private? + parse(address: string): string[] { + address = this.parse4in6(address); + + const badCharacters = address.match(constants6.RE_BAD_CHARACTERS); + + if (badCharacters) { + throw new AddressError( + sprintf( + 'Bad character%s detected in address: %s', + badCharacters.length > 1 ? 's' : '', + badCharacters.join('') + ), + address.replace(constants6.RE_BAD_CHARACTERS, '$1') + ); + } + + const badAddress = address.match(constants6.RE_BAD_ADDRESS); + + if (badAddress) { + throw new AddressError( + sprintf('Address failed regex: %s', badAddress.join('')), + address.replace(constants6.RE_BAD_ADDRESS, '$1') + ); + } + + let groups: string[] = []; + + const halves = address.split('::'); + + if (halves.length === 2) { + let first = halves[0].split(':'); + let last = halves[1].split(':'); + + if (first.length === 1 && first[0] === '') { + first = []; + } + + if (last.length === 1 && last[0] === '') { + last = []; + } + + const remaining = this.groups - (first.length + last.length); + + if (!remaining) { + throw new AddressError('Error parsing groups'); + } + + this.elidedGroups = remaining; + + this.elisionBegin = first.length; + this.elisionEnd = first.length + this.elidedGroups; + + groups = groups.concat(first); + + for (let i = 0; i < remaining; i++) { + groups.push('0'); + } + + groups = groups.concat(last); + } else if (halves.length === 1) { + groups = address.split(':'); + + this.elidedGroups = 0; + } else { + throw new AddressError('Too many :: groups found'); + } + + groups = groups.map((group: string) => sprintf('%x', parseInt(group, 16))); + + if (groups.length !== this.groups) { + throw new AddressError('Incorrect number of groups found'); + } + + return groups; + } + + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm(): string { + return this.parsedAddress.map(paddedHex).join(':'); + } + + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal(): string { + return this.parsedAddress.map((n) => sprintf('%05d', parseInt(n, 16))).join(':'); + } + + /** + * Return the address as a BigInteger + * @memberof Address6 + * @instance + * @returns {BigInteger} + */ + bigInteger(): BigInteger { + return new BigInteger(this.parsedAddress.map(paddedHex).join(''), 16); + } + + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4(): Address4 { + const binary = this.binaryZeroPad().split(''); + + return Address4.fromHex(new BigInteger(binary.slice(96, 128).join(''), 2).toString(16)); + } + + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6(): string { + const address4 = this.to4(); + const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6); + + const correct = address6.correctForm(); + + let infix = ''; + + if (!/:$/.test(correct)) { + infix = ':'; + } + + return correct + infix + address4.address; + } + + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo(): TeredoProperties { + /* + - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32). + - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that + is used. + - Bits 64 to 79 can be used to define some flags. Currently only the + higher order bit is used; it is set to 1 if the Teredo client is + located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista + and Windows Server 2008 implementations, more bits are used. In those + implementations, the format for these 16 bits is "CRAAAAUG AAAAAAAA", + where "C" remains the "Cone" flag. The "R" bit is reserved for future + use. The "U" bit is for the Universal/Local flag (set to 0). The "G" bit + is Individual/Group flag (set to 0). The A bits are set to a 12-bit + randomly generated number chosen by the Teredo client to introduce + additional protection for the Teredo node against IPv6-based scanning + attacks. + - Bits 80 to 95 contains the obfuscated UDP port number. This is the + port number that is mapped by the NAT to the Teredo client with all + bits inverted. + - Bits 96 to 127 contains the obfuscated IPv4 address. This is the + public IPv4 address of the NAT with all bits inverted. + */ + const prefix = this.getBitsBase16(0, 32); + + const udpPort = this.getBits(80, 96).xor(new BigInteger('ffff', 16)).toString(); + + const server4 = Address4.fromHex(this.getBitsBase16(32, 64)); + const client4 = Address4.fromHex( + this.getBits(96, 128).xor(new BigInteger('ffffffff', 16)).toString(16) + ); + + const flags = this.getBits(64, 80); + const flagsBase2 = this.getBitsBase2(64, 80); + + const coneNat = flags.testBit(15); + const reserved = flags.testBit(14); + const groupIndividual = flags.testBit(8); + const universalLocal = flags.testBit(9); + const nonce = new BigInteger(flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16), 2).toString(10); + + return { + prefix: sprintf('%s:%s', prefix.slice(0, 4), prefix.slice(4, 8)), + server4: server4.address, + client4: client4.address, + flags: flagsBase2, + coneNat, + microsoft: { + reserved, + universalLocal, + groupIndividual, + nonce, + }, + udpPort, + }; + } + + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4(): SixToFourProperties { + /* + - Bits 0 to 15 are set to the 6to4 prefix (2002::/16). + - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used. + */ + + const prefix = this.getBitsBase16(0, 16); + + const gateway = Address4.fromHex(this.getBitsBase16(16, 48)); + + return { + prefix: sprintf('%s', prefix.slice(0, 4)), + gateway: gateway.address, + }; + } + + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4(): Address6 | null { + if (!this.is4()) { + return null; + } + + const addr6to4 = [ + '2002', + this.getBitsBase16(96, 112), + this.getBitsBase16(112, 128), + '', + '/16', + ].join(':'); + + return new Address6(addr6to4); + } + + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray(): number[] { + const byteArray = this.bigInteger().toByteArray(); + + // work around issue where `toByteArray` returns a leading 0 element + if (byteArray.length === 17 && byteArray[0] === 0) { + return byteArray.slice(1); + } + + return byteArray; + } + + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray(): number[] { + return this.toByteArray().map(unsignByte); + } + + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes: Array): Address6 { + return this.fromUnsignedByteArray(bytes.map(unsignByte)); + } + + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes: Array): Address6 { + const BYTE_MAX = new BigInteger('256', 10); + let result = new BigInteger('0', 10); + let multiplier = new BigInteger('1', 10); + + for (let i = bytes.length - 1; i >= 0; i--) { + result = result.add(multiplier.multiply(new BigInteger(bytes[i].toString(10), 10))); + + multiplier = multiplier.multiply(BYTE_MAX); + } + + return Address6.fromBigInteger(result); + } + + // #region Attributes + /** + * Returns true if the given address is in the subnet of the current address + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isInSubnet = common.isInSubnet; + + /** + * Returns true if the address is correct, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCorrect = common.isCorrect(constants6.BITS); + + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical(): boolean { + return this.addressMinusSuffix === this.canonicalForm(); + } + + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal(): boolean { + // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10' + if ( + this.getBitsBase2(0, 64) === + '1111111010000000000000000000000000000000000000000000000000000000' + ) { + return true; + } + + return false; + } + + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast(): boolean { + return this.getType() === 'Multicast'; + } + + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4(): boolean { + return this.v4; + } + + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo(): boolean { + return this.isInSubnet(new Address6('2001::/32')); + } + + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4(): boolean { + return this.isInSubnet(new Address6('2002::/16')); + } + + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback(): boolean { + return this.getType() === 'Loopback'; + } + // #endregion + + // #region HTML + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort?: number | string): string { + if (optionalPort === undefined) { + optionalPort = ''; + } else { + optionalPort = sprintf(':%s', optionalPort); + } + + return sprintf('http://[%s]%s/', this.correctForm(), optionalPort); + } + + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options?: { className?: string; prefix?: string; v4?: boolean }): string { + if (!options) { + options = {}; + } + + if (options.className === undefined) { + options.className = ''; + } + + if (options.prefix === undefined) { + options.prefix = '/#address='; + } + + if (options.v4 === undefined) { + options.v4 = false; + } + + let formFunction = this.correctForm; + + if (options.v4) { + formFunction = this.to4in6; + } + + if (options.className) { + return sprintf( + '%2$s', + options.prefix, + formFunction.call(this), + options.className + ); + } + + return sprintf('%2$s', options.prefix, formFunction.call(this)); + } + + /** + * Groups an address + * @returns {String} + */ + group(): string { + if (this.elidedGroups === 0) { + // The simple case + return helpers.simpleGroup(this.address).join(':'); + } + + assert(typeof this.elidedGroups === 'number'); + assert(typeof this.elisionBegin === 'number'); + + // The elided case + const output = []; + + const [left, right] = this.address.split('::'); + + if (left.length) { + output.push(...helpers.simpleGroup(left)); + } else { + output.push(''); + } + + const classes = ['hover-group']; + + for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { + classes.push(sprintf('group-%d', i)); + } + + output.push(sprintf('', classes.join(' '))); + + if (right.length) { + output.push(...helpers.simpleGroup(right, this.elisionEnd)); + } else { + output.push(''); + } + + if (this.is4()) { + assert(this.address4 instanceof Address4); + + output.pop(); + output.push(this.address4.groupForV6()); + } + + return output.join(':'); + } + // #endregion + + // #region Regular expressions + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(this: Address6, substringSearch: boolean = false): string { + let output: string[] = []; + + // TODO: revisit why this is necessary + const address6 = new Address6(this.correctForm()); + + if (address6.elidedGroups === 0) { + // The simple case + output.push(simpleRegularExpression(address6.parsedAddress)); + } else if (address6.elidedGroups === constants6.GROUPS) { + // A completely elided address + output.push(possibleElisions(constants6.GROUPS)); + } else { + // A partially elided address + const halves = address6.address.split('::'); + + if (halves[0].length) { + output.push(simpleRegularExpression(halves[0].split(':'))); + } + + assert(typeof address6.elidedGroups === 'number'); + + output.push( + possibleElisions(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0) + ); + + if (halves[1].length) { + output.push(simpleRegularExpression(halves[1].split(':'))); + } + + output = [output.join(':')]; + } + + if (!substringSearch) { + output = [ + '(?=^|', + ADDRESS_BOUNDARY, + '|[^\\w\\:])(', + ...output, + ')(?=[^\\w\\:]|', + ADDRESS_BOUNDARY, + '|$)', + ]; + } + + return output.join(''); + } + + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(this: Address6, substringSearch: boolean = false): RegExp { + return new RegExp(this.regularExpressionString(substringSearch), 'i'); + } + // #endregion +} diff --git a/node/node_modules/ip-address/src/v4/constants.ts b/node/node_modules/ip-address/src/v4/constants.ts new file mode 100644 index 0000000000000000000000000000000000000000..f25b5af49ac3b916ff73b9a7f99d72bde2940e04 --- /dev/null +++ b/node/node_modules/ip-address/src/v4/constants.ts @@ -0,0 +1,6 @@ +export const BITS = 32; +export const GROUPS = 4; + +export const RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g; + +export const RE_SUBNET_STRING = /\/\d{1,2}$/; diff --git a/node/node_modules/ip-address/src/v6/constants.ts b/node/node_modules/ip-address/src/v6/constants.ts new file mode 100644 index 0000000000000000000000000000000000000000..617c771bced7804f015d03ef9a98294e92694be9 --- /dev/null +++ b/node/node_modules/ip-address/src/v6/constants.ts @@ -0,0 +1,79 @@ +export const BITS = 128; +export const GROUPS = 8; + +/** + * Represents IPv6 address scopes + * @memberof Address6 + * @static + */ +export const SCOPES: { [key: number]: string | undefined } = { + 0: 'Reserved', + 1: 'Interface local', + 2: 'Link local', + 4: 'Admin local', + 5: 'Site local', + 8: 'Organization local', + 14: 'Global', + 15: 'Reserved', +} as const; + +/** + * Represents IPv6 address types + * @memberof Address6 + * @static + */ +export const TYPES: { [key: string]: string | undefined } = { + 'ff01::1/128': 'Multicast (All nodes on this interface)', + 'ff01::2/128': 'Multicast (All routers on this interface)', + 'ff02::1/128': 'Multicast (All nodes on this link)', + 'ff02::2/128': 'Multicast (All routers on this link)', + 'ff05::2/128': 'Multicast (All routers in this site)', + 'ff02::5/128': 'Multicast (OSPFv3 AllSPF routers)', + 'ff02::6/128': 'Multicast (OSPFv3 AllDR routers)', + 'ff02::9/128': 'Multicast (RIP routers)', + 'ff02::a/128': 'Multicast (EIGRP routers)', + 'ff02::d/128': 'Multicast (PIM routers)', + 'ff02::16/128': 'Multicast (MLDv2 reports)', + 'ff01::fb/128': 'Multicast (mDNSv6)', + 'ff02::fb/128': 'Multicast (mDNSv6)', + 'ff05::fb/128': 'Multicast (mDNSv6)', + 'ff02::1:2/128': 'Multicast (All DHCP servers and relay agents on this link)', + 'ff05::1:2/128': 'Multicast (All DHCP servers and relay agents in this site)', + 'ff02::1:3/128': 'Multicast (All DHCP servers on this link)', + 'ff05::1:3/128': 'Multicast (All DHCP servers in this site)', + '::/128': 'Unspecified', + '::1/128': 'Loopback', + 'ff00::/8': 'Multicast', + 'fe80::/10': 'Link-local unicast', +} as const; + +/** + * A regular expression that matches bad characters in an IPv6 address + * @memberof Address6 + * @static + */ +export const RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi; + +/** + * A regular expression that matches an incorrect IPv6 address + * @memberof Address6 + * @static + */ +export const RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi; + +/** + * A regular expression that matches an IPv6 subnet + * @memberof Address6 + * @static + */ +export const RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/; + +/** + * A regular expression that matches an IPv6 zone + * @memberof Address6 + * @static + */ +export const RE_ZONE_STRING = /%.*$/; + +export const RE_URL = new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/); +export const RE_URL_WITH_PORT = new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/); diff --git a/node/node_modules/ip-address/src/v6/helpers.ts b/node/node_modules/ip-address/src/v6/helpers.ts new file mode 100644 index 0000000000000000000000000000000000000000..941cd9ff1cafcc503ce59608111d01cfc2ebbcb9 --- /dev/null +++ b/node/node_modules/ip-address/src/v6/helpers.ts @@ -0,0 +1,60 @@ +import { sprintf } from 'sprintf-js'; + +/** + * @returns {String} the string with all zeroes contained in a + */ +export function spanAllZeroes(s: string): string { + return s.replace(/(0+)/g, '$1'); +} + +/** + * @returns {String} the string with each character contained in a + */ +export function spanAll(s: string, offset: number = 0): string { + const letters = s.split(''); + + return letters + .map( + (n, i) => + sprintf( + '%s', + n, + i + offset, + spanAllZeroes(n) + ) // XXX Use #base-2 .value-0 instead? + ) + .join(''); +} + +function spanLeadingZeroesSimple(group: string): string { + return group.replace(/^(0+)/, '$1'); +} + +/** + * @returns {String} the string with leading zeroes contained in a + */ +export function spanLeadingZeroes(address: string): string { + const groups = address.split(':'); + + return groups.map((g) => spanLeadingZeroesSimple(g)).join(':'); +} + +/** + * Groups an address + * @returns {String} a grouped address + */ +export function simpleGroup(addressString: string, offset: number = 0): string[] { + const groups = addressString.split(':'); + + return groups.map((g, i) => { + if (/group-v4/.test(g)) { + return g; + } + + return sprintf( + '%s', + i + offset, + spanLeadingZeroesSimple(g) + ); + }); +} diff --git a/node/node_modules/ip-address/src/v6/regular-expressions.ts b/node/node_modules/ip-address/src/v6/regular-expressions.ts new file mode 100644 index 0000000000000000000000000000000000000000..a0ad810c5ecd42e48839db74186908393181f12c --- /dev/null +++ b/node/node_modules/ip-address/src/v6/regular-expressions.ts @@ -0,0 +1,99 @@ +import * as v6 from './constants'; +import { sprintf } from 'sprintf-js'; + +export function groupPossibilities(possibilities: string[]): string { + return sprintf('(%s)', possibilities.join('|')); +} + +export function padGroup(group: string): string { + if (group.length < 4) { + return sprintf('0{0,%d}%s', 4 - group.length, group); + } + + return group; +} + +export const ADDRESS_BOUNDARY = '[^A-Fa-f0-9:]'; + +export function simpleRegularExpression(groups: string[]) { + const zeroIndexes: number[] = []; + + groups.forEach((group, i) => { + const groupInteger = parseInt(group, 16); + + if (groupInteger === 0) { + zeroIndexes.push(i); + } + }); + + // You can technically elide a single 0, this creates the regular expressions + // to match that eventuality + const possibilities = zeroIndexes.map((zeroIndex) => + groups + .map((group, i) => { + if (i === zeroIndex) { + const elision = i === 0 || i === v6.GROUPS - 1 ? ':' : ''; + + return groupPossibilities([padGroup(group), elision]); + } + + return padGroup(group); + }) + .join(':') + ); + + // The simplest case + possibilities.push(groups.map(padGroup).join(':')); + + return groupPossibilities(possibilities); +} + +export function possibleElisions( + elidedGroups: number, + moreLeft?: boolean, + moreRight?: boolean +): string { + const left = moreLeft ? '' : ':'; + const right = moreRight ? '' : ':'; + + const possibilities = []; + + // 1. elision of everything (::) + if (!moreLeft && !moreRight) { + possibilities.push('::'); + } + + // 2. complete elision of the middle + if (moreLeft && moreRight) { + possibilities.push(''); + } + + if ((moreRight && !moreLeft) || (!moreRight && moreLeft)) { + // 3. complete elision of one side + possibilities.push(':'); + } + + // 4. elision from the left side + possibilities.push(sprintf('%s(:0{1,4}){1,%d}', left, elidedGroups - 1)); + + // 5. elision from the right side + possibilities.push(sprintf('(0{1,4}:){1,%d}%s', elidedGroups - 1, right)); + + // 6. no elision + possibilities.push(sprintf('(0{1,4}:){%d}0{1,4}', elidedGroups - 1)); + + // 7. elision (including sloppy elision) from the middle + for (let groups = 1; groups < elidedGroups - 1; groups++) { + for (let position = 1; position < elidedGroups - groups; position++) { + possibilities.push( + sprintf( + '(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}', + position, + elidedGroups - position - groups - 1 + ) + ); + } + } + + return groupPossibilities(possibilities); +} diff --git a/node/node_modules/jsbn/.npmignore b/node/node_modules/jsbn/.npmignore new file mode 100644 index 0000000000000000000000000000000000000000..28f1ba7565f46fb5074ad9a4f07c4cfc86dff4cc --- /dev/null +++ b/node/node_modules/jsbn/.npmignore @@ -0,0 +1,2 @@ +node_modules +.DS_Store \ No newline at end of file diff --git a/node/node_modules/jsbn/CHANGELOG.md b/node/node_modules/jsbn/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..23f17f40e3033316e847b8273f0a27f310eb8f7b --- /dev/null +++ b/node/node_modules/jsbn/CHANGELOG.md @@ -0,0 +1,16 @@ +# v1.1.0 + +- Allow for es6 "default import", e.g. `import BigInteger from 'jsbn'`. +- Updated license file to read MIT + + +# v1.0.0 + +- breaking change: `require('jsbn')` no longer returns `BigInteger`. Use `require('jsbn').BigInteger` instead. + + + +# v0.1.1 + +- fixed backwards-incompatible change in v0.1.0 where `require('jsbn') != BigInteger`. This patch version allows for `var BigInteger = require('jsbn')` or `var BigInteger = require('jsbn').BigInteger`. + diff --git a/node/node_modules/jsbn/LICENSE b/node/node_modules/jsbn/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..24502a9cf7483647d0e4e5b35396082b1295d9c3 --- /dev/null +++ b/node/node_modules/jsbn/LICENSE @@ -0,0 +1,40 @@ +Licensing +--------- + +This software is covered under the following copyright: + +/* + * Copyright (c) 2003-2005 Tom Wu + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF + * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * In addition, the following condition applies: + * + * All redistributions must retain an intact copy of this copyright notice + * and disclaimer. + */ + +Address all questions regarding this license to: + + Tom Wu + tjw@cs.Stanford.EDU diff --git a/node/node_modules/jsbn/README.md b/node/node_modules/jsbn/README.md new file mode 100644 index 0000000000000000000000000000000000000000..62e8273bc8897ad0d3913cb6fc16796ec738282e --- /dev/null +++ b/node/node_modules/jsbn/README.md @@ -0,0 +1,173 @@ +# jsbn: javascript big number + +[Tom Wu's Original Website](http://www-cs-students.stanford.edu/~tjw/jsbn/) + +I felt compelled to put this on github and publish to npm. I haven't tested every other big integer library out there, but the few that I have tested in comparison to this one have not even come close in performance. I am aware of the `bi` module on npm, however it has been modified and I wanted to publish the original without modifications. This is jsbn and jsbn2 from Tom Wu's original website above, with the module pattern applied to prevent global leaks and to allow for use with node.js on the server side. + +## usage + + var BigInteger = require('jsbn').BigInteger; + + var bi = new BigInteger('91823918239182398123'); + console.log(bi.bitLength()); // 67 + + +## API + +### bi.toString() + +returns the base-10 number as a string + +### bi.negate() + +returns a new BigInteger equal to the negation of `bi` + +### bi.abs + +returns new BI of absolute value + +### bi.compareTo + + + +### bi.bitLength + + + +### bi.mod + + + +### bi.modPowInt + + + +### bi.clone + + + +### bi.intValue + + + +### bi.byteValue + + + +### bi.shortValue + + + +### bi.signum + + + +### bi.toByteArray + + + +### bi.equals + + + +### bi.min + + + +### bi.max + + + +### bi.and + + + +### bi.or + + + +### bi.xor + + + +### bi.andNot + + + +### bi.not + + + +### bi.shiftLeft + + + +### bi.shiftRight + + + +### bi.getLowestSetBit + + + +### bi.bitCount + + + +### bi.testBit + + + +### bi.setBit + + + +### bi.clearBit + + + +### bi.flipBit + + + +### bi.add + + + +### bi.subtract + + + +### bi.multiply + + + +### bi.divide + + + +### bi.remainder + + + +### bi.divideAndRemainder + + + +### bi.modPow + + + +### bi.modInverse + + + +### bi.pow + + + +### bi.gcd + + + +### bi.isProbablePrime diff --git a/node/node_modules/jsbn/example.html b/node/node_modules/jsbn/example.html new file mode 100644 index 0000000000000000000000000000000000000000..1c0489b13763522a95ec525c8e68c9d8ff92ec2b --- /dev/null +++ b/node/node_modules/jsbn/example.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/node/node_modules/jsbn/example.js b/node/node_modules/jsbn/example.js new file mode 100644 index 0000000000000000000000000000000000000000..85979909d7b1d8c0bd66dde42a60d28e798fdc94 --- /dev/null +++ b/node/node_modules/jsbn/example.js @@ -0,0 +1,5 @@ +(function () { + var BigInteger = jsbn.BigInteger; + var a = new BigInteger('91823918239182398123'); + console.log(a.bitLength()); +}()); diff --git a/node/node_modules/jsbn/index.js b/node/node_modules/jsbn/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e9eb697b07a89144e0cee66904a147f49bc90046 --- /dev/null +++ b/node/node_modules/jsbn/index.js @@ -0,0 +1,1361 @@ +(function(){ + + // Copyright (c) 2005 Tom Wu + // All Rights Reserved. + // See "LICENSE" for details. + + // Basic JavaScript BN library - subset useful for RSA encryption. + + // Bits per digit + var dbits; + + // JavaScript engine analysis + var canary = 0xdeadbeefcafe; + var j_lm = ((canary&0xffffff)==0xefcafe); + + // (public) Constructor + function BigInteger(a,b,c) { + if(a != null) + if("number" == typeof a) this.fromNumber(a,b,c); + else if(b == null && "string" != typeof a) this.fromString(a,256); + else this.fromString(a,b); + } + + // return new, unset BigInteger + function nbi() { return new BigInteger(null); } + + // am: Compute w_j += (x*this_i), propagate carries, + // c is initial carry, returns final carry. + // c < 3*dvalue, x < 2*dvalue, this_i < dvalue + // We need to select the fastest one that works in this environment. + + // am1: use a single mult and divide to get the high bits, + // max digit bits should be 26 because + // max internal value = 2*dvalue^2-2*dvalue (< 2^53) + function am1(i,x,w,j,c,n) { + while(--n >= 0) { + var v = x*this[i++]+w[j]+c; + c = Math.floor(v/0x4000000); + w[j++] = v&0x3ffffff; + } + return c; + } + // am2 avoids a big mult-and-extract completely. + // Max digit bits should be <= 30 because we do bitwise ops + // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) + function am2(i,x,w,j,c,n) { + var xl = x&0x7fff, xh = x>>15; + while(--n >= 0) { + var l = this[i]&0x7fff; + var h = this[i++]>>15; + var m = xh*l+h*xl; + l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); + c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); + w[j++] = l&0x3fffffff; + } + return c; + } + // Alternately, set max digit bits to 28 since some + // browsers slow down when dealing with 32-bit numbers. + function am3(i,x,w,j,c,n) { + var xl = x&0x3fff, xh = x>>14; + while(--n >= 0) { + var l = this[i]&0x3fff; + var h = this[i++]>>14; + var m = xh*l+h*xl; + l = xl*l+((m&0x3fff)<<14)+w[j]+c; + c = (l>>28)+(m>>14)+xh*h; + w[j++] = l&0xfffffff; + } + return c; + } + var inBrowser = typeof navigator !== "undefined"; + if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) { + BigInteger.prototype.am = am2; + dbits = 30; + } + else if(inBrowser && j_lm && (navigator.appName != "Netscape")) { + BigInteger.prototype.am = am1; + dbits = 26; + } + else { // Mozilla/Netscape seems to prefer am3 + BigInteger.prototype.am = am3; + dbits = 28; + } + + BigInteger.prototype.DB = dbits; + BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; + r.t = this.t; + r.s = this.s; + } + + // (protected) set from integer value x, -DV <= x < DV + function bnpFromInt(x) { + this.t = 1; + this.s = (x<0)?-1:0; + if(x > 0) this[0] = x; + else if(x < -1) this[0] = x+this.DV; + else this.t = 0; + } + + // return bigint initialized to value + function nbv(i) { var r = nbi(); r.fromInt(i); return r; } + + // (protected) set from string and radix + function bnpFromString(s,b) { + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 256) k = 8; // byte array + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else { this.fromRadix(s,b); return; } + this.t = 0; + this.s = 0; + var i = s.length, mi = false, sh = 0; + while(--i >= 0) { + var x = (k==8)?s[i]&0xff:intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-") mi = true; + continue; + } + mi = false; + if(sh == 0) + this[this.t++] = x; + else if(sh+k > this.DB) { + this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); + } + else + this[this.t-1] |= x<= this.DB) sh -= this.DB; + } + if(k == 8 && (s[0]&0x80) != 0) { + this.s = -1; + if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; + } + + // (public) return string representation in given radix + function bnToString(b) { + if(this.s < 0) return "-"+this.negate().toString(b); + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else return this.toRadix(b); + var km = (1< 0) { + if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } + while(i >= 0) { + if(p < k) { + d = (this[i]&((1<>(p+=this.DB-k); + } + else { + d = (this[i]>>(p-=k))&km; + if(p <= 0) { p += this.DB; --i; } + } + if(d > 0) m = true; + if(m) r += int2char(d); + } + } + return m?r:"0"; + } + + // (public) -this + function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } + + // (public) |this| + function bnAbs() { return (this.s<0)?this.negate():this; } + + // (public) return + if this > a, - if this < a, 0 if equal + function bnCompareTo(a) { + var r = this.s-a.s; + if(r != 0) return r; + var i = this.t; + r = i-a.t; + if(r != 0) return (this.s<0)?-r:r; + while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; + return 0; + } + + // returns bit length of the integer x + function nbits(x) { + var r = 1, t; + if((t=x>>>16) != 0) { x = t; r += 16; } + if((t=x>>8) != 0) { x = t; r += 8; } + if((t=x>>4) != 0) { x = t; r += 4; } + if((t=x>>2) != 0) { x = t; r += 2; } + if((t=x>>1) != 0) { x = t; r += 1; } + return r; + } + + // (public) return the number of bits in "this" + function bnBitLength() { + if(this.t <= 0) return 0; + return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); + } + + // (protected) r = this << n*DB + function bnpDLShiftTo(n,r) { + var i; + for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; + for(i = n-1; i >= 0; --i) r[i] = 0; + r.t = this.t+n; + r.s = this.s; + } + + // (protected) r = this >> n*DB + function bnpDRShiftTo(n,r) { + for(var i = n; i < this.t; ++i) r[i-n] = this[i]; + r.t = Math.max(this.t-n,0); + r.s = this.s; + } + + // (protected) r = this << n + function bnpLShiftTo(n,r) { + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<= 0; --i) { + r[i+ds+1] = (this[i]>>cbs)|c; + c = (this[i]&bm)<= 0; --i) r[i] = 0; + r[ds] = c; + r.t = this.t+ds+1; + r.s = this.s; + r.clamp(); + } + + // (protected) r = this >> n + function bnpRShiftTo(n,r) { + r.s = this.s; + var ds = Math.floor(n/this.DB); + if(ds >= this.t) { r.t = 0; return; } + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<>bs; + for(var i = ds+1; i < this.t; ++i) { + r[i-ds-1] |= (this[i]&bm)<>bs; + } + if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; + } + if(a.t < this.t) { + c -= a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c -= a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c -= a.s; + } + r.s = (c<0)?-1:0; + if(c < -1) r[i++] = this.DV+c; + else if(c > 0) r[i++] = c; + r.t = i; + r.clamp(); + } + + // (protected) r = this * a, r != this,a (HAC 14.12) + // "this" should be the larger one if appropriate. + function bnpMultiplyTo(a,r) { + var x = this.abs(), y = a.abs(); + var i = x.t; + r.t = i+y.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); + r.s = 0; + r.clamp(); + if(this.s != a.s) BigInteger.ZERO.subTo(r,r); + } + + // (protected) r = this^2, r != this (HAC 14.16) + function bnpSquareTo(r) { + var x = this.abs(); + var i = r.t = 2*x.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < x.t-1; ++i) { + var c = x.am(i,x[i],r,2*i,0,1); + if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { + r[i+x.t] -= x.DV; + r[i+x.t+1] = 1; + } + } + if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); + r.s = 0; + r.clamp(); + } + + // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) + // r != q, this != m. q or r may be null. + function bnpDivRemTo(m,q,r) { + var pm = m.abs(); + if(pm.t <= 0) return; + var pt = this.abs(); + if(pt.t < pm.t) { + if(q != null) q.fromInt(0); + if(r != null) this.copyTo(r); + return; + } + if(r == null) r = nbi(); + var y = nbi(), ts = this.s, ms = m.s; + var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus + if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } + else { pm.copyTo(y); pt.copyTo(r); } + var ys = y.t; + var y0 = y[ys-1]; + if(y0 == 0) return; + var yt = y0*(1<1)?y[ys-2]>>this.F2:0); + var d1 = this.FV/yt, d2 = (1<= 0) { + r[r.t++] = 1; + r.subTo(t,r); + } + BigInteger.ONE.dlShiftTo(ys,t); + t.subTo(y,y); // "negative" y so we can replace sub with am later + while(y.t < ys) y[y.t++] = 0; + while(--j >= 0) { + // Estimate quotient digit + var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); + if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out + y.dlShiftTo(j,t); + r.subTo(t,r); + while(r[i] < --qd) r.subTo(t,r); + } + } + if(q != null) { + r.drShiftTo(ys,q); + if(ts != ms) BigInteger.ZERO.subTo(q,q); + } + r.t = ys; + r.clamp(); + if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder + if(ts < 0) BigInteger.ZERO.subTo(r,r); + } + + // (public) this mod a + function bnMod(a) { + var r = nbi(); + this.abs().divRemTo(a,null,r); + if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); + return r; + } + + // Modular reduction using "classic" algorithm + function Classic(m) { this.m = m; } + function cConvert(x) { + if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); + else return x; + } + function cRevert(x) { return x; } + function cReduce(x) { x.divRemTo(this.m,null,x); } + function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + Classic.prototype.convert = cConvert; + Classic.prototype.revert = cRevert; + Classic.prototype.reduce = cReduce; + Classic.prototype.mulTo = cMulTo; + Classic.prototype.sqrTo = cSqrTo; + + // (protected) return "-1/this % 2^DB"; useful for Mont. reduction + // justification: + // xy == 1 (mod m) + // xy = 1+km + // xy(2-xy) = (1+km)(1-km) + // x[y(2-xy)] = 1-k^2m^2 + // x[y(2-xy)] == 1 (mod m^2) + // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 + // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. + // JS multiply "overflows" differently from C/C++, so care is needed here. + function bnpInvDigit() { + if(this.t < 1) return 0; + var x = this[0]; + if((x&1) == 0) return 0; + var y = x&3; // y == 1/x mod 2^2 + y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 + y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 + y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 + // last step - calculate inverse mod DV directly; + // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints + y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits + // we really want the negative inverse, and -DV < y < DV + return (y>0)?this.DV-y:-y; + } + + // Montgomery reduction + function Montgomery(m) { + this.m = m; + this.mp = m.invDigit(); + this.mpl = this.mp&0x7fff; + this.mph = this.mp>>15; + this.um = (1<<(m.DB-15))-1; + this.mt2 = 2*m.t; + } + + // xR mod m + function montConvert(x) { + var r = nbi(); + x.abs().dlShiftTo(this.m.t,r); + r.divRemTo(this.m,null,r); + if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); + return r; + } + + // x/R mod m + function montRevert(x) { + var r = nbi(); + x.copyTo(r); + this.reduce(r); + return r; + } + + // x = x/R mod m (HAC 14.32) + function montReduce(x) { + while(x.t <= this.mt2) // pad x so am has enough room later + x[x.t++] = 0; + for(var i = 0; i < this.m.t; ++i) { + // faster way of calculating u0 = x[i]*mp mod DV + var j = x[i]&0x7fff; + var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; + // use am to combine the multiply-shift-add into one call + j = i+this.m.t; + x[j] += this.m.am(0,u0,x,i,0,this.m.t); + // propagate carry + while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } + } + x.clamp(); + x.drShiftTo(this.m.t,x); + if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); + } + + // r = "x^2/R mod m"; x != r + function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + // r = "xy/R mod m"; x,y != r + function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + + Montgomery.prototype.convert = montConvert; + Montgomery.prototype.revert = montRevert; + Montgomery.prototype.reduce = montReduce; + Montgomery.prototype.mulTo = montMulTo; + Montgomery.prototype.sqrTo = montSqrTo; + + // (protected) true iff this is even + function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } + + // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) + function bnpExp(e,z) { + if(e > 0xffffffff || e < 1) return BigInteger.ONE; + var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; + g.copyTo(r); + while(--i >= 0) { + z.sqrTo(r,r2); + if((e&(1< 0) z.mulTo(r2,g,r); + else { var t = r; r = r2; r2 = t; } + } + return z.revert(r); + } + + // (public) this^e % m, 0 <= e < 2^32 + function bnModPowInt(e,m) { + var z; + if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); + return this.exp(e,z); + } + + // protected + BigInteger.prototype.copyTo = bnpCopyTo; + BigInteger.prototype.fromInt = bnpFromInt; + BigInteger.prototype.fromString = bnpFromString; + BigInteger.prototype.clamp = bnpClamp; + BigInteger.prototype.dlShiftTo = bnpDLShiftTo; + BigInteger.prototype.drShiftTo = bnpDRShiftTo; + BigInteger.prototype.lShiftTo = bnpLShiftTo; + BigInteger.prototype.rShiftTo = bnpRShiftTo; + BigInteger.prototype.subTo = bnpSubTo; + BigInteger.prototype.multiplyTo = bnpMultiplyTo; + BigInteger.prototype.squareTo = bnpSquareTo; + BigInteger.prototype.divRemTo = bnpDivRemTo; + BigInteger.prototype.invDigit = bnpInvDigit; + BigInteger.prototype.isEven = bnpIsEven; + BigInteger.prototype.exp = bnpExp; + + // public + BigInteger.prototype.toString = bnToString; + BigInteger.prototype.negate = bnNegate; + BigInteger.prototype.abs = bnAbs; + BigInteger.prototype.compareTo = bnCompareTo; + BigInteger.prototype.bitLength = bnBitLength; + BigInteger.prototype.mod = bnMod; + BigInteger.prototype.modPowInt = bnModPowInt; + + // "constants" + BigInteger.ZERO = nbv(0); + BigInteger.ONE = nbv(1); + + // Copyright (c) 2005-2009 Tom Wu + // All Rights Reserved. + // See "LICENSE" for details. + + // Extended JavaScript BN functions, required for RSA private ops. + + // Version 1.1: new BigInteger("0", 10) returns "proper" zero + // Version 1.2: square() API, isProbablePrime fix + + // (public) + function bnClone() { var r = nbi(); this.copyTo(r); return r; } + + // (public) return value as integer + function bnIntValue() { + if(this.s < 0) { + if(this.t == 1) return this[0]-this.DV; + else if(this.t == 0) return -1; + } + else if(this.t == 1) return this[0]; + else if(this.t == 0) return 0; + // assumes 16 < DB < 32 + return ((this[1]&((1<<(32-this.DB))-1))<>24; } + + // (public) return value as short (assumes DB>=16) + function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } + + // (protected) return x s.t. r^x < DV + function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } + + // (public) 0 if this == 0, 1 if this > 0 + function bnSigNum() { + if(this.s < 0) return -1; + else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; + else return 1; + } + + // (protected) convert to radix string + function bnpToRadix(b) { + if(b == null) b = 10; + if(this.signum() == 0 || b < 2 || b > 36) return "0"; + var cs = this.chunkSize(b); + var a = Math.pow(b,cs); + var d = nbv(a), y = nbi(), z = nbi(), r = ""; + this.divRemTo(d,y,z); + while(y.signum() > 0) { + r = (a+z.intValue()).toString(b).substr(1) + r; + y.divRemTo(d,y,z); + } + return z.intValue().toString(b) + r; + } + + // (protected) convert from radix string + function bnpFromRadix(s,b) { + this.fromInt(0); + if(b == null) b = 10; + var cs = this.chunkSize(b); + var d = Math.pow(b,cs), mi = false, j = 0, w = 0; + for(var i = 0; i < s.length; ++i) { + var x = intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-" && this.signum() == 0) mi = true; + continue; + } + w = b*w+x; + if(++j >= cs) { + this.dMultiply(d); + this.dAddOffset(w,0); + j = 0; + w = 0; + } + } + if(j > 0) { + this.dMultiply(Math.pow(b,j)); + this.dAddOffset(w,0); + } + if(mi) BigInteger.ZERO.subTo(this,this); + } + + // (protected) alternate constructor + function bnpFromNumber(a,b,c) { + if("number" == typeof b) { + // new BigInteger(int,int,RNG) + if(a < 2) this.fromInt(1); + else { + this.fromNumber(a,c); + if(!this.testBit(a-1)) // force MSB set + this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); + if(this.isEven()) this.dAddOffset(1,0); // force odd + while(!this.isProbablePrime(b)) { + this.dAddOffset(2,0); + if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); + } + } + } + else { + // new BigInteger(int,RNG) + var x = new Array(), t = a&7; + x.length = (a>>3)+1; + b.nextBytes(x); + if(t > 0) x[0] &= ((1< 0) { + if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) + r[k++] = d|(this.s<<(this.DB-p)); + while(i >= 0) { + if(p < 8) { + d = (this[i]&((1<>(p+=this.DB-8); + } + else { + d = (this[i]>>(p-=8))&0xff; + if(p <= 0) { p += this.DB; --i; } + } + if((d&0x80) != 0) d |= -256; + if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; + if(k > 0 || d != this.s) r[k++] = d; + } + } + return r; + } + + function bnEquals(a) { return(this.compareTo(a)==0); } + function bnMin(a) { return(this.compareTo(a)<0)?this:a; } + function bnMax(a) { return(this.compareTo(a)>0)?this:a; } + + // (protected) r = this op a (bitwise) + function bnpBitwiseTo(a,op,r) { + var i, f, m = Math.min(a.t,this.t); + for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); + if(a.t < this.t) { + f = a.s&this.DM; + for(i = m; i < this.t; ++i) r[i] = op(this[i],f); + r.t = this.t; + } + else { + f = this.s&this.DM; + for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); + r.t = a.t; + } + r.s = op(this.s,a.s); + r.clamp(); + } + + // (public) this & a + function op_and(x,y) { return x&y; } + function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } + + // (public) this | a + function op_or(x,y) { return x|y; } + function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } + + // (public) this ^ a + function op_xor(x,y) { return x^y; } + function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } + + // (public) this & ~a + function op_andnot(x,y) { return x&~y; } + function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } + + // (public) ~this + function bnNot() { + var r = nbi(); + for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; + r.t = this.t; + r.s = ~this.s; + return r; + } + + // (public) this << n + function bnShiftLeft(n) { + var r = nbi(); + if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); + return r; + } + + // (public) this >> n + function bnShiftRight(n) { + var r = nbi(); + if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); + return r; + } + + // return index of lowest 1-bit in x, x < 2^31 + function lbit(x) { + if(x == 0) return -1; + var r = 0; + if((x&0xffff) == 0) { x >>= 16; r += 16; } + if((x&0xff) == 0) { x >>= 8; r += 8; } + if((x&0xf) == 0) { x >>= 4; r += 4; } + if((x&3) == 0) { x >>= 2; r += 2; } + if((x&1) == 0) ++r; + return r; + } + + // (public) returns index of lowest 1-bit (or -1 if none) + function bnGetLowestSetBit() { + for(var i = 0; i < this.t; ++i) + if(this[i] != 0) return i*this.DB+lbit(this[i]); + if(this.s < 0) return this.t*this.DB; + return -1; + } + + // return number of 1 bits in x + function cbit(x) { + var r = 0; + while(x != 0) { x &= x-1; ++r; } + return r; + } + + // (public) return number of set bits + function bnBitCount() { + var r = 0, x = this.s&this.DM; + for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); + return r; + } + + // (public) true iff nth bit is set + function bnTestBit(n) { + var j = Math.floor(n/this.DB); + if(j >= this.t) return(this.s!=0); + return((this[j]&(1<<(n%this.DB)))!=0); + } + + // (protected) this op (1<>= this.DB; + } + if(a.t < this.t) { + c += a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c += a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += a.s; + } + r.s = (c<0)?-1:0; + if(c > 0) r[i++] = c; + else if(c < -1) r[i++] = this.DV+c; + r.t = i; + r.clamp(); + } + + // (public) this + a + function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } + + // (public) this - a + function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } + + // (public) this * a + function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } + + // (public) this^2 + function bnSquare() { var r = nbi(); this.squareTo(r); return r; } + + // (public) this / a + function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } + + // (public) this % a + function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } + + // (public) [this/a,this%a] + function bnDivideAndRemainder(a) { + var q = nbi(), r = nbi(); + this.divRemTo(a,q,r); + return new Array(q,r); + } + + // (protected) this *= n, this >= 0, 1 < n < DV + function bnpDMultiply(n) { + this[this.t] = this.am(0,n-1,this,0,0,this.t); + ++this.t; + this.clamp(); + } + + // (protected) this += n << w words, this >= 0 + function bnpDAddOffset(n,w) { + if(n == 0) return; + while(this.t <= w) this[this.t++] = 0; + this[w] += n; + while(this[w] >= this.DV) { + this[w] -= this.DV; + if(++w >= this.t) this[this.t++] = 0; + ++this[w]; + } + } + + // A "null" reducer + function NullExp() {} + function nNop(x) { return x; } + function nMulTo(x,y,r) { x.multiplyTo(y,r); } + function nSqrTo(x,r) { x.squareTo(r); } + + NullExp.prototype.convert = nNop; + NullExp.prototype.revert = nNop; + NullExp.prototype.mulTo = nMulTo; + NullExp.prototype.sqrTo = nSqrTo; + + // (public) this^e + function bnPow(e) { return this.exp(e,new NullExp()); } + + // (protected) r = lower n words of "this * a", a.t <= n + // "this" should be the larger one if appropriate. + function bnpMultiplyLowerTo(a,n,r) { + var i = Math.min(this.t+a.t,n); + r.s = 0; // assumes a,this >= 0 + r.t = i; + while(i > 0) r[--i] = 0; + var j; + for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); + for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); + r.clamp(); + } + + // (protected) r = "this * a" without lower n words, n > 0 + // "this" should be the larger one if appropriate. + function bnpMultiplyUpperTo(a,n,r) { + --n; + var i = r.t = this.t+a.t-n; + r.s = 0; // assumes a,this >= 0 + while(--i >= 0) r[i] = 0; + for(i = Math.max(n-this.t,0); i < a.t; ++i) + r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); + r.clamp(); + r.drShiftTo(1,r); + } + + // Barrett modular reduction + function Barrett(m) { + // setup Barrett + this.r2 = nbi(); + this.q3 = nbi(); + BigInteger.ONE.dlShiftTo(2*m.t,this.r2); + this.mu = this.r2.divide(m); + this.m = m; + } + + function barrettConvert(x) { + if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); + else if(x.compareTo(this.m) < 0) return x; + else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } + } + + function barrettRevert(x) { return x; } + + // x = x mod m (HAC 14.42) + function barrettReduce(x) { + x.drShiftTo(this.m.t-1,this.r2); + if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } + this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); + this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); + while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); + x.subTo(this.r2,x); + while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); + } + + // r = x^2 mod m; x != r + function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + // r = x*y mod m; x,y != r + function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + + Barrett.prototype.convert = barrettConvert; + Barrett.prototype.revert = barrettRevert; + Barrett.prototype.reduce = barrettReduce; + Barrett.prototype.mulTo = barrettMulTo; + Barrett.prototype.sqrTo = barrettSqrTo; + + // (public) this^e % m (HAC 14.85) + function bnModPow(e,m) { + var i = e.bitLength(), k, r = nbv(1), z; + if(i <= 0) return r; + else if(i < 18) k = 1; + else if(i < 48) k = 3; + else if(i < 144) k = 4; + else if(i < 768) k = 5; + else k = 6; + if(i < 8) + z = new Classic(m); + else if(m.isEven()) + z = new Barrett(m); + else + z = new Montgomery(m); + + // precomputation + var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { + var g2 = nbi(); + z.sqrTo(g[1],g2); + while(n <= km) { + g[n] = nbi(); + z.mulTo(g2,g[n-2],g[n]); + n += 2; + } + } + + var j = e.t-1, w, is1 = true, r2 = nbi(), t; + i = nbits(e[j])-1; + while(j >= 0) { + if(i >= k1) w = (e[j]>>(i-k1))&km; + else { + w = (e[j]&((1<<(i+1))-1))<<(k1-i); + if(j > 0) w |= e[j-1]>>(this.DB+i-k1); + } + + n = k; + while((w&1) == 0) { w >>= 1; --n; } + if((i -= n) < 0) { i += this.DB; --j; } + if(is1) { // ret == 1, don't bother squaring or multiplying it + g[w].copyTo(r); + is1 = false; + } + else { + while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } + if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } + z.mulTo(r2,g[w],r); + } + + while(j >= 0 && (e[j]&(1< 0) { + x.rShiftTo(g,x); + y.rShiftTo(g,y); + } + while(x.signum() > 0) { + if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); + if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); + if(x.compareTo(y) >= 0) { + x.subTo(y,x); + x.rShiftTo(1,x); + } + else { + y.subTo(x,y); + y.rShiftTo(1,y); + } + } + if(g > 0) y.lShiftTo(g,y); + return y; + } + + // (protected) this % n, n < 2^26 + function bnpModInt(n) { + if(n <= 0) return 0; + var d = this.DV%n, r = (this.s<0)?n-1:0; + if(this.t > 0) + if(d == 0) r = this[0]%n; + else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; + return r; + } + + // (public) 1/this % m (HAC 14.61) + function bnModInverse(m) { + var ac = m.isEven(); + if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; + var u = m.clone(), v = this.clone(); + var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); + while(u.signum() != 0) { + while(u.isEven()) { + u.rShiftTo(1,u); + if(ac) { + if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } + a.rShiftTo(1,a); + } + else if(!b.isEven()) b.subTo(m,b); + b.rShiftTo(1,b); + } + while(v.isEven()) { + v.rShiftTo(1,v); + if(ac) { + if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } + c.rShiftTo(1,c); + } + else if(!d.isEven()) d.subTo(m,d); + d.rShiftTo(1,d); + } + if(u.compareTo(v) >= 0) { + u.subTo(v,u); + if(ac) a.subTo(c,a); + b.subTo(d,b); + } + else { + v.subTo(u,v); + if(ac) c.subTo(a,c); + d.subTo(b,d); + } + } + if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; + if(d.compareTo(m) >= 0) return d.subtract(m); + if(d.signum() < 0) d.addTo(m,d); else return d; + if(d.signum() < 0) return d.add(m); else return d; + } + + var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; + var lplim = (1<<26)/lowprimes[lowprimes.length-1]; + + // (public) test primality with certainty >= 1-.5^t + function bnIsProbablePrime(t) { + var i, x = this.abs(); + if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { + for(i = 0; i < lowprimes.length; ++i) + if(x[0] == lowprimes[i]) return true; + return false; + } + if(x.isEven()) return false; + i = 1; + while(i < lowprimes.length) { + var m = lowprimes[i], j = i+1; + while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; + m = x.modInt(m); + while(i < j) if(m%lowprimes[i++] == 0) return false; + } + return x.millerRabin(t); + } + + // (protected) true if probably prime (HAC 4.24, Miller-Rabin) + function bnpMillerRabin(t) { + var n1 = this.subtract(BigInteger.ONE); + var k = n1.getLowestSetBit(); + if(k <= 0) return false; + var r = n1.shiftRight(k); + t = (t+1)>>1; + if(t > lowprimes.length) t = lowprimes.length; + var a = nbi(); + for(var i = 0; i < t; ++i) { + //Pick bases at random, instead of starting at 2 + a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); + var y = a.modPow(r,this); + if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { + var j = 1; + while(j++ < k && y.compareTo(n1) != 0) { + y = y.modPowInt(2,this); + if(y.compareTo(BigInteger.ONE) == 0) return false; + } + if(y.compareTo(n1) != 0) return false; + } + } + return true; + } + + // protected + BigInteger.prototype.chunkSize = bnpChunkSize; + BigInteger.prototype.toRadix = bnpToRadix; + BigInteger.prototype.fromRadix = bnpFromRadix; + BigInteger.prototype.fromNumber = bnpFromNumber; + BigInteger.prototype.bitwiseTo = bnpBitwiseTo; + BigInteger.prototype.changeBit = bnpChangeBit; + BigInteger.prototype.addTo = bnpAddTo; + BigInteger.prototype.dMultiply = bnpDMultiply; + BigInteger.prototype.dAddOffset = bnpDAddOffset; + BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; + BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; + BigInteger.prototype.modInt = bnpModInt; + BigInteger.prototype.millerRabin = bnpMillerRabin; + + // public + BigInteger.prototype.clone = bnClone; + BigInteger.prototype.intValue = bnIntValue; + BigInteger.prototype.byteValue = bnByteValue; + BigInteger.prototype.shortValue = bnShortValue; + BigInteger.prototype.signum = bnSigNum; + BigInteger.prototype.toByteArray = bnToByteArray; + BigInteger.prototype.equals = bnEquals; + BigInteger.prototype.min = bnMin; + BigInteger.prototype.max = bnMax; + BigInteger.prototype.and = bnAnd; + BigInteger.prototype.or = bnOr; + BigInteger.prototype.xor = bnXor; + BigInteger.prototype.andNot = bnAndNot; + BigInteger.prototype.not = bnNot; + BigInteger.prototype.shiftLeft = bnShiftLeft; + BigInteger.prototype.shiftRight = bnShiftRight; + BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; + BigInteger.prototype.bitCount = bnBitCount; + BigInteger.prototype.testBit = bnTestBit; + BigInteger.prototype.setBit = bnSetBit; + BigInteger.prototype.clearBit = bnClearBit; + BigInteger.prototype.flipBit = bnFlipBit; + BigInteger.prototype.add = bnAdd; + BigInteger.prototype.subtract = bnSubtract; + BigInteger.prototype.multiply = bnMultiply; + BigInteger.prototype.divide = bnDivide; + BigInteger.prototype.remainder = bnRemainder; + BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; + BigInteger.prototype.modPow = bnModPow; + BigInteger.prototype.modInverse = bnModInverse; + BigInteger.prototype.pow = bnPow; + BigInteger.prototype.gcd = bnGCD; + BigInteger.prototype.isProbablePrime = bnIsProbablePrime; + + // JSBN-specific extension + BigInteger.prototype.square = bnSquare; + + // Expose the Barrett function + BigInteger.prototype.Barrett = Barrett + + // BigInteger interfaces not implemented in jsbn: + + // BigInteger(int signum, byte[] magnitude) + // double doubleValue() + // float floatValue() + // int hashCode() + // long longValue() + // static BigInteger valueOf(long val) + + // Random number generator - requires a PRNG backend, e.g. prng4.js + + // For best results, put code like + // + // in your main HTML document. + + var rng_state; + var rng_pool; + var rng_pptr; + + // Mix in a 32-bit integer into the pool + function rng_seed_int(x) { + rng_pool[rng_pptr++] ^= x & 255; + rng_pool[rng_pptr++] ^= (x >> 8) & 255; + rng_pool[rng_pptr++] ^= (x >> 16) & 255; + rng_pool[rng_pptr++] ^= (x >> 24) & 255; + if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; + } + + // Mix in the current time (w/milliseconds) into the pool + function rng_seed_time() { + rng_seed_int(new Date().getTime()); + } + + // Initialize the pool with junk if needed. + if(rng_pool == null) { + rng_pool = new Array(); + rng_pptr = 0; + var t; + if(typeof window !== "undefined" && window.crypto) { + if (window.crypto.getRandomValues) { + // Use webcrypto if available + var ua = new Uint8Array(32); + window.crypto.getRandomValues(ua); + for(t = 0; t < 32; ++t) + rng_pool[rng_pptr++] = ua[t]; + } + else if(navigator.appName == "Netscape" && navigator.appVersion < "5") { + // Extract entropy (256 bits) from NS4 RNG if available + var z = window.crypto.random(32); + for(t = 0; t < z.length; ++t) + rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; + } + } + while(rng_pptr < rng_psize) { // extract some randomness from Math.random() + t = Math.floor(65536 * Math.random()); + rng_pool[rng_pptr++] = t >>> 8; + rng_pool[rng_pptr++] = t & 255; + } + rng_pptr = 0; + rng_seed_time(); + //rng_seed_int(window.screenX); + //rng_seed_int(window.screenY); + } + + function rng_get_byte() { + if(rng_state == null) { + rng_seed_time(); + rng_state = prng_newstate(); + rng_state.init(rng_pool); + for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) + rng_pool[rng_pptr] = 0; + rng_pptr = 0; + //rng_pool = null; + } + // TODO: allow reseeding after first request + return rng_state.next(); + } + + function rng_get_bytes(ba) { + var i; + for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); + } + + function SecureRandom() {} + + SecureRandom.prototype.nextBytes = rng_get_bytes; + + // prng4.js - uses Arcfour as a PRNG + + function Arcfour() { + this.i = 0; + this.j = 0; + this.S = new Array(); + } + + // Initialize arcfour context from key, an array of ints, each from [0..255] + function ARC4init(key) { + var i, j, t; + for(i = 0; i < 256; ++i) + this.S[i] = i; + j = 0; + for(i = 0; i < 256; ++i) { + j = (j + this.S[i] + key[i % key.length]) & 255; + t = this.S[i]; + this.S[i] = this.S[j]; + this.S[j] = t; + } + this.i = 0; + this.j = 0; + } + + function ARC4next() { + var t; + this.i = (this.i + 1) & 255; + this.j = (this.j + this.S[this.i]) & 255; + t = this.S[this.i]; + this.S[this.i] = this.S[this.j]; + this.S[this.j] = t; + return this.S[(t + this.S[this.i]) & 255]; + } + + Arcfour.prototype.init = ARC4init; + Arcfour.prototype.next = ARC4next; + + // Plug in your RNG constructor here + function prng_newstate() { + return new Arcfour(); + } + + // Pool size must be a multiple of 4 and greater than 32. + // An array of bytes the size of the pool will be passed to init() + var rng_psize = 256; + + if (typeof exports !== 'undefined') { + exports = module.exports = { + default: BigInteger, + BigInteger: BigInteger, + SecureRandom: SecureRandom, + }; + } else { + this.jsbn = { + BigInteger: BigInteger, + SecureRandom: SecureRandom + }; + } + +}).call(this); diff --git a/node/node_modules/jsbn/package.json b/node/node_modules/jsbn/package.json new file mode 100644 index 0000000000000000000000000000000000000000..97b137c2e2db9bb2524018caa165e362e6f91157 --- /dev/null +++ b/node/node_modules/jsbn/package.json @@ -0,0 +1,21 @@ +{ + "name": "jsbn", + "version": "1.1.0", + "description": "The jsbn library is a fast, portable implementation of large-number math in pure JavaScript, enabling public-key crypto and other applications on desktop and mobile browsers.", + "main": "index.js", + "scripts": { + "test": "mocha test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/andyperlitch/jsbn.git" + }, + "keywords": [ + "biginteger", + "bignumber", + "big", + "integer" + ], + "author": "Tom Wu", + "license": "MIT" +} diff --git a/node/node_modules/jsbn/test/es6-import.js b/node/node_modules/jsbn/test/es6-import.js new file mode 100644 index 0000000000000000000000000000000000000000..668cbdfdc5bef3ad031bdf1784f347fe390a36f3 --- /dev/null +++ b/node/node_modules/jsbn/test/es6-import.js @@ -0,0 +1,3 @@ +import {BigInteger} from '../'; + +console.log(typeof BigInteger) diff --git a/node/node_modules/smart-buffer/.prettierrc.yaml b/node/node_modules/smart-buffer/.prettierrc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9a4f5ed754dd244cfec0ffa0203881ff4a8da3df --- /dev/null +++ b/node/node_modules/smart-buffer/.prettierrc.yaml @@ -0,0 +1,5 @@ +parser: typescript +printWidth: 120 +tabWidth: 2 +singleQuote: true +trailingComma: none \ No newline at end of file diff --git a/node/node_modules/smart-buffer/.travis.yml b/node/node_modules/smart-buffer/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..eec71cecaab482b1662cfd7df6ed7e892b25a90b --- /dev/null +++ b/node/node_modules/smart-buffer/.travis.yml @@ -0,0 +1,13 @@ +language: node_js +node_js: + - 6 + - 8 + - 10 + - 12 + - stable + +before_script: + - npm install -g typescript + - tsc -p ./ + +script: "npm run coveralls" \ No newline at end of file diff --git a/node/node_modules/smart-buffer/LICENSE b/node/node_modules/smart-buffer/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..aab5771a97c788ec0b95b12f1126023324343482 --- /dev/null +++ b/node/node_modules/smart-buffer/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013-2017 Josh Glazebrook + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node/node_modules/smart-buffer/README.md b/node/node_modules/smart-buffer/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6e498288ea3487332954c091e2c2ac8bc4a0fdf5 --- /dev/null +++ b/node/node_modules/smart-buffer/README.md @@ -0,0 +1,633 @@ +smart-buffer [![Build Status](https://travis-ci.org/JoshGlazebrook/smart-buffer.svg?branch=master)](https://travis-ci.org/JoshGlazebrook/smart-buffer) [![Coverage Status](https://coveralls.io/repos/github/JoshGlazebrook/smart-buffer/badge.svg?branch=master)](https://coveralls.io/github/JoshGlazebrook/smart-buffer?branch=master) +============= + +smart-buffer is a Buffer wrapper that adds automatic read & write offset tracking, string operations, data insertions, and more. + +![stats](https://nodei.co/npm/smart-buffer.png?downloads=true&downloadRank=true&stars=true "stats") + +**Key Features**: +* Proxies all of the Buffer write and read functions +* Keeps track of read and write offsets automatically +* Grows the internal Buffer as needed +* Useful string operations. (Null terminating strings) +* Allows for inserting values at specific points in the Buffer +* Built in TypeScript +* Type Definitions Provided +* Browser Support (using Webpack/Browserify) +* Full test coverage + +**Requirements**: +* Node v4.0+ is supported at this time. (Versions prior to 2.0 will work on node 0.10) + + + +## Breaking Changes in v4.0 + +* Old constructor patterns have been completely removed. It's now required to use the SmartBuffer.fromXXX() factory constructors. +* rewind(), skip(), moveTo() have been removed. (see [offsets](#offsets)) +* Internal private properties are now prefixed with underscores (_) +* **All** writeXXX() methods that are given an offset will now **overwrite data** instead of insert. (see [write vs insert](#write-vs-insert)) +* insertXXX() methods have been added for when you want to insert data at a specific offset (this replaces the old behavior of writeXXX() when an offset was provided) + + +## Looking for v3 docs? + +Legacy documentation for version 3 and prior can be found [here](https://github.com/JoshGlazebrook/smart-buffer/blob/master/docs/README_v3.md). + +## Installing: + +`yarn add smart-buffer` + +or + +`npm install smart-buffer` + +Note: The published NPM package includes the built javascript library. +If you cloned this repo and wish to build the library manually use: + +`npm run build` + +## Using smart-buffer + +```javascript +// Javascript +const SmartBuffer = require('smart-buffer').SmartBuffer; + +// Typescript +import { SmartBuffer, SmartBufferOptions} from 'smart-buffer'; +``` + +### Simple Example + +Building a packet that uses the following protocol specification: + +`[PacketType:2][PacketLength:2][Data:XX]` + +To build this packet using the vanilla Buffer class, you would have to count up the length of the data payload beforehand. You would also need to keep track of the current "cursor" position in your Buffer so you write everything in the right places. With smart-buffer you don't have to do either of those things. + +```javascript +function createLoginPacket(username, password, age, country) { + const packet = new SmartBuffer(); + packet.writeUInt16LE(0x0060); // Some packet type + packet.writeStringNT(username); + packet.writeStringNT(password); + packet.writeUInt8(age); + packet.writeStringNT(country); + packet.insertUInt16LE(packet.length - 2, 2); + + return packet.toBuffer(); +} +``` +With the above function, you now can do this: +```javascript +const login = createLoginPacket("Josh", "secret123", 22, "United States"); + +// +``` +Notice that the `[PacketLength:2]` value (1e 00) was inserted at position 2. + +Reading back the packet we created above is just as easy: +```javascript + +const reader = SmartBuffer.fromBuffer(login); + +const logininfo = { + packetType: reader.readUInt16LE(), + packetLength: reader.readUInt16LE(), + username: reader.readStringNT(), + password: reader.readStringNT(), + age: reader.readUInt8(), + country: reader.readStringNT() +}; + +/* +{ + packetType: 96, (0x0060) + packetLength: 30, + username: 'Josh', + password: 'secret123', + age: 22, + country: 'United States' +} +*/ +``` + + +## Write vs Insert +In prior versions of SmartBuffer, .writeXXX(value, offset) calls would insert data when an offset was provided. In version 4, this will now overwrite the data at the offset position. To insert data there are now corresponding .insertXXX(value, offset) methods. + +**SmartBuffer v3**: +```javascript +const buff = SmartBuffer.fromBuffer(new Buffer([1,2,3,4,5,6])); +buff.writeInt8(7, 2); +console.log(buff.toBuffer()) + +// +``` + +**SmartBuffer v4**: +```javascript +const buff = SmartBuffer.fromBuffer(new Buffer([1,2,3,4,5,6])); +buff.writeInt8(7, 2); +console.log(buff.toBuffer()); + +// +``` + +To insert you instead should use: +```javascript +const buff = SmartBuffer.fromBuffer(new Buffer([1,2,3,4,5,6])); +buff.insertInt8(7, 2); +console.log(buff.toBuffer()); + +// +``` + +**Note:** Insert/Writing to a position beyond the currently tracked internal Buffer will zero pad to your offset. + +## Constructing a smart-buffer + +There are a few different ways to construct a SmartBuffer instance. + +```javascript +// Creating SmartBuffer from existing Buffer +const buff = SmartBuffer.fromBuffer(buffer); // Creates instance from buffer. (Uses default utf8 encoding) +const buff = SmartBuffer.fromBuffer(buffer, 'ascii'); // Creates instance from buffer with ascii encoding for strings. + +// Creating SmartBuffer with specified internal Buffer size. (Note: this is not a hard cap, the internal buffer will grow as needed). +const buff = SmartBuffer.fromSize(1024); // Creates instance with internal Buffer size of 1024. +const buff = SmartBuffer.fromSize(1024, 'utf8'); // Creates instance with internal Buffer size of 1024, and utf8 encoding for strings. + +// Creating SmartBuffer with options object. This one specifies size and encoding. +const buff = SmartBuffer.fromOptions({ + size: 1024, + encoding: 'ascii' +}); + +// Creating SmartBuffer with options object. This one specified an existing Buffer. +const buff = SmartBuffer.fromOptions({ + buff: buffer +}); + +// Creating SmartBuffer from a string. +const buff = SmartBuffer.fromBuffer(Buffer.from('some string', 'utf8')); + +// Just want a regular SmartBuffer with all default options? +const buff = new SmartBuffer(); +``` + +# Api Reference: + +**Note:** SmartBuffer is fully documented with Typescript definitions as well as jsdocs so your favorite editor/IDE will have intellisense. + +**Table of Contents** + +1. [Constructing](#constructing) +2. **Numbers** + 1. [Integers](#integers) + 2. [Floating Points](#floating-point-numbers) +3. **Strings** + 1. [Strings](#strings) + 2. [Null Terminated Strings](#null-terminated-strings) +4. [Buffers](#buffers) +5. [Offsets](#offsets) +6. [Other](#other) + + +## Constructing + +### constructor() +### constructor([options]) +- ```options``` *{SmartBufferOptions}* An optional options object to construct a SmartBuffer with. + +Examples: +```javascript +const buff = new SmartBuffer(); +const buff = new SmartBuffer({ + size: 1024, + encoding: 'ascii' +}); +``` + +### Class Method: fromBuffer(buffer[, encoding]) +- ```buffer``` *{Buffer}* The Buffer instance to wrap. +- ```encoding``` *{string}* The string encoding to use. ```Default: 'utf8'``` + +Examples: +```javascript +const someBuffer = Buffer.from('some string'); +const buff = SmartBuffer.fromBuffer(someBuffer); // Defaults to utf8 +const buff = SmartBuffer.fromBuffer(someBuffer, 'ascii'); +``` + +### Class Method: fromSize(size[, encoding]) +- ```size``` *{number}* The size to initialize the internal Buffer. +- ```encoding``` *{string}* The string encoding to use. ```Default: 'utf8'``` + +Examples: +```javascript +const buff = SmartBuffer.fromSize(1024); // Defaults to utf8 +const buff = SmartBuffer.fromSize(1024, 'ascii'); +``` + +### Class Method: fromOptions(options) +- ```options``` *{SmartBufferOptions}* The Buffer instance to wrap. + +```typescript +interface SmartBufferOptions { + encoding?: BufferEncoding; // Defaults to utf8 + size?: number; // Defaults to 4096 + buff?: Buffer; +} +``` + +Examples: +```javascript +const buff = SmartBuffer.fromOptions({ + size: 1024 +}; +const buff = SmartBuffer.fromOptions({ + size: 1024, + encoding: 'utf8' +}); +const buff = SmartBuffer.fromOptions({ + encoding: 'utf8' +}); + +const someBuff = Buffer.from('some string', 'utf8'); +const buff = SmartBuffer.fromOptions({ + buffer: someBuff, + encoding: 'utf8' +}); +``` + +## Integers + +### buff.readInt8([offset]) +### buff.readUInt8([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a Int8 value. + +### buff.readInt16BE([offset]) +### buff.readInt16LE([offset]) +### buff.readUInt16BE([offset]) +### buff.readUInt16LE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a 16 bit integer value. + +### buff.readInt32BE([offset]) +### buff.readInt32LE([offset]) +### buff.readUInt32BE([offset]) +### buff.readUInt32LE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a 32 bit integer value. + + +### buff.writeInt8(value[, offset]) +### buff.writeUInt8(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a Int8 value. + +### buff.insertInt8(value, offset) +### buff.insertUInt8(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a Int8 value. + + +### buff.writeInt16BE(value[, offset]) +### buff.writeInt16LE(value[, offset]) +### buff.writeUInt16BE(value[, offset]) +### buff.writeUInt16LE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a 16 bit integer value. + +### buff.insertInt16BE(value, offset) +### buff.insertInt16LE(value, offset) +### buff.insertUInt16BE(value, offset) +### buff.insertUInt16LE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a 16 bit integer value. + + +### buff.writeInt32BE(value[, offset]) +### buff.writeInt32LE(value[, offset]) +### buff.writeUInt32BE(value[, offset]) +### buff.writeUInt32LE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a 32 bit integer value. + +### buff.insertInt32BE(value, offset) +### buff.insertInt32LE(value, offset) +### buff.insertUInt32BE(value, offset) +### buff.nsertUInt32LE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a 32 bit integer value. + + +## Floating Point Numbers + +### buff.readFloatBE([offset]) +### buff.readFloatLE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a Float value. + +### buff.readDoubleBE([offset]) +### buff.readDoubleLE([offset]) +- ```offset``` *{number}* Optional position to start reading data from. **Default**: ```Auto managed offset``` +- Returns *{number}* + +Read a Double value. + + +### buff.writeFloatBE(value[, offset]) +### buff.writeFloatLE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a Float value. + +### buff.insertFloatBE(value, offset) +### buff.insertFloatLE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a Float value. + + +### buff.writeDoubleBE(value[, offset]) +### buff.writeDoubleLE(value[, offset]) +- ```value``` *{number}* The value to write. +- ```offset``` *{number}* An optional offset to write this value to. **Default:** ```Auto managed offset``` +- Returns *{this}* + +Write a Double value. + +### buff.insertDoubleBE(value, offset) +### buff.insertDoubleLE(value, offset) +- ```value``` *{number}* The value to insert. +- ```offset``` *{number}* The offset to insert this data at. +- Returns *{this}* + +Insert a Double value. + +## Strings + +### buff.readString() +### buff.readString(size[, encoding]) +### buff.readString(encoding) +- ```size``` *{number}* The number of bytes to read. **Default:** ```Reads to the end of the Buffer.``` +- ```encoding``` *{string}* The string encoding to use. **Default:** ```utf8```. + +Read a string value. + +Examples: +```javascript +const buff = SmartBuffer.fromBuffer(Buffer.from('hello there', 'utf8')); +buff.readString(); // 'hello there' +buff.readString(2); // 'he' +buff.readString(2, 'utf8'); // 'he' +buff.readString('utf8'); // 'hello there' +``` + +### buff.writeString(value) +### buff.writeString(value[, offset]) +### buff.writeString(value[, encoding]) +### buff.writeString(value[, offset[, encoding]]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. **Default:** ```Auto managed offset``` +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Write a string value. + +Examples: +```javascript +buff.writeString('hello'); // Auto managed offset +buff.writeString('hello', 2); +buff.writeString('hello', 'utf8') // Auto managed offset +buff.writeString('hello', 2, 'utf8'); +``` + +### buff.insertString(value, offset[, encoding]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Insert a string value. + +Examples: +```javascript +buff.insertString('hello', 2); +buff.insertString('hello', 2, 'utf8'); +``` + +## Null Terminated Strings + +### buff.readStringNT() +### buff.readStringNT(encoding) +- ```encoding``` *{string}* The string encoding to use. **Default:** ```utf8```. + +Read a null terminated string value. (If a null is not found, it will read to the end of the Buffer). + +Examples: +```javascript +const buff = SmartBuffer.fromBuffer(Buffer.from('hello\0 there', 'utf8')); +buff.readStringNT(); // 'hello' + +// If we called this again: +buff.readStringNT(); // ' there' +``` + +### buff.writeStringNT(value) +### buff.writeStringNT(value[, offset]) +### buff.writeStringNT(value[, encoding]) +### buff.writeStringNT(value[, offset[, encoding]]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. **Default:** ```Auto managed offset``` +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Write a null terminated string value. + +Examples: +```javascript +buff.writeStringNT('hello'); // Auto managed offset +buff.writeStringNT('hello', 2); // +buff.writeStringNT('hello', 'utf8') // Auto managed offset +buff.writeStringNT('hello', 2, 'utf8'); +``` + +### buff.insertStringNT(value, offset[, encoding]) +- ```value``` *{string}* The string value to write. +- ```offset``` *{number}* The offset to write this value to. +- ```encoding``` *{string}* An optional string encoding to use. **Default:** ```utf8``` + +Insert a null terminated string value. + +Examples: +```javascript +buff.insertStringNT('hello', 2); +buff.insertStringNT('hello', 2, 'utf8'); +``` + +## Buffers + +### buff.readBuffer([length]) +- ```length``` *{number}* The number of bytes to read into a Buffer. **Default:** ```Reads to the end of the Buffer``` + +Read a Buffer of a specified size. + +### buff.writeBuffer(value[, offset]) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* An optional offset to write the value to. **Default:** ```Auto managed offset``` + +### buff.insertBuffer(value, offset) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* The offset to write the value to. + + +### buff.readBufferNT() + +Read a null terminated Buffer. + +### buff.writeBufferNT(value[, offset]) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* An optional offset to write the value to. **Default:** ```Auto managed offset``` + +Write a null terminated Buffer. + + +### buff.insertBufferNT(value, offset) +- ```value``` *{Buffer}* The buffer value to write. +- ```offset``` *{number}* The offset to write the value to. + +Insert a null terminated Buffer. + + +## Offsets + +### buff.readOffset +### buff.readOffset(offset) +- ```offset``` *{number}* The new read offset value to set. +- Returns: ```The current read offset``` + +Gets or sets the current read offset. + +Examples: +```javascript +const currentOffset = buff.readOffset; // 5 + +buff.readOffset = 10; + +console.log(buff.readOffset) // 10 +``` + +### buff.writeOffset +### buff.writeOffset(offset) +- ```offset``` *{number}* The new write offset value to set. +- Returns: ```The current write offset``` + +Gets or sets the current write offset. + +Examples: +```javascript +const currentOffset = buff.writeOffset; // 5 + +buff.writeOffset = 10; + +console.log(buff.writeOffset) // 10 +``` + +### buff.encoding +### buff.encoding(encoding) +- ```encoding``` *{string}* The new string encoding to set. +- Returns: ```The current string encoding``` + +Gets or sets the current string encoding. + +Examples: +```javascript +const currentEncoding = buff.encoding; // 'utf8' + +buff.encoding = 'ascii'; + +console.log(buff.encoding) // 'ascii' +``` + +## Other + +### buff.clear() + +Clear and resets the SmartBuffer instance. + +### buff.remaining() +- Returns ```Remaining data left to be read``` + +Gets the number of remaining bytes to be read. + + +### buff.internalBuffer +- Returns: *{Buffer}* + +Gets the internally managed Buffer (Includes unmanaged data). + +Examples: +```javascript +const buff = SmartBuffer.fromSize(16); +buff.writeString('hello'); +console.log(buff.InternalBuffer); // +``` + +### buff.toBuffer() +- Returns: *{Buffer}* + +Gets a sliced Buffer instance of the internally managed Buffer. (Only includes managed data) + +Examples: +```javascript +const buff = SmartBuffer.fromSize(16); +buff.writeString('hello'); +console.log(buff.toBuffer()); // +``` + +### buff.toString([encoding]) +- ```encoding``` *{string}* The string encoding to use when converting to a string. **Default:** ```utf8``` +- Returns *{string}* + +Gets a string representation of all data in the SmartBuffer. + +### buff.destroy() + +Destroys the SmartBuffer instance. + + + +## License + +This work is licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License). diff --git a/node/node_modules/smart-buffer/build/smartbuffer.js b/node/node_modules/smart-buffer/build/smartbuffer.js new file mode 100644 index 0000000000000000000000000000000000000000..5353ae11d3f6cd43648a1ddaa0c641c97de5516b --- /dev/null +++ b/node/node_modules/smart-buffer/build/smartbuffer.js @@ -0,0 +1,1233 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils_1 = require("./utils"); +// The default Buffer size if one is not provided. +const DEFAULT_SMARTBUFFER_SIZE = 4096; +// The default string encoding to use for reading/writing strings. +const DEFAULT_SMARTBUFFER_ENCODING = 'utf8'; +class SmartBuffer { + /** + * Creates a new SmartBuffer instance. + * + * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance. + */ + constructor(options) { + this.length = 0; + this._encoding = DEFAULT_SMARTBUFFER_ENCODING; + this._writeOffset = 0; + this._readOffset = 0; + if (SmartBuffer.isSmartBufferOptions(options)) { + // Checks for encoding + if (options.encoding) { + utils_1.checkEncoding(options.encoding); + this._encoding = options.encoding; + } + // Checks for initial size length + if (options.size) { + if (utils_1.isFiniteInteger(options.size) && options.size > 0) { + this._buff = Buffer.allocUnsafe(options.size); + } + else { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_SIZE); + } + // Check for initial Buffer + } + else if (options.buff) { + if (Buffer.isBuffer(options.buff)) { + this._buff = options.buff; + this.length = options.buff.length; + } + else { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_BUFFER); + } + } + else { + this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); + } + } + else { + // If something was passed but it's not a SmartBufferOptions object + if (typeof options !== 'undefined') { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_OBJECT); + } + // Otherwise default to sane options + this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); + } + } + /** + * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding. + * + * @param size { Number } The size of the internal Buffer. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromSize(size, encoding) { + return new this({ + size: size, + encoding: encoding + }); + } + /** + * Creates a new SmartBuffer instance with the provided Buffer and optional encoding. + * + * @param buffer { Buffer } The Buffer to use as the internal Buffer value. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromBuffer(buff, encoding) { + return new this({ + buff: buff, + encoding: encoding + }); + } + /** + * Creates a new SmartBuffer instance with the provided SmartBufferOptions options. + * + * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance. + */ + static fromOptions(options) { + return new this(options); + } + /** + * Type checking function that determines if an object is a SmartBufferOptions object. + */ + static isSmartBufferOptions(options) { + const castOptions = options; + return (castOptions && + (castOptions.encoding !== undefined || castOptions.size !== undefined || castOptions.buff !== undefined)); + } + // Signed integers + /** + * Reads an Int8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt8(offset) { + return this._readNumberValue(Buffer.prototype.readInt8, 1, offset); + } + /** + * Reads an Int16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16BE(offset) { + return this._readNumberValue(Buffer.prototype.readInt16BE, 2, offset); + } + /** + * Reads an Int16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16LE(offset) { + return this._readNumberValue(Buffer.prototype.readInt16LE, 2, offset); + } + /** + * Reads an Int32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32BE(offset) { + return this._readNumberValue(Buffer.prototype.readInt32BE, 4, offset); + } + /** + * Reads an Int32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32LE(offset) { + return this._readNumberValue(Buffer.prototype.readInt32LE, 4, offset); + } + /** + * Reads a BigInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64BE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigInt64BE'); + return this._readNumberValue(Buffer.prototype.readBigInt64BE, 8, offset); + } + /** + * Reads a BigInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64LE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigInt64LE'); + return this._readNumberValue(Buffer.prototype.readBigInt64LE, 8, offset); + } + /** + * Writes an Int8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt8(value, offset) { + this._writeNumberValue(Buffer.prototype.writeInt8, 1, value, offset); + return this; + } + /** + * Inserts an Int8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt8(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt8, 1, value, offset); + } + /** + * Writes an Int16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); + } + /** + * Inserts an Int16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); + } + /** + * Writes an Int16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); + } + /** + * Inserts an Int16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); + } + /** + * Writes an Int32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); + } + /** + * Inserts an Int32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); + } + /** + * Writes an Int32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); + } + /** + * Inserts an Int32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); + } + /** + * Writes a BigInt64BE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64BE'); + return this._writeNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); + } + /** + * Inserts a BigInt64BE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64BE'); + return this._insertNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); + } + /** + * Writes a BigInt64LE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64LE'); + return this._writeNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); + } + /** + * Inserts a Int64LE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigInt64LE'); + return this._insertNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); + } + // Unsigned Integers + /** + * Reads an UInt8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt8(offset) { + return this._readNumberValue(Buffer.prototype.readUInt8, 1, offset); + } + /** + * Reads an UInt16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16BE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt16BE, 2, offset); + } + /** + * Reads an UInt16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16LE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt16LE, 2, offset); + } + /** + * Reads an UInt32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32BE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt32BE, 4, offset); + } + /** + * Reads an UInt32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32LE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt32LE, 4, offset); + } + /** + * Reads a BigUInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64BE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigUInt64BE'); + return this._readNumberValue(Buffer.prototype.readBigUInt64BE, 8, offset); + } + /** + * Reads a BigUInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64LE(offset) { + utils_1.bigIntAndBufferInt64Check('readBigUInt64LE'); + return this._readNumberValue(Buffer.prototype.readBigUInt64LE, 8, offset); + } + /** + * Writes an UInt8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt8(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); + } + /** + * Inserts an UInt8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt8(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); + } + /** + * Writes an UInt16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); + } + /** + * Inserts an UInt16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); + } + /** + * Writes an UInt16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); + } + /** + * Inserts an UInt16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); + } + /** + * Writes an UInt32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); + } + /** + * Inserts an UInt32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); + } + /** + * Writes an UInt32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); + } + /** + * Inserts an UInt32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); + } + /** + * Writes a BigUInt64BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64BE'); + return this._writeNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); + } + /** + * Inserts a BigUInt64BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64BE'); + return this._insertNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); + } + /** + * Writes a BigUInt64LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64LE'); + return this._writeNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); + } + /** + * Inserts a BigUInt64LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check('writeBigUInt64LE'); + return this._insertNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); + } + // Floating Point + /** + * Reads an FloatBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatBE(offset) { + return this._readNumberValue(Buffer.prototype.readFloatBE, 4, offset); + } + /** + * Reads an FloatLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatLE(offset) { + return this._readNumberValue(Buffer.prototype.readFloatLE, 4, offset); + } + /** + * Writes a FloatBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatBE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); + } + /** + * Inserts a FloatBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatBE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); + } + /** + * Writes a FloatLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatLE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); + } + /** + * Inserts a FloatLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatLE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); + } + // Double Floating Point + /** + * Reads an DoublEBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleBE(offset) { + return this._readNumberValue(Buffer.prototype.readDoubleBE, 8, offset); + } + /** + * Reads an DoubleLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleLE(offset) { + return this._readNumberValue(Buffer.prototype.readDoubleLE, 8, offset); + } + /** + * Writes a DoubleBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleBE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); + } + /** + * Inserts a DoubleBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleBE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); + } + /** + * Writes a DoubleLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleLE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); + } + /** + * Inserts a DoubleLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleLE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); + } + // Strings + /** + * Reads a String from the current read position. + * + * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for + * the string (Defaults to instance level encoding). + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readString(arg1, encoding) { + let lengthVal; + // Length provided + if (typeof arg1 === 'number') { + utils_1.checkLengthValue(arg1); + lengthVal = Math.min(arg1, this.length - this._readOffset); + } + else { + encoding = arg1; + lengthVal = this.length - this._readOffset; + } + // Check encoding + if (typeof encoding !== 'undefined') { + utils_1.checkEncoding(encoding); + } + const value = this._buff.slice(this._readOffset, this._readOffset + lengthVal).toString(encoding || this._encoding); + this._readOffset += lengthVal; + return value; + } + /** + * Inserts a String + * + * @param value { String } The String value to insert. + * @param offset { Number } The offset to insert the string at. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertString(value, offset, encoding) { + utils_1.checkOffsetValue(offset); + return this._handleString(value, true, offset, encoding); + } + /** + * Writes a String + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeString(value, arg2, encoding) { + return this._handleString(value, false, arg2, encoding); + } + /** + * Reads a null-terminated String from the current read position. + * + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readStringNT(encoding) { + if (typeof encoding !== 'undefined') { + utils_1.checkEncoding(encoding); + } + // Set null character position to the end SmartBuffer instance. + let nullPos = this.length; + // Find next null character (if one is not found, default from above is used) + for (let i = this._readOffset; i < this.length; i++) { + if (this._buff[i] === 0x00) { + nullPos = i; + break; + } + } + // Read string value + const value = this._buff.slice(this._readOffset, nullPos); + // Increment internal Buffer read offset + this._readOffset = nullPos + 1; + return value.toString(encoding || this._encoding); + } + /** + * Inserts a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertStringNT(value, offset, encoding) { + utils_1.checkOffsetValue(offset); + // Write Values + this.insertString(value, offset, encoding); + this.insertUInt8(0x00, offset + value.length); + return this; + } + /** + * Writes a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeStringNT(value, arg2, encoding) { + // Write Values + this.writeString(value, arg2, encoding); + this.writeUInt8(0x00, typeof arg2 === 'number' ? arg2 + value.length : this.writeOffset); + return this; + } + // Buffers + /** + * Reads a Buffer from the internal read position. + * + * @param length { Number } The length of data to read as a Buffer. + * + * @return { Buffer } + */ + readBuffer(length) { + if (typeof length !== 'undefined') { + utils_1.checkLengthValue(length); + } + const lengthVal = typeof length === 'number' ? length : this.length; + const endPoint = Math.min(this.length, this._readOffset + lengthVal); + // Read buffer value + const value = this._buff.slice(this._readOffset, endPoint); + // Increment internal Buffer read offset + this._readOffset = endPoint; + return value; + } + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBuffer(value, offset) { + utils_1.checkOffsetValue(offset); + return this._handleBuffer(value, true, offset); + } + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBuffer(value, offset) { + return this._handleBuffer(value, false, offset); + } + /** + * Reads a null-terminated Buffer from the current read poisiton. + * + * @return { Buffer } + */ + readBufferNT() { + // Set null character position to the end SmartBuffer instance. + let nullPos = this.length; + // Find next null character (if one is not found, default from above is used) + for (let i = this._readOffset; i < this.length; i++) { + if (this._buff[i] === 0x00) { + nullPos = i; + break; + } + } + // Read value + const value = this._buff.slice(this._readOffset, nullPos); + // Increment internal Buffer read offset + this._readOffset = nullPos + 1; + return value; + } + /** + * Inserts a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBufferNT(value, offset) { + utils_1.checkOffsetValue(offset); + // Write Values + this.insertBuffer(value, offset); + this.insertUInt8(0x00, offset + value.length); + return this; + } + /** + * Writes a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBufferNT(value, offset) { + // Checks for valid numberic value; + if (typeof offset !== 'undefined') { + utils_1.checkOffsetValue(offset); + } + // Write Values + this.writeBuffer(value, offset); + this.writeUInt8(0x00, typeof offset === 'number' ? offset + value.length : this._writeOffset); + return this; + } + /** + * Clears the SmartBuffer instance to its original empty state. + */ + clear() { + this._writeOffset = 0; + this._readOffset = 0; + this.length = 0; + return this; + } + /** + * Gets the remaining data left to be read from the SmartBuffer instance. + * + * @return { Number } + */ + remaining() { + return this.length - this._readOffset; + } + /** + * Gets the current read offset value of the SmartBuffer instance. + * + * @return { Number } + */ + get readOffset() { + return this._readOffset; + } + /** + * Sets the read offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + set readOffset(offset) { + utils_1.checkOffsetValue(offset); + // Check for bounds. + utils_1.checkTargetOffset(offset, this); + this._readOffset = offset; + } + /** + * Gets the current write offset value of the SmartBuffer instance. + * + * @return { Number } + */ + get writeOffset() { + return this._writeOffset; + } + /** + * Sets the write offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + set writeOffset(offset) { + utils_1.checkOffsetValue(offset); + // Check for bounds. + utils_1.checkTargetOffset(offset, this); + this._writeOffset = offset; + } + /** + * Gets the currently set string encoding of the SmartBuffer instance. + * + * @return { BufferEncoding } The string Buffer encoding currently set. + */ + get encoding() { + return this._encoding; + } + /** + * Sets the string encoding of the SmartBuffer instance. + * + * @param encoding { BufferEncoding } The string Buffer encoding to set. + */ + set encoding(encoding) { + utils_1.checkEncoding(encoding); + this._encoding = encoding; + } + /** + * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer) + * + * @return { Buffer } The Buffer value. + */ + get internalBuffer() { + return this._buff; + } + /** + * Gets the value of the internal managed Buffer (Includes managed data only) + * + * @param { Buffer } + */ + toBuffer() { + return this._buff.slice(0, this.length); + } + /** + * Gets the String value of the internal managed Buffer + * + * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding). + */ + toString(encoding) { + const encodingVal = typeof encoding === 'string' ? encoding : this._encoding; + // Check for invalid encoding. + utils_1.checkEncoding(encodingVal); + return this._buff.toString(encodingVal, 0, this.length); + } + /** + * Destroys the SmartBuffer instance. + */ + destroy() { + this.clear(); + return this; + } + /** + * Handles inserting and writing strings. + * + * @param value { String } The String value to insert. + * @param isInsert { Boolean } True if inserting a string, false if writing. + * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + */ + _handleString(value, isInsert, arg3, encoding) { + let offsetVal = this._writeOffset; + let encodingVal = this._encoding; + // Check for offset + if (typeof arg3 === 'number') { + offsetVal = arg3; + // Check for encoding + } + else if (typeof arg3 === 'string') { + utils_1.checkEncoding(arg3); + encodingVal = arg3; + } + // Check for encoding (third param) + if (typeof encoding === 'string') { + utils_1.checkEncoding(encoding); + encodingVal = encoding; + } + // Calculate bytelength of string. + const byteLength = Buffer.byteLength(value, encodingVal); + // Ensure there is enough internal Buffer capacity. + if (isInsert) { + this.ensureInsertable(byteLength, offsetVal); + } + else { + this._ensureWriteable(byteLength, offsetVal); + } + // Write value + this._buff.write(value, offsetVal, byteLength, encodingVal); + // Increment internal Buffer write offset; + if (isInsert) { + this._writeOffset += byteLength; + } + else { + // If an offset was given, check to see if we wrote beyond the current writeOffset. + if (typeof arg3 === 'number') { + this._writeOffset = Math.max(this._writeOffset, offsetVal + byteLength); + } + else { + // If no offset was given, we wrote to the end of the SmartBuffer so increment writeOffset. + this._writeOffset += byteLength; + } + } + return this; + } + /** + * Handles writing or insert of a Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + */ + _handleBuffer(value, isInsert, offset) { + const offsetVal = typeof offset === 'number' ? offset : this._writeOffset; + // Ensure there is enough internal Buffer capacity. + if (isInsert) { + this.ensureInsertable(value.length, offsetVal); + } + else { + this._ensureWriteable(value.length, offsetVal); + } + // Write buffer value + value.copy(this._buff, offsetVal); + // Increment internal Buffer write offset; + if (isInsert) { + this._writeOffset += value.length; + } + else { + // If an offset was given, check to see if we wrote beyond the current writeOffset. + if (typeof offset === 'number') { + this._writeOffset = Math.max(this._writeOffset, offsetVal + value.length); + } + else { + // If no offset was given, we wrote to the end of the SmartBuffer so increment writeOffset. + this._writeOffset += value.length; + } + } + return this; + } + /** + * Ensures that the internal Buffer is large enough to read data. + * + * @param length { Number } The length of the data that needs to be read. + * @param offset { Number } The offset of the data that needs to be read. + */ + ensureReadable(length, offset) { + // Offset value defaults to managed read offset. + let offsetVal = this._readOffset; + // If an offset was provided, use it. + if (typeof offset !== 'undefined') { + // Checks for valid numberic value; + utils_1.checkOffsetValue(offset); + // Overide with custom offset. + offsetVal = offset; + } + // Checks if offset is below zero, or the offset+length offset is beyond the total length of the managed data. + if (offsetVal < 0 || offsetVal + length > this.length) { + throw new Error(utils_1.ERRORS.INVALID_READ_BEYOND_BOUNDS); + } + } + /** + * Ensures that the internal Buffer is large enough to insert data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written. + */ + ensureInsertable(dataLength, offset) { + // Checks for valid numberic value; + utils_1.checkOffsetValue(offset); + // Ensure there is enough internal Buffer capacity. + this._ensureCapacity(this.length + dataLength); + // If an offset was provided and its not the very end of the buffer, copy data into appropriate location in regards to the offset. + if (offset < this.length) { + this._buff.copy(this._buff, offset + dataLength, offset, this._buff.length); + } + // Adjust tracked smart buffer length + if (offset + dataLength > this.length) { + this.length = offset + dataLength; + } + else { + this.length += dataLength; + } + } + /** + * Ensures that the internal Buffer is large enough to write data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written (defaults to writeOffset). + */ + _ensureWriteable(dataLength, offset) { + const offsetVal = typeof offset === 'number' ? offset : this._writeOffset; + // Ensure enough capacity to write data. + this._ensureCapacity(offsetVal + dataLength); + // Adjust SmartBuffer length (if offset + length is larger than managed length, adjust length) + if (offsetVal + dataLength > this.length) { + this.length = offsetVal + dataLength; + } + } + /** + * Ensures that the internal Buffer is large enough to write at least the given amount of data. + * + * @param minLength { Number } The minimum length of the data needs to be written. + */ + _ensureCapacity(minLength) { + const oldLength = this._buff.length; + if (minLength > oldLength) { + let data = this._buff; + let newLength = (oldLength * 3) / 2 + 1; + if (newLength < minLength) { + newLength = minLength; + } + this._buff = Buffer.allocUnsafe(newLength); + data.copy(this._buff, 0, 0, oldLength); + } + } + /** + * Reads a numeric number value using the provided function. + * + * @typeparam T { number | bigint } The type of the value to be read + * + * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with. + * @param byteSize { Number } The number of bytes read. + * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead. + * + * @returns { T } the number value + */ + _readNumberValue(func, byteSize, offset) { + this.ensureReadable(byteSize, offset); + // Call Buffer.readXXXX(); + const value = func.call(this._buff, typeof offset === 'number' ? offset : this._readOffset); + // Adjust internal read offset if an optional read offset was not provided. + if (typeof offset === 'undefined') { + this._readOffset += byteSize; + } + return value; + } + /** + * Inserts a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + _insertNumberValue(func, byteSize, value, offset) { + // Check for invalid offset values. + utils_1.checkOffsetValue(offset); + // Ensure there is enough internal Buffer capacity. (raw offset is passed) + this.ensureInsertable(byteSize, offset); + // Call buffer.writeXXXX(); + func.call(this._buff, value, offset); + // Adjusts internally managed write offset. + this._writeOffset += byteSize; + return this; + } + /** + * Writes a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + _writeNumberValue(func, byteSize, value, offset) { + // If an offset was provided, validate it. + if (typeof offset === 'number') { + // Check if we're writing beyond the bounds of the managed data. + if (offset < 0) { + throw new Error(utils_1.ERRORS.INVALID_WRITE_BEYOND_BOUNDS); + } + utils_1.checkOffsetValue(offset); + } + // Default to writeOffset if no offset value was given. + const offsetVal = typeof offset === 'number' ? offset : this._writeOffset; + // Ensure there is enough internal Buffer capacity. (raw offset is passed) + this._ensureWriteable(byteSize, offsetVal); + func.call(this._buff, value, offsetVal); + // If an offset was given, check to see if we wrote beyond the current writeOffset. + if (typeof offset === 'number') { + this._writeOffset = Math.max(this._writeOffset, offsetVal + byteSize); + } + else { + // If no numeric offset was given, we wrote to the end of the SmartBuffer so increment writeOffset. + this._writeOffset += byteSize; + } + return this; + } +} +exports.SmartBuffer = SmartBuffer; +//# sourceMappingURL=smartbuffer.js.map \ No newline at end of file diff --git a/node/node_modules/smart-buffer/build/smartbuffer.js.map b/node/node_modules/smart-buffer/build/smartbuffer.js.map new file mode 100644 index 0000000000000000000000000000000000000000..37f0d6e16fc682ee4844ec6f58d63c4c14c1b59d --- /dev/null +++ b/node/node_modules/smart-buffer/build/smartbuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"smartbuffer.js","sourceRoot":"","sources":["../src/smartbuffer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/smart-buffer/build/utils.js b/node/node_modules/smart-buffer/build/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..6d55981234aa83e3b0aece2f963343151f21c137 --- /dev/null +++ b/node/node_modules/smart-buffer/build/utils.js @@ -0,0 +1,108 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const buffer_1 = require("buffer"); +/** + * Error strings + */ +const ERRORS = { + INVALID_ENCODING: 'Invalid encoding provided. Please specify a valid encoding the internal Node.js Buffer supports.', + INVALID_SMARTBUFFER_SIZE: 'Invalid size provided. Size must be a valid integer greater than zero.', + INVALID_SMARTBUFFER_BUFFER: 'Invalid Buffer provided in SmartBufferOptions.', + INVALID_SMARTBUFFER_OBJECT: 'Invalid SmartBufferOptions object supplied to SmartBuffer constructor or factory methods.', + INVALID_OFFSET: 'An invalid offset value was provided.', + INVALID_OFFSET_NON_NUMBER: 'An invalid offset value was provided. A numeric value is required.', + INVALID_LENGTH: 'An invalid length value was provided.', + INVALID_LENGTH_NON_NUMBER: 'An invalid length value was provived. A numeric value is required.', + INVALID_TARGET_OFFSET: 'Target offset is beyond the bounds of the internal SmartBuffer data.', + INVALID_TARGET_LENGTH: 'Specified length value moves cursor beyong the bounds of the internal SmartBuffer data.', + INVALID_READ_BEYOND_BOUNDS: 'Attempted to read beyond the bounds of the managed data.', + INVALID_WRITE_BEYOND_BOUNDS: 'Attempted to write beyond the bounds of the managed data.' +}; +exports.ERRORS = ERRORS; +/** + * Checks if a given encoding is a valid Buffer encoding. (Throws an exception if check fails) + * + * @param { String } encoding The encoding string to check. + */ +function checkEncoding(encoding) { + if (!buffer_1.Buffer.isEncoding(encoding)) { + throw new Error(ERRORS.INVALID_ENCODING); + } +} +exports.checkEncoding = checkEncoding; +/** + * Checks if a given number is a finite integer. (Throws an exception if check fails) + * + * @param { Number } value The number value to check. + */ +function isFiniteInteger(value) { + return typeof value === 'number' && isFinite(value) && isInteger(value); +} +exports.isFiniteInteger = isFiniteInteger; +/** + * Checks if an offset/length value is valid. (Throws an exception if check fails) + * + * @param value The value to check. + * @param offset True if checking an offset, false if checking a length. + */ +function checkOffsetOrLengthValue(value, offset) { + if (typeof value === 'number') { + // Check for non finite/non integers + if (!isFiniteInteger(value) || value < 0) { + throw new Error(offset ? ERRORS.INVALID_OFFSET : ERRORS.INVALID_LENGTH); + } + } + else { + throw new Error(offset ? ERRORS.INVALID_OFFSET_NON_NUMBER : ERRORS.INVALID_LENGTH_NON_NUMBER); + } +} +/** + * Checks if a length value is valid. (Throws an exception if check fails) + * + * @param { Number } length The value to check. + */ +function checkLengthValue(length) { + checkOffsetOrLengthValue(length, false); +} +exports.checkLengthValue = checkLengthValue; +/** + * Checks if a offset value is valid. (Throws an exception if check fails) + * + * @param { Number } offset The value to check. + */ +function checkOffsetValue(offset) { + checkOffsetOrLengthValue(offset, true); +} +exports.checkOffsetValue = checkOffsetValue; +/** + * Checks if a target offset value is out of bounds. (Throws an exception if check fails) + * + * @param { Number } offset The offset value to check. + * @param { SmartBuffer } buff The SmartBuffer instance to check against. + */ +function checkTargetOffset(offset, buff) { + if (offset < 0 || offset > buff.length) { + throw new Error(ERRORS.INVALID_TARGET_OFFSET); + } +} +exports.checkTargetOffset = checkTargetOffset; +/** + * Determines whether a given number is a integer. + * @param value The number to check. + */ +function isInteger(value) { + return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; +} +/** + * Throws if Node.js version is too low to support bigint + */ +function bigIntAndBufferInt64Check(bufferMethod) { + if (typeof BigInt === 'undefined') { + throw new Error('Platform does not support JS BigInt type.'); + } + if (typeof buffer_1.Buffer.prototype[bufferMethod] === 'undefined') { + throw new Error(`Platform does not support Buffer.prototype.${bufferMethod}.`); + } +} +exports.bigIntAndBufferInt64Check = bigIntAndBufferInt64Check; +//# sourceMappingURL=utils.js.map \ No newline at end of file diff --git a/node/node_modules/smart-buffer/build/utils.js.map b/node/node_modules/smart-buffer/build/utils.js.map new file mode 100644 index 0000000000000000000000000000000000000000..fc7388d3b7010ce12ce13ecbcf3ced42ffbc5ee7 --- /dev/null +++ b/node/node_modules/smart-buffer/build/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AACA,mCAAgC;AAEhC;;GAEG;AACH,MAAM,MAAM,GAAG;IACb,gBAAgB,EAAE,kGAAkG;IACpH,wBAAwB,EAAE,wEAAwE;IAClG,0BAA0B,EAAE,gDAAgD;IAC5E,0BAA0B,EAAE,2FAA2F;IACvH,cAAc,EAAE,uCAAuC;IACvD,yBAAyB,EAAE,oEAAoE;IAC/F,cAAc,EAAE,uCAAuC;IACvD,yBAAyB,EAAE,oEAAoE;IAC/F,qBAAqB,EAAE,sEAAsE;IAC7F,qBAAqB,EAAE,yFAAyF;IAChH,0BAA0B,EAAE,0DAA0D;IACtF,2BAA2B,EAAE,2DAA2D;CACzF,CAAC;AAuGA,wBAAM;AArGR;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAwB;IAC7C,IAAI,CAAC,eAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAC1C;AACH,CAAC;AA4F0B,sCAAa;AA1FxC;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAmFS,0CAAe;AAjFzB;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAAU,EAAE,MAAe;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,oCAAoC;QACpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;SACzE;KACF;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;KAC/F;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAW;IACnC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AA0DC,4CAAgB;AAxDlB;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAW;IACnC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAgDyC,4CAAgB;AA9C1D;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,IAAiB;IAC1D,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;KAC/C;AACH,CAAC;AAqCmB,8CAAiB;AAnCrC;;;GAGG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACrF,CAAC;AAcD;;GAEG;AACH,SAAS,yBAAyB,CAAC,YAA0B;IAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,IAAI,OAAO,eAAM,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,WAAW,EAAE;QACzD,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,GAAG,CAAC,CAAC;KAChF;AACH,CAAC;AAIsC,8DAAyB"} \ No newline at end of file diff --git a/node/node_modules/smart-buffer/docs/CHANGELOG.md b/node/node_modules/smart-buffer/docs/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..1199a4d6d2353aa455f756bfeff925723c0d535e --- /dev/null +++ b/node/node_modules/smart-buffer/docs/CHANGELOG.md @@ -0,0 +1,70 @@ +# Change Log +## 4.1.0 +> Released 07/24/2019 +* Adds int64 support for node v12+ +* Drops support for node v4 + +## 4.0 +> Released 10/21/2017 +* Major breaking changes arriving in v4. + +### New Features +* Ability to read data from a specific offset. ex: readInt8(5) +* Ability to write over data when an offset is given (see breaking changes) ex: writeInt8(5, 0); +* Ability to set internal read and write offsets. + + + +### Breaking Changes + +* Old constructor patterns have been completely removed. It's now required to use the SmartBuffer.fromXXX() factory constructors. Read more on the v4 docs. +* rewind(), skip(), moveTo() have been removed. +* Internal private properties are now prefixed with underscores (_). +* **All** writeXXX() methods that are given an offset will now **overwrite data** instead of insert +* insertXXX() methods have been added for when you want to insert data at a specific offset (this replaces the old behavior of writeXXX() when an offset was provided) + + +### Other Changes +* Standardizd error messaging +* Standardized offset/length bounds and sanity checking +* General overall cleanup of code. + +## 3.0.3 +> Released 02/19/2017 +* Adds missing type definitions for some internal functions. + +## 3.0.2 +> Released 02/17/2017 + +### Bug Fixes +* Fixes a bug where using readString with a length of zero resulted in reading the remaining data instead of returning an empty string. (Fixed by Seldszar) + +## 3.0.1 +> Released 02/15/2017 + +### Bug Fixes +* Fixes a bug leftover from the TypeScript refactor where .readIntXXX() resulted in .readUIntXXX() being called by mistake. + +## 3.0 +> Released 02/12/2017 + +### Bug Fixes +* readUIntXXXX() methods will now throw an exception if they attempt to read beyond the bounds of the valid buffer data available. + * **Note** This is technically a breaking change, so version is bumped to 3.x. + +## 2.0 +> Relased 01/30/2017 + +### New Features: + +* Entire package re-written in TypeScript (2.1) +* Backwards compatibility is preserved for now +* New factory methods for creating SmartBuffer instances + * SmartBuffer.fromSize() + * SmartBuffer.fromBuffer() + * SmartBuffer.fromOptions() +* New SmartBufferOptions constructor options +* Added additional tests + +### Bug Fixes: +* Fixes a bug where reading null terminated strings may result in an exception. diff --git a/node/node_modules/smart-buffer/docs/README_v3.md b/node/node_modules/smart-buffer/docs/README_v3.md new file mode 100644 index 0000000000000000000000000000000000000000..b7c48b8b5444ee01cb11ef848a0c9ee6cce6f556 --- /dev/null +++ b/node/node_modules/smart-buffer/docs/README_v3.md @@ -0,0 +1,367 @@ +smart-buffer [![Build Status](https://travis-ci.org/JoshGlazebrook/smart-buffer.svg?branch=master)](https://travis-ci.org/JoshGlazebrook/smart-buffer) [![Coverage Status](https://coveralls.io/repos/github/JoshGlazebrook/smart-buffer/badge.svg?branch=master)](https://coveralls.io/github/JoshGlazebrook/smart-buffer?branch=master) +============= + +smart-buffer is a light Buffer wrapper that takes away the need to keep track of what position to read and write data to and from the underlying Buffer. It also adds null terminating string operations and **grows** as you add more data. + +![stats](https://nodei.co/npm/smart-buffer.png?downloads=true&downloadRank=true&stars=true "stats") + +### What it's useful for: + +I created smart-buffer because I wanted to simplify the process of using Buffer for building and reading network packets to send over a socket. Rather than having to keep track of which position I need to write a UInt16 to after adding a string of variable length, I simply don't have to. + +Key Features: +* Proxies all of the Buffer write and read functions. +* Keeps track of read and write positions for you. +* Grows the internal Buffer as you add data to it. +* Useful string operations. (Null terminating strings) +* Allows for inserting values at specific points in the internal Buffer. +* Built in TypeScript +* Type Definitions Provided + +Requirements: +* Node v4.0+ is supported at this time. (Versions prior to 2.0 will work on node 0.10) + + +#### Note: +smart-buffer can be used for writing to an underlying buffer as well as reading from it. It however does not function correctly if you're mixing both read and write operations with each other. + +## Breaking Changes with 2.0 +The latest version (2.0+) is written in TypeScript, and are compiled to ES6 Javascript. This means the earliest Node.js it supports will be 4.x (in strict mode.) If you're using version 6 and above it will work without any issues. From an API standpoint, 2.0 is backwards compatible. The only difference is SmartBuffer is not exported directly as the root module. + +## Breaking Changes with 3.0 +Starting with 3.0, if any of the readIntXXXX() methods are called and the requested data is larger than the bounds of the internally managed valid buffer data, an exception will now be thrown. + +## Installing: + +`npm install smart-buffer` + +or + +`yarn add smart-buffer` + +Note: The published NPM package includes the built javascript library. +If you cloned this repo and wish to build the library manually use: + +`tsc -p ./` + +## Using smart-buffer + +### Example + +Say you were building a packet that had to conform to the following protocol: + +`[PacketType:2][PacketLength:2][Data:XX]` + +To build this packet using the vanilla Buffer class, you would have to count up the length of the data payload beforehand. You would also need to keep track of the current "cursor" position in your Buffer so you write everything in the right places. With smart-buffer you don't have to do either of those things. + +```javascript +// 1.x (javascript) +var SmartBuffer = require('smart-buffer'); + +// 1.x (typescript) +import SmartBuffer = require('smart-buffer'); + +// 2.x+ (javascript) +const SmartBuffer = require('smart-buffer').SmartBuffer; + +// 2.x+ (typescript) +import { SmartBuffer, SmartBufferOptions} from 'smart-buffer'; + +function createLoginPacket(username, password, age, country) { + let packet = new SmartBuffer(); + packet.writeUInt16LE(0x0060); // Login Packet Type/ID + packet.writeStringNT(username); + packet.writeStringNT(password); + packet.writeUInt8(age); + packet.writeStringNT(country); + packet.writeUInt16LE(packet.length - 2, 2); + + return packet.toBuffer(); +} +``` +With the above function, you now can do this: +```javascript +let login = createLoginPacket("Josh", "secret123", 22, "United States"); + +// +``` +Notice that the `[PacketLength:2]` part of the packet was inserted after we had added everything else, and as shown in the Buffer dump above, is in the correct location along with everything else. + +Reading back the packet we created above is just as easy: +```javascript + +let reader = SmartBuffer.fromBuffer(login); + +let logininfo = { + packetType: reader.readUInt16LE(), + packetLength: reader.readUInt16LE(), + username: reader.readStringNT(), + password: reader.readStringNT(), + age: reader.readUInt8(), + country: reader.readStringNT() +}; + +/* +{ + packetType: 96, (0x0060) + packetLength: 30, + username: 'Josh', + password: 'secret123', + age: 22, + country: 'United States' +}; +*/ +``` + +# Api Reference: + +### Constructing a smart-buffer + +smart-buffer has a few different ways to construct an instance. Starting with version 2.0, the following factory methods are preffered. + +```javascript +let SmartBuffer = require('smart-buffer'); + +// Creating SmartBuffer from existing Buffer +let buff = SmartBuffer.fromBuffer(buffer); // Creates instance from buffer. (Uses default utf8 encoding) +let buff = SmartBuffer.fromBuffer(buffer, 'ascii'); // Creates instance from buffer with ascii encoding for Strings. + +// Creating SmartBuffer with specified internal Buffer size. +let buff = SmartBuffer.fromSize(1024); // Creates instance with internal Buffer size of 1024. +let buff = SmartBuffer.fromSize(1024, 'utf8'); // Creates instance with intenral Buffer size of 1024, and utf8 encoding. + +// Creating SmartBuffer with options object. This one specifies size and encoding. +let buff = SmartBuffer.fromOptions({ + size: 1024, + encoding: 'ascii' +}); + +// Creating SmartBuffer with options object. This one specified an existing Buffer. +let buff = SmartBuffer.fromOptions({ + buff: buffer +}); + +// Just want a regular SmartBuffer with all default options? +let buff = new SmartBuffer(); +``` + +## Backwards Compatibility: + +All constructors used prior to 2.0 still are supported. However it's not recommended to use these. + +```javascript +let writer = new SmartBuffer(); // Defaults to utf8, 4096 length internal Buffer. +let writer = new SmartBuffer(1024); // Defaults to utf8, 1024 length internal Buffer. +let writer = new SmartBuffer('ascii'); // Sets to ascii encoding, 4096 length internal buffer. +let writer = new SmartBuffer(1024, 'ascii'); // Sets to ascii encoding, 1024 length internal buffer. +``` + +## Reading Data + +smart-buffer supports all of the common read functions you will find in the vanilla Buffer class. The only difference is, you do not need to specify which location to start reading from. This is possible because as you read data out of a smart-buffer, it automatically progresses an internal read offset/position to know where to pick up from on the next read. + +## Reading Numeric Values + +When numeric values, you simply need to call the function you want, and the data is returned. + +Supported Operations: +* readInt8 +* readInt16BE +* readInt16LE +* readInt32BE +* readInt32LE +* readBigInt64LE +* readBigInt64BE +* readUInt8 +* readUInt16BE +* readUInt16LE +* readUInt32BE +* readUInt32LE +* readBigUInt64LE +* readBigUInt64BE +* readFloatBE +* readFloatLE +* readDoubleBE +* readDoubleLE + +```javascript +let reader = new SmartBuffer(somebuffer); +let num = reader.readInt8(); +``` + +## Reading String Values + +When reading String values, you can either choose to read a null terminated string, or a string of a specified length. + +### SmartBuffer.readStringNT( [encoding] ) +> `String` **String encoding to use** - Defaults to the encoding set in the constructor. + +returns `String` + +> Note: When readStringNT is called and there is no null character found, smart-buffer will read to the end of the internal Buffer. + +### SmartBuffer.readString( [length] ) +### SmartBuffer.readString( [encoding] ) +### SmartBuffer.readString( [length], [encoding] ) +> `Number` **Length of the string to read** + +> `String` **String encoding to use** - Defaults to the encoding set in the constructor, or utf8. + +returns `String` + +> Note: When readString is called without a specified length, smart-buffer will read to the end of the internal Buffer. + + + +## Reading Buffer Values + +### SmartBuffer.readBuffer( length ) +> `Number` **Length of data to read into a Buffer** + +returns `Buffer` + +> Note: This function uses `slice` to retrieve the Buffer. + + +### SmartBuffer.readBufferNT() + +returns `Buffer` + +> Note: This reads the next sequence of bytes in the buffer until a null (0x00) value is found. (Null terminated buffer) +> Note: This function uses `slice` to retrieve the Buffer. + + +## Writing Data + +smart-buffer supports all of the common write functions you will find in the vanilla Buffer class. The only difference is, you do not need to specify which location to write to in your Buffer by default. You do however have the option of **inserting** a piece of data into your smart-buffer at a given location. + + +## Writing Numeric Values + + +For numeric values, you simply need to call the function you want, and the data is written at the end of the internal Buffer's current write position. You can specify a offset/position to **insert** the given value at, but keep in mind this does not override data at the given position. This feature also does not work properly when inserting a value beyond the current internal length of the smart-buffer (length being the .length property of the smart-buffer instance you're writing to) + +Supported Operations: +* writeInt8 +* writeInt16BE +* writeInt16LE +* writeInt32BE +* writeInt32LE +* writeBigInt64BE +* writeBigInt64LE +* writeUInt8 +* writeUInt16BE +* writeUInt16LE +* writeUInt32BE +* writeUInt32LE +* writeBigUInt64BE +* writeBigUInt64LE +* writeFloatBE +* writeFloatLE +* writeDoubleBE +* writeDoubleLE + +The following signature is the same for all the above functions: + +### SmartBuffer.writeInt8( value, [offset] ) +> `Number` **A valid Int8 number** + +> `Number` **The position to insert this value at** + +returns this + +> Note: All write operations return `this` to allow for chaining. + +## Writing String Values + +When reading String values, you can either choose to write a null terminated string, or a non null terminated string. + +### SmartBuffer.writeStringNT( value, [offset], [encoding] ) +### SmartBuffer.writeStringNT( value, [offset] ) +### SmartBuffer.writeStringNT( value, [encoding] ) +> `String` **String value to write** + +> `Number` **The position to insert this String at** + +> `String` **The String encoding to use.** - Defaults to the encoding set in the constructor, or utf8. + +returns this + +### SmartBuffer.writeString( value, [offset], [encoding] ) +### SmartBuffer.writeString( value, [offset] ) +### SmartBuffer.writeString( value, [encoding] ) +> `String` **String value to write** + +> `Number` **The position to insert this String at** + +> `String` **The String encoding to use** - Defaults to the encoding set in the constructor, or utf8. + +returns this + + +## Writing Buffer Values + +### SmartBuffer.writeBuffer( value, [offset] ) +> `Buffer` **Buffer value to write** + +> `Number` **The position to insert this Buffer's content at** + +returns this + +### SmartBuffer.writeBufferNT( value, [offset] ) +> `Buffer` **Buffer value to write** + +> `Number` **The position to insert this Buffer's content at** + +returns this + + +## Utility Functions + +### SmartBuffer.clear() +Resets the SmartBuffer to its default state where it can be reused for reading or writing. + +### SmartBuffer.remaining() + +returns `Number` The amount of data left to read based on the current read Position. + +### SmartBuffer.skip( value ) +> `Number` **The amount of bytes to skip ahead** + +Skips the read position ahead by the given value. + +returns this + +### SmartBuffer.rewind( value ) +> `Number` **The amount of bytes to reward backwards** + +Rewinds the read position backwards by the given value. + +returns this + +### SmartBuffer.moveTo( position ) +> `Number` **The point to skip the read position to** + +Moves the read position to the given point. +returns this + +### SmartBuffer.toBuffer() + +returns `Buffer` A Buffer containing the contents of the internal Buffer. + +> Note: This uses the slice function. + +### SmartBuffer.toString( [encoding] ) +> `String` **The String encoding to use** - Defaults to the encoding set in the constructor, or utf8. + +returns `String` The internal Buffer in String representation. + +## Properties + +### SmartBuffer.length + +returns `Number` **The length of the data that is being tracked in the internal Buffer** - Does NOT return the absolute length of the internal Buffer being written to. + +## License + +This work is licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License). \ No newline at end of file diff --git a/node/node_modules/smart-buffer/docs/ROADMAP.md b/node/node_modules/smart-buffer/docs/ROADMAP.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/smart-buffer/package.json b/node/node_modules/smart-buffer/package.json new file mode 100644 index 0000000000000000000000000000000000000000..2f326f248955afb6703d161d49749b1a7d583bd0 --- /dev/null +++ b/node/node_modules/smart-buffer/package.json @@ -0,0 +1,79 @@ +{ + "name": "smart-buffer", + "version": "4.2.0", + "description": "smart-buffer is a Buffer wrapper that adds automatic read & write offset tracking, string operations, data insertions, and more.", + "main": "build/smartbuffer.js", + "contributors": ["syvita"], + "homepage": "https://github.com/JoshGlazebrook/smart-buffer/", + "repository": { + "type": "git", + "url": "https://github.com/JoshGlazebrook/smart-buffer.git" + }, + "bugs": { + "url": "https://github.com/JoshGlazebrook/smart-buffer/issues" + }, + "keywords": [ + "buffer", + "smart", + "packet", + "serialize", + "network", + "cursor", + "simple" + ], + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + }, + "author": "Josh Glazebrook", + "license": "MIT", + "readmeFilename": "README.md", + "devDependencies": { + "@types/chai": "4.1.7", + "@types/mocha": "5.2.7", + "@types/node": "^12.0.0", + "chai": "4.2.0", + "coveralls": "3.0.5", + "istanbul": "^0.4.5", + "mocha": "6.2.0", + "mocha-lcov-reporter": "^1.3.0", + "nyc": "14.1.1", + "source-map-support": "0.5.12", + "ts-node": "8.3.0", + "tslint": "5.18.0", + "typescript": "^3.2.1" + }, + "typings": "typings/smartbuffer.d.ts", + "dependencies": {}, + "scripts": { + "prepublish": "npm install -g typescript && npm run build", + "test": "NODE_ENV=test mocha --recursive --require ts-node/register test/**/*.ts", + "coverage": "NODE_ENV=test nyc npm test", + "coveralls": "NODE_ENV=test nyc npm test && nyc report --reporter=text-lcov | coveralls", + "lint": "tslint --type-check --project tsconfig.json 'src/**/*.ts'", + "build": "tsc -p ./" + }, + "nyc": { + "extension": [ + ".ts", + ".tsx" + ], + "include": [ + "src/*.ts", + "src/**/*.ts" + ], + "exclude": [ + "**.*.d.ts", + "node_modules", + "typings" + ], + "require": [ + "ts-node/register" + ], + "reporter": [ + "json", + "html" + ], + "all": true + } +} diff --git a/node/node_modules/smart-buffer/typings/smartbuffer.d.ts b/node/node_modules/smart-buffer/typings/smartbuffer.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d07379b2983a446bd0d40a79deced3bca291d890 --- /dev/null +++ b/node/node_modules/smart-buffer/typings/smartbuffer.d.ts @@ -0,0 +1,755 @@ +/// +/** + * Object interface for constructing new SmartBuffer instances. + */ +interface SmartBufferOptions { + encoding?: BufferEncoding; + size?: number; + buff?: Buffer; +} +declare class SmartBuffer { + length: number; + private _encoding; + private _buff; + private _writeOffset; + private _readOffset; + /** + * Creates a new SmartBuffer instance. + * + * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance. + */ + constructor(options?: SmartBufferOptions); + /** + * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding. + * + * @param size { Number } The size of the internal Buffer. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromSize(size: number, encoding?: BufferEncoding): SmartBuffer; + /** + * Creates a new SmartBuffer instance with the provided Buffer and optional encoding. + * + * @param buffer { Buffer } The Buffer to use as the internal Buffer value. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromBuffer(buff: Buffer, encoding?: BufferEncoding): SmartBuffer; + /** + * Creates a new SmartBuffer instance with the provided SmartBufferOptions options. + * + * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance. + */ + static fromOptions(options: SmartBufferOptions): SmartBuffer; + /** + * Type checking function that determines if an object is a SmartBufferOptions object. + */ + static isSmartBufferOptions(options: SmartBufferOptions): options is SmartBufferOptions; + /** + * Reads an Int8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt8(offset?: number): number; + /** + * Reads an Int16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16BE(offset?: number): number; + /** + * Reads an Int16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16LE(offset?: number): number; + /** + * Reads an Int32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32BE(offset?: number): number; + /** + * Reads an Int32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32LE(offset?: number): number; + /** + * Reads a BigInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64BE(offset?: number): bigint; + /** + * Reads a BigInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64LE(offset?: number): bigint; + /** + * Writes an Int8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt8(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt8(value: number, offset: number): SmartBuffer; + /** + * Writes an Int16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16BE(value: number, offset: number): SmartBuffer; + /** + * Writes an Int16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16LE(value: number, offset: number): SmartBuffer; + /** + * Writes an Int32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32BE(value: number, offset: number): SmartBuffer; + /** + * Writes an Int32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an Int32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32LE(value: number, offset: number): SmartBuffer; + /** + * Writes a BigInt64BE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64BE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a BigInt64BE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64BE(value: bigint, offset: number): SmartBuffer; + /** + * Writes a BigInt64LE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64LE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a Int64LE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64LE(value: bigint, offset: number): SmartBuffer; + /** + * Reads an UInt8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt8(offset?: number): number; + /** + * Reads an UInt16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16BE(offset?: number): number; + /** + * Reads an UInt16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16LE(offset?: number): number; + /** + * Reads an UInt32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32BE(offset?: number): number; + /** + * Reads an UInt32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32LE(offset?: number): number; + /** + * Reads a BigUInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64BE(offset?: number): bigint; + /** + * Reads a BigUInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64LE(offset?: number): bigint; + /** + * Writes an UInt8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt8(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt8(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16BE(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16LE(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32BE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32BE(value: number, offset: number): SmartBuffer; + /** + * Writes an UInt32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32LE(value: number, offset?: number): SmartBuffer; + /** + * Inserts an UInt32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32LE(value: number, offset: number): SmartBuffer; + /** + * Writes a BigUInt64BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64BE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a BigUInt64BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64BE(value: bigint, offset: number): SmartBuffer; + /** + * Writes a BigUInt64LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64LE(value: bigint, offset?: number): SmartBuffer; + /** + * Inserts a BigUInt64LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64LE(value: bigint, offset: number): SmartBuffer; + /** + * Reads an FloatBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatBE(offset?: number): number; + /** + * Reads an FloatLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatLE(offset?: number): number; + /** + * Writes a FloatBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatBE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a FloatBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatBE(value: number, offset: number): SmartBuffer; + /** + * Writes a FloatLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatLE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a FloatLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatLE(value: number, offset: number): SmartBuffer; + /** + * Reads an DoublEBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleBE(offset?: number): number; + /** + * Reads an DoubleLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleLE(offset?: number): number; + /** + * Writes a DoubleBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleBE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a DoubleBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleBE(value: number, offset: number): SmartBuffer; + /** + * Writes a DoubleLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleLE(value: number, offset?: number): SmartBuffer; + /** + * Inserts a DoubleLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleLE(value: number, offset: number): SmartBuffer; + /** + * Reads a String from the current read position. + * + * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for + * the string (Defaults to instance level encoding). + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readString(arg1?: number | BufferEncoding, encoding?: BufferEncoding): string; + /** + * Inserts a String + * + * @param value { String } The String value to insert. + * @param offset { Number } The offset to insert the string at. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertString(value: string, offset: number, encoding?: BufferEncoding): SmartBuffer; + /** + * Writes a String + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeString(value: string, arg2?: number | BufferEncoding, encoding?: BufferEncoding): SmartBuffer; + /** + * Reads a null-terminated String from the current read position. + * + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readStringNT(encoding?: BufferEncoding): string; + /** + * Inserts a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertStringNT(value: string, offset: number, encoding?: BufferEncoding): SmartBuffer; + /** + * Writes a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeStringNT(value: string, arg2?: number | BufferEncoding, encoding?: BufferEncoding): SmartBuffer; + /** + * Reads a Buffer from the internal read position. + * + * @param length { Number } The length of data to read as a Buffer. + * + * @return { Buffer } + */ + readBuffer(length?: number): Buffer; + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBuffer(value: Buffer, offset: number): SmartBuffer; + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBuffer(value: Buffer, offset?: number): SmartBuffer; + /** + * Reads a null-terminated Buffer from the current read poisiton. + * + * @return { Buffer } + */ + readBufferNT(): Buffer; + /** + * Inserts a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBufferNT(value: Buffer, offset: number): SmartBuffer; + /** + * Writes a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBufferNT(value: Buffer, offset?: number): SmartBuffer; + /** + * Clears the SmartBuffer instance to its original empty state. + */ + clear(): SmartBuffer; + /** + * Gets the remaining data left to be read from the SmartBuffer instance. + * + * @return { Number } + */ + remaining(): number; + /** + * Gets the current read offset value of the SmartBuffer instance. + * + * @return { Number } + */ + /** + * Sets the read offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + readOffset: number; + /** + * Gets the current write offset value of the SmartBuffer instance. + * + * @return { Number } + */ + /** + * Sets the write offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + writeOffset: number; + /** + * Gets the currently set string encoding of the SmartBuffer instance. + * + * @return { BufferEncoding } The string Buffer encoding currently set. + */ + /** + * Sets the string encoding of the SmartBuffer instance. + * + * @param encoding { BufferEncoding } The string Buffer encoding to set. + */ + encoding: BufferEncoding; + /** + * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer) + * + * @return { Buffer } The Buffer value. + */ + readonly internalBuffer: Buffer; + /** + * Gets the value of the internal managed Buffer (Includes managed data only) + * + * @param { Buffer } + */ + toBuffer(): Buffer; + /** + * Gets the String value of the internal managed Buffer + * + * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding). + */ + toString(encoding?: BufferEncoding): string; + /** + * Destroys the SmartBuffer instance. + */ + destroy(): SmartBuffer; + /** + * Handles inserting and writing strings. + * + * @param value { String } The String value to insert. + * @param isInsert { Boolean } True if inserting a string, false if writing. + * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + */ + private _handleString; + /** + * Handles writing or insert of a Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + */ + private _handleBuffer; + /** + * Ensures that the internal Buffer is large enough to read data. + * + * @param length { Number } The length of the data that needs to be read. + * @param offset { Number } The offset of the data that needs to be read. + */ + private ensureReadable; + /** + * Ensures that the internal Buffer is large enough to insert data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written. + */ + private ensureInsertable; + /** + * Ensures that the internal Buffer is large enough to write data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written (defaults to writeOffset). + */ + private _ensureWriteable; + /** + * Ensures that the internal Buffer is large enough to write at least the given amount of data. + * + * @param minLength { Number } The minimum length of the data needs to be written. + */ + private _ensureCapacity; + /** + * Reads a numeric number value using the provided function. + * + * @typeparam T { number | bigint } The type of the value to be read + * + * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with. + * @param byteSize { Number } The number of bytes read. + * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead. + * + * @returns { T } the number value + */ + private _readNumberValue; + /** + * Inserts a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + private _insertNumberValue; + /** + * Writes a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + private _writeNumberValue; +} +export { SmartBufferOptions, SmartBuffer }; diff --git a/node/node_modules/smart-buffer/typings/utils.d.ts b/node/node_modules/smart-buffer/typings/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b32b4d44c04c1da7065db01c8ea5b7136d1cd277 --- /dev/null +++ b/node/node_modules/smart-buffer/typings/utils.d.ts @@ -0,0 +1,66 @@ +/// +import { SmartBuffer } from './smartbuffer'; +import { Buffer } from 'buffer'; +/** + * Error strings + */ +declare const ERRORS: { + INVALID_ENCODING: string; + INVALID_SMARTBUFFER_SIZE: string; + INVALID_SMARTBUFFER_BUFFER: string; + INVALID_SMARTBUFFER_OBJECT: string; + INVALID_OFFSET: string; + INVALID_OFFSET_NON_NUMBER: string; + INVALID_LENGTH: string; + INVALID_LENGTH_NON_NUMBER: string; + INVALID_TARGET_OFFSET: string; + INVALID_TARGET_LENGTH: string; + INVALID_READ_BEYOND_BOUNDS: string; + INVALID_WRITE_BEYOND_BOUNDS: string; +}; +/** + * Checks if a given encoding is a valid Buffer encoding. (Throws an exception if check fails) + * + * @param { String } encoding The encoding string to check. + */ +declare function checkEncoding(encoding: BufferEncoding): void; +/** + * Checks if a given number is a finite integer. (Throws an exception if check fails) + * + * @param { Number } value The number value to check. + */ +declare function isFiniteInteger(value: number): boolean; +/** + * Checks if a length value is valid. (Throws an exception if check fails) + * + * @param { Number } length The value to check. + */ +declare function checkLengthValue(length: any): void; +/** + * Checks if a offset value is valid. (Throws an exception if check fails) + * + * @param { Number } offset The value to check. + */ +declare function checkOffsetValue(offset: any): void; +/** + * Checks if a target offset value is out of bounds. (Throws an exception if check fails) + * + * @param { Number } offset The offset value to check. + * @param { SmartBuffer } buff The SmartBuffer instance to check against. + */ +declare function checkTargetOffset(offset: number, buff: SmartBuffer): void; +interface Buffer { + readBigInt64BE(offset?: number): bigint; + readBigInt64LE(offset?: number): bigint; + readBigUInt64BE(offset?: number): bigint; + readBigUInt64LE(offset?: number): bigint; + writeBigInt64BE(value: bigint, offset?: number): number; + writeBigInt64LE(value: bigint, offset?: number): number; + writeBigUInt64BE(value: bigint, offset?: number): number; + writeBigUInt64LE(value: bigint, offset?: number): number; +} +/** + * Throws if Node.js version is too low to support bigint + */ +declare function bigIntAndBufferInt64Check(bufferMethod: keyof Buffer): void; +export { ERRORS, isFiniteInteger, checkEncoding, checkOffsetValue, checkLengthValue, checkTargetOffset, bigIntAndBufferInt64Check }; diff --git a/node/node_modules/socks/.eslintrc.cjs b/node/node_modules/socks/.eslintrc.cjs new file mode 100644 index 0000000000000000000000000000000000000000..cc5d089e61d168704b1c1ee951a89e2415dacae2 --- /dev/null +++ b/node/node_modules/socks/.eslintrc.cjs @@ -0,0 +1,11 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: [ + '@typescript-eslint', + ], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + ], +}; \ No newline at end of file diff --git a/node/node_modules/socks/.prettierrc.yaml b/node/node_modules/socks/.prettierrc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d7b7335049b99b5f4f006c0a3ce168dc28c5e5ca --- /dev/null +++ b/node/node_modules/socks/.prettierrc.yaml @@ -0,0 +1,7 @@ +parser: typescript +printWidth: 80 +tabWidth: 2 +singleQuote: true +trailingComma: all +arrowParens: always +bracketSpacing: false \ No newline at end of file diff --git a/node/node_modules/socks/LICENSE b/node/node_modules/socks/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..b2442a9e7132627a6299d6cf35ff406d4181b30e --- /dev/null +++ b/node/node_modules/socks/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Josh Glazebrook + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node/node_modules/socks/README.md b/node/node_modules/socks/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b796220c64a5a8d306bd1ad1dfaca9879b8f4821 --- /dev/null +++ b/node/node_modules/socks/README.md @@ -0,0 +1,686 @@ +# socks [![Build Status](https://travis-ci.org/JoshGlazebrook/socks.svg?branch=master)](https://travis-ci.org/JoshGlazebrook/socks) [![Coverage Status](https://coveralls.io/repos/github/JoshGlazebrook/socks/badge.svg?branch=master)](https://coveralls.io/github/JoshGlazebrook/socks?branch=v2) + +Fully featured SOCKS proxy client supporting SOCKSv4, SOCKSv4a, and SOCKSv5. Includes Bind and Associate functionality. + +> Looking for Node.js agent? Check [node-socks-proxy-agent](https://github.com/TooTallNate/node-socks-proxy-agent). + +### Features + +* Supports SOCKS v4, v4a, v5, and v5h protocols. +* Supports the CONNECT, BIND, and ASSOCIATE commands. +* Supports callbacks, promises, and events for proxy connection creation async flow control. +* Supports proxy chaining (CONNECT only). +* Supports user/password authentication. +* Supports custom authentication. +* Built in UDP frame creation & parse functions. +* Created with TypeScript, type definitions are provided. + +### Requirements + +* Node.js v10.0+ (Please use [v1](https://github.com/JoshGlazebrook/socks/tree/82d83923ad960693d8b774cafe17443ded7ed584) for older versions of Node.js) + +### Looking for v1? +* Docs for v1 are available [here](https://github.com/JoshGlazebrook/socks/tree/82d83923ad960693d8b774cafe17443ded7ed584) + +## Installation + +`yarn add socks` + +or + +`npm install --save socks` + +## Usage + +```typescript +// TypeScript +import { SocksClient, SocksClientOptions, SocksClientChainOptions } from 'socks'; + +// ES6 JavaScript +import { SocksClient } from 'socks'; + +// Legacy JavaScript +const SocksClient = require('socks').SocksClient; +``` + +## Quick Start Example + +Connect to github.com (192.30.253.113) on port 80, using a SOCKS proxy. + +```javascript +const options = { + proxy: { + host: '159.203.75.200', // ipv4 or ipv6 or hostname + port: 1080, + type: 5 // Proxy version (4 or 5) + }, + + command: 'connect', // SOCKS command (createConnection factory function only supports the connect command) + + destination: { + host: '192.30.253.113', // github.com (hostname lookups are supported with SOCKS v4a and 5) + port: 80 + } +}; + +// Async/Await +try { + const info = await SocksClient.createConnection(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) +} catch (err) { + // Handle errors +} + +// Promises +SocksClient.createConnection(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) +}) +.catch(err => { + // Handle errors +}); + +// Callbacks +SocksClient.createConnection(options, (err, info) => { + if (!err) { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) + } else { + // Handle errors + } +}); +``` + +## Chaining Proxies + +**Note:** Chaining is only supported when using the SOCKS connect command, and chaining can only be done through the special factory chaining function. + +This example makes a proxy chain through two SOCKS proxies to ip-api.com. Once the connection to the destination is established it sends an HTTP request to get a JSON response that returns ip info for the requesting ip. + +```javascript +const options = { + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + command: 'connect', // Only the connect command is supported when chaining proxies. + proxies: [ // The chain order is the order in the proxies array, meaning the last proxy will establish a connection to the destination. + { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + { + host: '104.131.124.203', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + } + ] +} + +// Async/Await +try { + const info = await SocksClient.createConnectionChain(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + console.log(info.socket.remoteAddress) // The remote address of the returned socket is the first proxy in the chain. + // 159.203.75.235 + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy in the chain (104.131.124.203) is connected to it. + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +} catch (err) { + // Handle errors +} + +// Promises +SocksClient.createConnectionChain(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) + + console.log(info.socket.remoteAddress) // The remote address of the returned socket is the first proxy in the chain. + // 159.203.75.235 + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy in the chain (104.131.124.203) is connected to it. + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +}) +.catch(err => { + // Handle errors +}); + +// Callbacks +SocksClient.createConnectionChain(options, (err, info) => { + if (!err) { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy server) + + console.log(info.socket.remoteAddress) // The remote address of the returned socket is the first proxy in the chain. + // 159.203.75.235 + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy in the chain (104.131.124.203) is connected to it. + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); + } else { + // Handle errors + } +}); +``` + +## Bind Example (TCP Relay) + +When the bind command is sent to a SOCKS v4/v5 proxy server, the proxy server starts listening on a new TCP port and the proxy relays then remote host information back to the client. When another remote client connects to the proxy server on this port the SOCKS proxy sends a notification that an incoming connection has been accepted to the initial client and a full duplex stream is now established to the initial client and the client that connected to that special port. + +```javascript +const options = { + proxy: { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + + command: 'bind', + + // When using BIND, the destination should be the remote client that is expected to connect to the SOCKS proxy. Using 0.0.0.0 makes the Proxy accept any incoming connection on that port. + destination: { + host: '0.0.0.0', + port: 0 + } +}; + +// Creates a new SocksClient instance. +const client = new SocksClient(options); + +// When the SOCKS proxy has bound a new port and started listening, this event is fired. +client.on('bound', info => { + console.log(info.remoteHost); + /* + { + host: "159.203.75.235", + port: 57362 + } + */ +}); + +// When a client connects to the newly bound port on the SOCKS proxy, this event is fired. +client.on('established', info => { + // info.remoteHost is the remote address of the client that connected to the SOCKS proxy. + console.log(info.remoteHost); + /* + host: 67.171.34.23, + port: 49823 + */ + + console.log(info.socket); + // (This is a raw net.Socket that is a connection between the initial client and the remote client that connected to the proxy) + + // Handle received data... + info.socket.on('data', data => { + console.log('recv', data); + }); +}); + +// An error occurred trying to establish this SOCKS connection. +client.on('error', err => { + console.error(err); +}); + +// Start connection to proxy +client.connect(); +``` + +## Associate Example (UDP Relay) + +When the associate command is sent to a SOCKS v5 proxy server, it sets up a UDP relay that allows the client to send UDP packets to a remote host through the proxy server, and also receive UDP packet responses back through the proxy server. + +```javascript +const options = { + proxy: { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + + command: 'associate', + + // When using associate, the destination should be the remote client that is expected to send UDP packets to the proxy server to be forwarded. This should be your local ip, or optionally the wildcard address (0.0.0.0) UDP Client <-> Proxy <-> UDP Client + destination: { + host: '0.0.0.0', + port: 0 + } +}; + +// Create a local UDP socket for sending packets to the proxy. +const udpSocket = dgram.createSocket('udp4'); +udpSocket.bind(); + +// Listen for incoming UDP packets from the proxy server. +udpSocket.on('message', (message, rinfo) => { + console.log(SocksClient.parseUDPFrame(message)); + /* + { frameNumber: 0, + remoteHost: { host: '165.227.108.231', port: 4444 }, // The remote host that replied with a UDP packet + data: // The data + } + */ +}); + +let client = new SocksClient(associateOptions); + +// When the UDP relay is established, this event is fired and includes the UDP relay port to send data to on the proxy server. +client.on('established', info => { + console.log(info.remoteHost); + /* + { + host: '159.203.75.235', + port: 44711 + } + */ + + // Send 'hello' to 165.227.108.231:4444 + const packet = SocksClient.createUDPFrame({ + remoteHost: { host: '165.227.108.231', port: 4444 }, + data: Buffer.from(line) + }); + udpSocket.send(packet, info.remoteHost.port, info.remoteHost.host); +}); + +// Start connection +client.connect(); +``` + +**Note:** The associate TCP connection to the proxy must remain open for the UDP relay to work. + +## Additional Examples + +[Documentation](docs/index.md) + + +## Migrating from v1 + +Looking for a guide to migrate from v1? Look [here](docs/migratingFromV1.md) + +## Api Reference: + +**Note:** socks includes full TypeScript definitions. These can even be used without using TypeScript as most IDEs (such as VS Code) will use these type definition files for auto completion intellisense even in JavaScript files. + +* Class: SocksClient + * [new SocksClient(options[, callback])](#new-socksclientoptions) + * [Class Method: SocksClient.createConnection(options[, callback])](#class-method-socksclientcreateconnectionoptions-callback) + * [Class Method: SocksClient.createConnectionChain(options[, callback])](#class-method-socksclientcreateconnectionchainoptions-callback) + * [Class Method: SocksClient.createUDPFrame(options)](#class-method-socksclientcreateudpframedetails) + * [Class Method: SocksClient.parseUDPFrame(data)](#class-method-socksclientparseudpframedata) + * [Event: 'error'](#event-error) + * [Event: 'bound'](#event-bound) + * [Event: 'established'](#event-established) + * [client.connect()](#clientconnect) + * [client.socksClientOptions](#clientconnect) + +### SocksClient + +SocksClient establishes SOCKS proxy connections to remote destination hosts. These proxy connections are fully transparent to the server and once established act as full duplex streams. SOCKS v4, v4a, v5, and v5h are supported, as well as the connect, bind, and associate commands. + +SocksClient supports creating connections using callbacks, promises, and async/await flow control using two static factory functions createConnection and createConnectionChain. It also internally extends EventEmitter which results in allowing event handling based async flow control. + +**SOCKS Compatibility Table** + +Note: When using 4a please specify type: 4, and when using 5h please specify type 5. + +| Socks Version | TCP | UDP | IPv4 | IPv6 | Hostname | +| --- | :---: | :---: | :---: | :---: | :---: | +| SOCKS v4 | ✅ | ❌ | ✅ | ❌ | ❌ | +| SOCKS v4a | ✅ | ❌ | ✅ | ❌ | ✅ | +| SOCKS v5 (includes v5h) | ✅ | ✅ | ✅ | ✅ | ✅ | + +### new SocksClient(options) + +* ```options``` {SocksClientOptions} - An object describing the SOCKS proxy to use, the command to send and establish, and the destination host to connect to. + +### SocksClientOptions + +```typescript +{ + proxy: { + host: '159.203.75.200', // ipv4, ipv6, or hostname + port: 1080, + type: 5, // Proxy version (4 or 5). For v4a use 4, for v5h use 5. + + // Optional fields + userId: 'some username', // Used for SOCKS4 userId auth, and SOCKS5 user/pass auth in conjunction with password. + password: 'some password', // Used in conjunction with userId for user/pass auth for SOCKS5 proxies. + custom_auth_method: 0x80, // If using a custom auth method, specify the type here. If this is set, ALL other custom_auth_*** options must be set as well. + custom_auth_request_handler: async () =>. { + // This will be called when it's time to send the custom auth handshake. You must return a Buffer containing the data to send as your authentication. + return Buffer.from([0x01,0x02,0x03]); + }, + // This is the expected size (bytes) of the custom auth response from the proxy server. + custom_auth_response_size: 2, + // This is called when the auth response is received. The received packet is passed in as a Buffer, and you must return a boolean indicating the response from the server said your custom auth was successful or failed. + custom_auth_response_handler: async (data) => { + return data[1] === 0x00; + } + }, + + command: 'connect', // connect, bind, associate + + destination: { + host: '192.30.253.113', // ipv4, ipv6, hostname. Hostnames work with v4a and v5. + port: 80 + }, + + // Optional fields + timeout: 30000, // How long to wait to establish a proxy connection. (defaults to 30 seconds) + + set_tcp_nodelay: true // If true, will turn on the underlying sockets TCP_NODELAY option. +} +``` + +### Class Method: SocksClient.createConnection(options[, callback]) +* ```options``` { SocksClientOptions } - An object describing the SOCKS proxy to use, the command to send and establish, and the destination host to connect to. +* ```callback``` { Function } - Optional callback function that is called when the proxy connection is established, or an error occurs. +* ```returns``` { Promise } - A Promise is returned that is resolved when the proxy connection is established, or rejected when an error occurs. + +Creates a new proxy connection through the given proxy to the given destination host. This factory function supports callbacks and promises for async flow control. + +**Note:** If a callback function is provided, the promise will always resolve regardless of an error occurring. Please be sure to exclusively use either promises or callbacks when using this factory function. + +```typescript +const options = { + proxy: { + host: '159.203.75.200', // ipv4, ipv6, or hostname + port: 1080, + type: 5 // Proxy version (4 or 5) + }, + + command: 'connect', // connect, bind, associate + + destination: { + host: '192.30.253.113', // ipv4, ipv6, or hostname + port: 80 + } +} + +// Await/Async (uses a Promise) +try { + const info = await SocksClient.createConnection(options); + console.log(info); + /* + { + socket: , // Raw net.Socket + } + */ + / (this is a raw net.Socket that is established to the destination host through the given proxy server) + +} catch (err) { + // Handle error... +} + +// Promise +SocksClient.createConnection(options) +.then(info => { + console.log(info); + /* + { + socket: , // Raw net.Socket + } + */ +}) +.catch(err => { + // Handle error... +}); + +// Callback +SocksClient.createConnection(options, (err, info) => { + if (!err) { + console.log(info); + /* + { + socket: , // Raw net.Socket + } + */ + } else { + // Handle error... + } +}); +``` + +### Class Method: SocksClient.createConnectionChain(options[, callback]) +* ```options``` { SocksClientChainOptions } - An object describing a list of SOCKS proxies to use, the command to send and establish, and the destination host to connect to. +* ```callback``` { Function } - Optional callback function that is called when the proxy connection chain is established, or an error occurs. +* ```returns``` { Promise } - A Promise is returned that is resolved when the proxy connection chain is established, or rejected when an error occurs. + +Creates a new proxy connection chain through a list of at least two SOCKS proxies to the given destination host. This factory method supports callbacks and promises for async flow control. + +**Note:** If a callback function is provided, the promise will always resolve regardless of an error occurring. Please be sure to exclusively use either promises or callbacks when using this factory function. + +**Note:** At least two proxies must be provided for the chain to be established. + +```typescript +const options = { + proxies: [ // The chain order is the order in the proxies array, meaning the last proxy will establish a connection to the destination. + { + host: '159.203.75.235', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + }, + { + host: '104.131.124.203', // ipv4, ipv6, or hostname + port: 1081, + type: 5 + } + ] + + command: 'connect', // Only connect is supported in chaining mode. + + destination: { + host: '192.30.253.113', // ipv4, ipv6, hostname + port: 80 + } +} +``` + +### Class Method: SocksClient.createUDPFrame(details) +* ```details``` { SocksUDPFrameDetails } - An object containing the remote host, frame number, and frame data to use when creating a SOCKS UDP frame packet. +* ```returns``` { Buffer } - A Buffer containing all of the UDP frame data. + +Creates a SOCKS UDP frame relay packet that is sent and received via a SOCKS proxy when using the associate command for UDP packet forwarding. + +**SocksUDPFrameDetails** + +```typescript +{ + frameNumber: 0, // The frame number (used for breaking up larger packets) + + remoteHost: { // The remote host to have the proxy send data to, or the remote host that send this data. + host: '1.2.3.4', + port: 1234 + }, + + data: // A Buffer instance of data to include in the packet (actual data sent to the remote host) +} +interface SocksUDPFrameDetails { + // The frame number of the packet. + frameNumber?: number; + + // The remote host. + remoteHost: SocksRemoteHost; + + // The packet data. + data: Buffer; +} +``` + +### Class Method: SocksClient.parseUDPFrame(data) +* ```data``` { Buffer } - A Buffer instance containing SOCKS UDP frame data to parse. +* ```returns``` { SocksUDPFrameDetails } - An object containing the remote host, frame number, and frame data of the SOCKS UDP frame. + +```typescript +const frame = SocksClient.parseUDPFrame(data); +console.log(frame); +/* +{ + frameNumber: 0, + remoteHost: { + host: '1.2.3.4', + port: 1234 + }, + data: +} +*/ +``` + +Parses a Buffer instance and returns the parsed SocksUDPFrameDetails object. + +## Event: 'error' +* ```err``` { SocksClientError } - An Error object containing an error message and the original SocksClientOptions. + +This event is emitted if an error occurs when trying to establish the proxy connection. + +## Event: 'bound' +* ```info``` { SocksClientBoundEvent } An object containing a Socket and SocksRemoteHost info. + +This event is emitted when using the BIND command on a remote SOCKS proxy server. This event indicates the proxy server is now listening for incoming connections on a specified port. + +**SocksClientBoundEvent** +```typescript +{ + socket: net.Socket, // The underlying raw Socket + remoteHost: { + host: '1.2.3.4', // The remote host that is listening (usually the proxy itself) + port: 4444 // The remote port the proxy is listening on for incoming connections (when using BIND). + } +} +``` + +## Event: 'established' +* ```info``` { SocksClientEstablishedEvent } An object containing a Socket and SocksRemoteHost info. + +This event is emitted when the following conditions are met: +1. When using the CONNECT command, and a proxy connection has been established to the remote host. +2. When using the BIND command, and an incoming connection has been accepted by the proxy and a TCP relay has been established. +3. When using the ASSOCIATE command, and a UDP relay has been established. + +When using BIND, 'bound' is first emitted to indicate the SOCKS server is waiting for an incoming connection, and provides the remote port the SOCKS server is listening on. + +When using ASSOCIATE, 'established' is emitted with the remote UDP port the SOCKS server is accepting UDP frame packets on. + +**SocksClientEstablishedEvent** +```typescript +{ + socket: net.Socket, // The underlying raw Socket + remoteHost: { + host: '1.2.3.4', // The remote host that is listening (usually the proxy itself) + port: 52738 // The remote port the proxy is listening on for incoming connections (when using BIND). + } +} +``` + +## client.connect() + +Starts connecting to the remote SOCKS proxy server to establish a proxy connection to the destination host. + +## client.socksClientOptions +* ```returns``` { SocksClientOptions } The options that were passed to the SocksClient. + +Gets the options that were passed to the SocksClient when it was created. + + +**SocksClientError** +```typescript +{ // Subclassed from Error. + message: 'An error has occurred', + options: { + // SocksClientOptions + } +} +``` + +# Further Reading: + +Please read the SOCKS 5 specifications for more information on how to use BIND and Associate. +http://www.ietf.org/rfc/rfc1928.txt + +# License + +This work is licensed under the [MIT license](http://en.wikipedia.org/wiki/MIT_License). diff --git a/node/node_modules/socks/build/client/socksclient.js b/node/node_modules/socks/build/client/socksclient.js new file mode 100644 index 0000000000000000000000000000000000000000..09b1f55767aa7221dee5b78077b2a2bdd332b9c6 --- /dev/null +++ b/node/node_modules/socks/build/client/socksclient.js @@ -0,0 +1,793 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SocksClientError = exports.SocksClient = void 0; +const events_1 = require("events"); +const net = require("net"); +const smart_buffer_1 = require("smart-buffer"); +const constants_1 = require("../common/constants"); +const helpers_1 = require("../common/helpers"); +const receivebuffer_1 = require("../common/receivebuffer"); +const util_1 = require("../common/util"); +Object.defineProperty(exports, "SocksClientError", { enumerable: true, get: function () { return util_1.SocksClientError; } }); +const ip_address_1 = require("ip-address"); +class SocksClient extends events_1.EventEmitter { + constructor(options) { + super(); + this.options = Object.assign({}, options); + // Validate SocksClientOptions + (0, helpers_1.validateSocksClientOptions)(options); + // Default state + this.setState(constants_1.SocksClientState.Created); + } + /** + * Creates a new SOCKS connection. + * + * Note: Supports callbacks and promises. Only supports the connect command. + * @param options { SocksClientOptions } Options. + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnection(options, callback) { + return new Promise((resolve, reject) => { + // Validate SocksClientOptions + try { + (0, helpers_1.validateSocksClientOptions)(options, ['connect']); + } + catch (err) { + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + return reject(err); + } + } + const client = new SocksClient(options); + client.connect(options.existing_socket); + client.once('established', (info) => { + client.removeAllListeners(); + if (typeof callback === 'function') { + callback(null, info); + resolve(info); // Resolves pending promise (prevents memory leaks). + } + else { + resolve(info); + } + }); + // Error occurred, failed to establish connection. + client.once('error', (err) => { + client.removeAllListeners(); + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + reject(err); + } + }); + }); + } + /** + * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. + * + * Note: Supports callbacks and promises. Only supports the connect method. + * Note: Implemented via createConnection() factory function. + * @param options { SocksClientChainOptions } Options + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnectionChain(options, callback) { + // eslint-disable-next-line no-async-promise-executor + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + // Validate SocksClientChainOptions + try { + (0, helpers_1.validateSocksClientChainOptions)(options); + } + catch (err) { + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + return reject(err); + } + } + // Shuffle proxies + if (options.randomizeChain) { + (0, util_1.shuffleArray)(options.proxies); + } + try { + let sock; + for (let i = 0; i < options.proxies.length; i++) { + const nextProxy = options.proxies[i]; + // If we've reached the last proxy in the chain, the destination is the actual destination, otherwise it's the next proxy. + const nextDestination = i === options.proxies.length - 1 + ? options.destination + : { + host: options.proxies[i + 1].host || + options.proxies[i + 1].ipaddress, + port: options.proxies[i + 1].port, + }; + // Creates the next connection in the chain. + const result = yield SocksClient.createConnection({ + command: 'connect', + proxy: nextProxy, + destination: nextDestination, + existing_socket: sock, + }); + // If sock is undefined, assign it here. + sock = sock || result.socket; + } + if (typeof callback === 'function') { + callback(null, { socket: sock }); + resolve({ socket: sock }); // Resolves pending promise (prevents memory leaks). + } + else { + resolve({ socket: sock }); + } + } + catch (err) { + if (typeof callback === 'function') { + callback(err); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + resolve(err); // Resolves pending promise (prevents memory leaks). + } + else { + reject(err); + } + } + })); + } + /** + * Creates a SOCKS UDP Frame. + * @param options + */ + static createUDPFrame(options) { + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt16BE(0); + buff.writeUInt8(options.frameNumber || 0); + // IPv4/IPv6/Hostname + if (net.isIPv4(options.remoteHost.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv4); + buff.writeUInt32BE((0, helpers_1.ipv4ToInt32)(options.remoteHost.host)); + } + else if (net.isIPv6(options.remoteHost.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv6); + buff.writeBuffer((0, helpers_1.ipToBuffer)(options.remoteHost.host)); + } + else { + buff.writeUInt8(constants_1.Socks5HostType.Hostname); + buff.writeUInt8(Buffer.byteLength(options.remoteHost.host)); + buff.writeString(options.remoteHost.host); + } + // Port + buff.writeUInt16BE(options.remoteHost.port); + // Data + buff.writeBuffer(options.data); + return buff.toBuffer(); + } + /** + * Parses a SOCKS UDP frame. + * @param data + */ + static parseUDPFrame(data) { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const frameNumber = buff.readUInt8(); + const hostType = buff.readUInt8(); + let remoteHost; + if (hostType === constants_1.Socks5HostType.IPv4) { + remoteHost = (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()); + } + else if (hostType === constants_1.Socks5HostType.IPv6) { + remoteHost = ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(); + } + else { + remoteHost = buff.readString(buff.readUInt8()); + } + const remotePort = buff.readUInt16BE(); + return { + frameNumber, + remoteHost: { + host: remoteHost, + port: remotePort, + }, + data: buff.readBuffer(), + }; + } + /** + * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state. + */ + setState(newState) { + if (this.state !== constants_1.SocksClientState.Error) { + this.state = newState; + } + } + /** + * Starts the connection establishment to the proxy and destination. + * @param existingSocket Connected socket to use instead of creating a new one (internal use). + */ + connect(existingSocket) { + this.onDataReceived = (data) => this.onDataReceivedHandler(data); + this.onClose = () => this.onCloseHandler(); + this.onError = (err) => this.onErrorHandler(err); + this.onConnect = () => this.onConnectHandler(); + // Start timeout timer (defaults to 30 seconds) + const timer = setTimeout(() => this.onEstablishedTimeout(), this.options.timeout || constants_1.DEFAULT_TIMEOUT); + // check whether unref is available as it differs from browser to NodeJS (#33) + if (timer.unref && typeof timer.unref === 'function') { + timer.unref(); + } + // If an existing socket is provided, use it to negotiate SOCKS handshake. Otherwise create a new Socket. + if (existingSocket) { + this.socket = existingSocket; + } + else { + this.socket = new net.Socket(); + } + // Attach Socket error handlers. + this.socket.once('close', this.onClose); + this.socket.once('error', this.onError); + this.socket.once('connect', this.onConnect); + this.socket.on('data', this.onDataReceived); + this.setState(constants_1.SocksClientState.Connecting); + this.receiveBuffer = new receivebuffer_1.ReceiveBuffer(); + if (existingSocket) { + this.socket.emit('connect'); + } + else { + this.socket.connect(this.getSocketOptions()); + if (this.options.set_tcp_nodelay !== undefined && + this.options.set_tcp_nodelay !== null) { + this.socket.setNoDelay(!!this.options.set_tcp_nodelay); + } + } + // Listen for established event so we can re-emit any excess data received during handshakes. + this.prependOnceListener('established', (info) => { + setImmediate(() => { + if (this.receiveBuffer.length > 0) { + const excessData = this.receiveBuffer.get(this.receiveBuffer.length); + info.socket.emit('data', excessData); + } + info.socket.resume(); + }); + }); + } + // Socket options (defaults host/port to options.proxy.host/options.proxy.port) + getSocketOptions() { + return Object.assign(Object.assign({}, this.options.socket_options), { host: this.options.proxy.host || this.options.proxy.ipaddress, port: this.options.proxy.port }); + } + /** + * Handles internal Socks timeout callback. + * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed. + */ + onEstablishedTimeout() { + if (this.state !== constants_1.SocksClientState.Established && + this.state !== constants_1.SocksClientState.BoundWaitingForConnection) { + this.closeSocket(constants_1.ERRORS.ProxyConnectionTimedOut); + } + } + /** + * Handles Socket connect event. + */ + onConnectHandler() { + this.setState(constants_1.SocksClientState.Connected); + // Send initial handshake. + if (this.options.proxy.type === 4) { + this.sendSocks4InitialHandshake(); + } + else { + this.sendSocks5InitialHandshake(); + } + this.setState(constants_1.SocksClientState.SentInitialHandshake); + } + /** + * Handles Socket data event. + * @param data + */ + onDataReceivedHandler(data) { + /* + All received data is appended to a ReceiveBuffer. + This makes sure that all the data we need is received before we attempt to process it. + */ + this.receiveBuffer.append(data); + // Process data that we have. + this.processData(); + } + /** + * Handles processing of the data we have received. + */ + processData() { + // If we have enough data to process the next step in the SOCKS handshake, proceed. + while (this.state !== constants_1.SocksClientState.Established && + this.state !== constants_1.SocksClientState.Error && + this.receiveBuffer.length >= this.nextRequiredPacketBufferSize) { + // Sent initial handshake, waiting for response. + if (this.state === constants_1.SocksClientState.SentInitialHandshake) { + if (this.options.proxy.type === 4) { + // Socks v4 only has one handshake response. + this.handleSocks4FinalHandshakeResponse(); + } + else { + // Socks v5 has two handshakes, handle initial one here. + this.handleInitialSocks5HandshakeResponse(); + } + // Sent auth request for Socks v5, waiting for response. + } + else if (this.state === constants_1.SocksClientState.SentAuthentication) { + this.handleInitialSocks5AuthenticationHandshakeResponse(); + // Sent final Socks v5 handshake, waiting for final response. + } + else if (this.state === constants_1.SocksClientState.SentFinalHandshake) { + this.handleSocks5FinalHandshakeResponse(); + // Socks BIND established. Waiting for remote connection via proxy. + } + else if (this.state === constants_1.SocksClientState.BoundWaitingForConnection) { + if (this.options.proxy.type === 4) { + this.handleSocks4IncomingConnectionResponse(); + } + else { + this.handleSocks5IncomingConnectionResponse(); + } + } + else { + this.closeSocket(constants_1.ERRORS.InternalError); + break; + } + } + } + /** + * Handles Socket close event. + * @param had_error + */ + onCloseHandler() { + this.closeSocket(constants_1.ERRORS.SocketClosed); + } + /** + * Handles Socket error event. + * @param err + */ + onErrorHandler(err) { + this.closeSocket(err.message); + } + /** + * Removes internal event listeners on the underlying Socket. + */ + removeInternalSocketHandlers() { + // Pauses data flow of the socket (this is internally resumed after 'established' is emitted) + this.socket.pause(); + this.socket.removeListener('data', this.onDataReceived); + this.socket.removeListener('close', this.onClose); + this.socket.removeListener('error', this.onError); + this.socket.removeListener('connect', this.onConnect); + } + /** + * Closes and destroys the underlying Socket. Emits an error event. + * @param err { String } An error string to include in error event. + */ + closeSocket(err) { + // Make sure only one 'error' event is fired for the lifetime of this SocksClient instance. + if (this.state !== constants_1.SocksClientState.Error) { + // Set internal state to Error. + this.setState(constants_1.SocksClientState.Error); + // Destroy Socket + this.socket.destroy(); + // Remove internal listeners + this.removeInternalSocketHandlers(); + // Fire 'error' event. + this.emit('error', new util_1.SocksClientError(err, this.options)); + } + } + /** + * Sends initial Socks v4 handshake request. + */ + sendSocks4InitialHandshake() { + const userId = this.options.proxy.userId || ''; + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(0x04); + buff.writeUInt8(constants_1.SocksCommand[this.options.command]); + buff.writeUInt16BE(this.options.destination.port); + // Socks 4 (IPv4) + if (net.isIPv4(this.options.destination.host)) { + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); + buff.writeStringNT(userId); + // Socks 4a (hostname) + } + else { + buff.writeUInt8(0x00); + buff.writeUInt8(0x00); + buff.writeUInt8(0x00); + buff.writeUInt8(0x01); + buff.writeStringNT(userId); + buff.writeStringNT(this.options.destination.host); + } + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks4Response; + this.socket.write(buff.toBuffer()); + } + /** + * Handles Socks v4 handshake response. + * @param data + */ + handleSocks4FinalHandshakeResponse() { + const data = this.receiveBuffer.get(8); + if (data[1] !== constants_1.Socks4Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedConnection} - (${constants_1.Socks4Response[data[1]]})`); + } + else { + // Bind response + if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const remoteHost = { + port: buff.readUInt16BE(), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), + }; + // If host is 0.0.0.0, set to proxy host. + if (remoteHost.host === '0.0.0.0') { + remoteHost.host = this.options.proxy.ipaddress; + } + this.setState(constants_1.SocksClientState.BoundWaitingForConnection); + this.emit('bound', { remoteHost, socket: this.socket }); + // Connect response + } + else { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { socket: this.socket }); + } + } + } + /** + * Handles Socks v4 incoming connection request (BIND) + * @param data + */ + handleSocks4IncomingConnectionResponse() { + const data = this.receiveBuffer.get(8); + if (data[1] !== constants_1.Socks4Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedIncomingBoundConnection} - (${constants_1.Socks4Response[data[1]]})`); + } + else { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const remoteHost = { + port: buff.readUInt16BE(), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), + }; + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { remoteHost, socket: this.socket }); + } + } + /** + * Sends initial Socks v5 handshake request. + */ + sendSocks5InitialHandshake() { + const buff = new smart_buffer_1.SmartBuffer(); + // By default we always support no auth. + const supportedAuthMethods = [constants_1.Socks5Auth.NoAuth]; + // We should only tell the proxy we support user/pass auth if auth info is actually provided. + // Note: As of Tor v0.3.5.7+, if user/pass auth is an option from the client, by default it will always take priority. + if (this.options.proxy.userId || this.options.proxy.password) { + supportedAuthMethods.push(constants_1.Socks5Auth.UserPass); + } + // Custom auth method? + if (this.options.proxy.custom_auth_method !== undefined) { + supportedAuthMethods.push(this.options.proxy.custom_auth_method); + } + // Build handshake packet + buff.writeUInt8(0x05); + buff.writeUInt8(supportedAuthMethods.length); + for (const authMethod of supportedAuthMethods) { + buff.writeUInt8(authMethod); + } + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5InitialHandshakeResponse; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentInitialHandshake); + } + /** + * Handles initial Socks v5 handshake response. + * @param data + */ + handleInitialSocks5HandshakeResponse() { + const data = this.receiveBuffer.get(2); + if (data[0] !== 0x05) { + this.closeSocket(constants_1.ERRORS.InvalidSocks5IntiailHandshakeSocksVersion); + } + else if (data[1] === constants_1.SOCKS5_NO_ACCEPTABLE_AUTH) { + this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeNoAcceptedAuthType); + } + else { + // If selected Socks v5 auth method is no auth, send final handshake request. + if (data[1] === constants_1.Socks5Auth.NoAuth) { + this.socks5ChosenAuthType = constants_1.Socks5Auth.NoAuth; + this.sendSocks5CommandRequest(); + // If selected Socks v5 auth method is user/password, send auth handshake. + } + else if (data[1] === constants_1.Socks5Auth.UserPass) { + this.socks5ChosenAuthType = constants_1.Socks5Auth.UserPass; + this.sendSocks5UserPassAuthentication(); + // If selected Socks v5 auth method is the custom_auth_method, send custom handshake. + } + else if (data[1] === this.options.proxy.custom_auth_method) { + this.socks5ChosenAuthType = this.options.proxy.custom_auth_method; + this.sendSocks5CustomAuthentication(); + } + else { + this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeUnknownAuthType); + } + } + } + /** + * Sends Socks v5 user & password auth handshake. + * + * Note: No auth and user/pass are currently supported. + */ + sendSocks5UserPassAuthentication() { + const userId = this.options.proxy.userId || ''; + const password = this.options.proxy.password || ''; + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(0x01); + buff.writeUInt8(Buffer.byteLength(userId)); + buff.writeString(userId); + buff.writeUInt8(Buffer.byteLength(password)); + buff.writeString(password); + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5UserPassAuthenticationResponse; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentAuthentication); + } + sendSocks5CustomAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + this.nextRequiredPacketBufferSize = + this.options.proxy.custom_auth_response_size; + this.socket.write(yield this.options.proxy.custom_auth_request_handler()); + this.setState(constants_1.SocksClientState.SentAuthentication); + }); + } + handleSocks5CustomAuthHandshakeResponse(data) { + return __awaiter(this, void 0, void 0, function* () { + return yield this.options.proxy.custom_auth_response_handler(data); + }); + } + handleSocks5AuthenticationNoAuthHandshakeResponse(data) { + return __awaiter(this, void 0, void 0, function* () { + return data[1] === 0x00; + }); + } + handleSocks5AuthenticationUserPassHandshakeResponse(data) { + return __awaiter(this, void 0, void 0, function* () { + return data[1] === 0x00; + }); + } + /** + * Handles Socks v5 auth handshake response. + * @param data + */ + handleInitialSocks5AuthenticationHandshakeResponse() { + return __awaiter(this, void 0, void 0, function* () { + this.setState(constants_1.SocksClientState.ReceivedAuthenticationResponse); + let authResult = false; + if (this.socks5ChosenAuthType === constants_1.Socks5Auth.NoAuth) { + authResult = yield this.handleSocks5AuthenticationNoAuthHandshakeResponse(this.receiveBuffer.get(2)); + } + else if (this.socks5ChosenAuthType === constants_1.Socks5Auth.UserPass) { + authResult = + yield this.handleSocks5AuthenticationUserPassHandshakeResponse(this.receiveBuffer.get(2)); + } + else if (this.socks5ChosenAuthType === this.options.proxy.custom_auth_method) { + authResult = yield this.handleSocks5CustomAuthHandshakeResponse(this.receiveBuffer.get(this.options.proxy.custom_auth_response_size)); + } + if (!authResult) { + this.closeSocket(constants_1.ERRORS.Socks5AuthenticationFailed); + } + else { + this.sendSocks5CommandRequest(); + } + }); + } + /** + * Sends Socks v5 final handshake request. + */ + sendSocks5CommandRequest() { + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(0x05); + buff.writeUInt8(constants_1.SocksCommand[this.options.command]); + buff.writeUInt8(0x00); + // ipv4, ipv6, domain? + if (net.isIPv4(this.options.destination.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv4); + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); + } + else if (net.isIPv6(this.options.destination.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv6); + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); + } + else { + buff.writeUInt8(constants_1.Socks5HostType.Hostname); + buff.writeUInt8(this.options.destination.host.length); + buff.writeString(this.options.destination.host); + } + buff.writeUInt16BE(this.options.destination.port); + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentFinalHandshake); + } + /** + * Handles Socks v5 final handshake response. + * @param data + */ + handleSocks5FinalHandshakeResponse() { + // Peek at available data (we need at least 5 bytes to get the hostname length) + const header = this.receiveBuffer.peek(5); + if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.InvalidSocks5FinalHandshakeRejected} - ${constants_1.Socks5Response[header[1]]}`); + } + else { + // Read address type + const addressType = header[3]; + let remoteHost; + let buff; + // IPv4 + if (addressType === constants_1.Socks5HostType.IPv4) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), + port: buff.readUInt16BE(), + }; + // If given host is 0.0.0.0, assume remote proxy ip instead. + if (remoteHost.host === '0.0.0.0') { + remoteHost.host = this.options.proxy.ipaddress; + } + // Hostname + } + else if (addressType === constants_1.Socks5HostType.Hostname) { + const hostLength = header[4]; + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + host + port + // Check if data is available. + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); + remoteHost = { + host: buff.readString(hostLength), + port: buff.readUInt16BE(), + }; + // IPv6 + } + else if (addressType === constants_1.Socks5HostType.IPv6) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), + port: buff.readUInt16BE(), + }; + } + // We have everything we need + this.setState(constants_1.SocksClientState.ReceivedFinalResponse); + // If using CONNECT, the client is now in the established state. + if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.connect) { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { remoteHost, socket: this.socket }); + } + else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { + /* If using BIND, the Socks client is now in BoundWaitingForConnection state. + This means that the remote proxy server is waiting for a remote connection to the bound port. */ + this.setState(constants_1.SocksClientState.BoundWaitingForConnection); + this.nextRequiredPacketBufferSize = + constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; + this.emit('bound', { remoteHost, socket: this.socket }); + /* + If using Associate, the Socks client is now Established. And the proxy server is now accepting UDP packets at the + given bound port. This initial Socks TCP connection must remain open for the UDP relay to continue to work. + */ + } + else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.associate) { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { + remoteHost, + socket: this.socket, + }); + } + } + } + /** + * Handles Socks v5 incoming connection request (BIND). + */ + handleSocks5IncomingConnectionResponse() { + // Peek at available data (we need at least 5 bytes to get the hostname length) + const header = this.receiveBuffer.peek(5); + if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks5ProxyRejectedIncomingBoundConnection} - ${constants_1.Socks5Response[header[1]]}`); + } + else { + // Read address type + const addressType = header[3]; + let remoteHost; + let buff; + // IPv4 + if (addressType === constants_1.Socks5HostType.IPv4) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), + port: buff.readUInt16BE(), + }; + // If given host is 0.0.0.0, assume remote proxy ip instead. + if (remoteHost.host === '0.0.0.0') { + remoteHost.host = this.options.proxy.ipaddress; + } + // Hostname + } + else if (addressType === constants_1.Socks5HostType.Hostname) { + const hostLength = header[4]; + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + port + // Check if data is available. + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); + remoteHost = { + host: buff.readString(hostLength), + port: buff.readUInt16BE(), + }; + // IPv6 + } + else if (addressType === constants_1.Socks5HostType.IPv6) { + // Check if data is available. + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), + port: buff.readUInt16BE(), + }; + } + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit('established', { remoteHost, socket: this.socket }); + } + } + get socksClientOptions() { + return Object.assign({}, this.options); + } +} +exports.SocksClient = SocksClient; +//# sourceMappingURL=socksclient.js.map \ No newline at end of file diff --git a/node/node_modules/socks/build/client/socksclient.js.map b/node/node_modules/socks/build/client/socksclient.js.map new file mode 100644 index 0000000000000000000000000000000000000000..0cae2aad2d47effe9909f9f73fdd8b78195aa95a --- /dev/null +++ b/node/node_modules/socks/build/client/socksclient.js.map @@ -0,0 +1 @@ +{"version":3,"file":"socksclient.js","sourceRoot":"","sources":["../../src/client/socksclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/socks/build/common/constants.js b/node/node_modules/socks/build/common/constants.js new file mode 100644 index 0000000000000000000000000000000000000000..aaf16418fe941b3e62d4ac85273ce0637d651503 --- /dev/null +++ b/node/node_modules/socks/build/common/constants.js @@ -0,0 +1,108 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SOCKS5_NO_ACCEPTABLE_AUTH = exports.SOCKS5_CUSTOM_AUTH_END = exports.SOCKS5_CUSTOM_AUTH_START = exports.SOCKS_INCOMING_PACKET_SIZES = exports.SocksClientState = exports.Socks5Response = exports.Socks5HostType = exports.Socks5Auth = exports.Socks4Response = exports.SocksCommand = exports.ERRORS = exports.DEFAULT_TIMEOUT = void 0; +const DEFAULT_TIMEOUT = 30000; +exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; +// prettier-ignore +const ERRORS = { + InvalidSocksCommand: 'An invalid SOCKS command was provided. Valid options are connect, bind, and associate.', + InvalidSocksCommandForOperation: 'An invalid SOCKS command was provided. Only a subset of commands are supported for this operation.', + InvalidSocksCommandChain: 'An invalid SOCKS command was provided. Chaining currently only supports the connect command.', + InvalidSocksClientOptionsDestination: 'An invalid destination host was provided.', + InvalidSocksClientOptionsExistingSocket: 'An invalid existing socket was provided. This should be an instance of stream.Duplex.', + InvalidSocksClientOptionsProxy: 'Invalid SOCKS proxy details were provided.', + InvalidSocksClientOptionsTimeout: 'An invalid timeout value was provided. Please enter a value above 0 (in ms).', + InvalidSocksClientOptionsProxiesLength: 'At least two socks proxies must be provided for chaining.', + InvalidSocksClientOptionsCustomAuthRange: 'Custom auth must be a value between 0x80 and 0xFE.', + InvalidSocksClientOptionsCustomAuthOptions: 'When a custom_auth_method is provided, custom_auth_request_handler, custom_auth_response_size, and custom_auth_response_handler must also be provided and valid.', + NegotiationError: 'Negotiation error', + SocketClosed: 'Socket closed', + ProxyConnectionTimedOut: 'Proxy connection timed out', + InternalError: 'SocksClient internal error (this should not happen)', + InvalidSocks4HandshakeResponse: 'Received invalid Socks4 handshake response', + Socks4ProxyRejectedConnection: 'Socks4 Proxy rejected connection', + InvalidSocks4IncomingConnectionResponse: 'Socks4 invalid incoming connection response', + Socks4ProxyRejectedIncomingBoundConnection: 'Socks4 Proxy rejected incoming bound connection', + InvalidSocks5InitialHandshakeResponse: 'Received invalid Socks5 initial handshake response', + InvalidSocks5IntiailHandshakeSocksVersion: 'Received invalid Socks5 initial handshake (invalid socks version)', + InvalidSocks5InitialHandshakeNoAcceptedAuthType: 'Received invalid Socks5 initial handshake (no accepted authentication type)', + InvalidSocks5InitialHandshakeUnknownAuthType: 'Received invalid Socks5 initial handshake (unknown authentication type)', + Socks5AuthenticationFailed: 'Socks5 Authentication failed', + InvalidSocks5FinalHandshake: 'Received invalid Socks5 final handshake response', + InvalidSocks5FinalHandshakeRejected: 'Socks5 proxy rejected connection', + InvalidSocks5IncomingConnectionResponse: 'Received invalid Socks5 incoming connection response', + Socks5ProxyRejectedIncomingBoundConnection: 'Socks5 Proxy rejected incoming bound connection', +}; +exports.ERRORS = ERRORS; +const SOCKS_INCOMING_PACKET_SIZES = { + Socks5InitialHandshakeResponse: 2, + Socks5UserPassAuthenticationResponse: 2, + // Command response + incoming connection (bind) + Socks5ResponseHeader: 5, // We need at least 5 to read the hostname length, then we wait for the address+port information. + Socks5ResponseIPv4: 10, // 4 header + 4 ip + 2 port + Socks5ResponseIPv6: 22, // 4 header + 16 ip + 2 port + Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7, // 4 header + 1 host length + host + 2 port + // Command response + incoming connection (bind) + Socks4Response: 8, // 2 header + 2 port + 4 ip +}; +exports.SOCKS_INCOMING_PACKET_SIZES = SOCKS_INCOMING_PACKET_SIZES; +var SocksCommand; +(function (SocksCommand) { + SocksCommand[SocksCommand["connect"] = 1] = "connect"; + SocksCommand[SocksCommand["bind"] = 2] = "bind"; + SocksCommand[SocksCommand["associate"] = 3] = "associate"; +})(SocksCommand || (exports.SocksCommand = SocksCommand = {})); +var Socks4Response; +(function (Socks4Response) { + Socks4Response[Socks4Response["Granted"] = 90] = "Granted"; + Socks4Response[Socks4Response["Failed"] = 91] = "Failed"; + Socks4Response[Socks4Response["Rejected"] = 92] = "Rejected"; + Socks4Response[Socks4Response["RejectedIdent"] = 93] = "RejectedIdent"; +})(Socks4Response || (exports.Socks4Response = Socks4Response = {})); +var Socks5Auth; +(function (Socks5Auth) { + Socks5Auth[Socks5Auth["NoAuth"] = 0] = "NoAuth"; + Socks5Auth[Socks5Auth["GSSApi"] = 1] = "GSSApi"; + Socks5Auth[Socks5Auth["UserPass"] = 2] = "UserPass"; +})(Socks5Auth || (exports.Socks5Auth = Socks5Auth = {})); +const SOCKS5_CUSTOM_AUTH_START = 0x80; +exports.SOCKS5_CUSTOM_AUTH_START = SOCKS5_CUSTOM_AUTH_START; +const SOCKS5_CUSTOM_AUTH_END = 0xfe; +exports.SOCKS5_CUSTOM_AUTH_END = SOCKS5_CUSTOM_AUTH_END; +const SOCKS5_NO_ACCEPTABLE_AUTH = 0xff; +exports.SOCKS5_NO_ACCEPTABLE_AUTH = SOCKS5_NO_ACCEPTABLE_AUTH; +var Socks5Response; +(function (Socks5Response) { + Socks5Response[Socks5Response["Granted"] = 0] = "Granted"; + Socks5Response[Socks5Response["Failure"] = 1] = "Failure"; + Socks5Response[Socks5Response["NotAllowed"] = 2] = "NotAllowed"; + Socks5Response[Socks5Response["NetworkUnreachable"] = 3] = "NetworkUnreachable"; + Socks5Response[Socks5Response["HostUnreachable"] = 4] = "HostUnreachable"; + Socks5Response[Socks5Response["ConnectionRefused"] = 5] = "ConnectionRefused"; + Socks5Response[Socks5Response["TTLExpired"] = 6] = "TTLExpired"; + Socks5Response[Socks5Response["CommandNotSupported"] = 7] = "CommandNotSupported"; + Socks5Response[Socks5Response["AddressNotSupported"] = 8] = "AddressNotSupported"; +})(Socks5Response || (exports.Socks5Response = Socks5Response = {})); +var Socks5HostType; +(function (Socks5HostType) { + Socks5HostType[Socks5HostType["IPv4"] = 1] = "IPv4"; + Socks5HostType[Socks5HostType["Hostname"] = 3] = "Hostname"; + Socks5HostType[Socks5HostType["IPv6"] = 4] = "IPv6"; +})(Socks5HostType || (exports.Socks5HostType = Socks5HostType = {})); +var SocksClientState; +(function (SocksClientState) { + SocksClientState[SocksClientState["Created"] = 0] = "Created"; + SocksClientState[SocksClientState["Connecting"] = 1] = "Connecting"; + SocksClientState[SocksClientState["Connected"] = 2] = "Connected"; + SocksClientState[SocksClientState["SentInitialHandshake"] = 3] = "SentInitialHandshake"; + SocksClientState[SocksClientState["ReceivedInitialHandshakeResponse"] = 4] = "ReceivedInitialHandshakeResponse"; + SocksClientState[SocksClientState["SentAuthentication"] = 5] = "SentAuthentication"; + SocksClientState[SocksClientState["ReceivedAuthenticationResponse"] = 6] = "ReceivedAuthenticationResponse"; + SocksClientState[SocksClientState["SentFinalHandshake"] = 7] = "SentFinalHandshake"; + SocksClientState[SocksClientState["ReceivedFinalResponse"] = 8] = "ReceivedFinalResponse"; + SocksClientState[SocksClientState["BoundWaitingForConnection"] = 9] = "BoundWaitingForConnection"; + SocksClientState[SocksClientState["Established"] = 10] = "Established"; + SocksClientState[SocksClientState["Disconnected"] = 11] = "Disconnected"; + SocksClientState[SocksClientState["Error"] = 99] = "Error"; +})(SocksClientState || (exports.SocksClientState = SocksClientState = {})); +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/node/node_modules/socks/build/common/constants.js.map b/node/node_modules/socks/build/common/constants.js.map new file mode 100644 index 0000000000000000000000000000000000000000..969af83484e146db4ef7381fdfb3db8a83d6bb81 --- /dev/null +++ b/node/node_modules/socks/build/common/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/socks/build/common/helpers.js b/node/node_modules/socks/build/common/helpers.js new file mode 100644 index 0000000000000000000000000000000000000000..65bd95bdc622153f683b78de8de67f69dc52af40 --- /dev/null +++ b/node/node_modules/socks/build/common/helpers.js @@ -0,0 +1,162 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ipToBuffer = exports.int32ToIpv4 = exports.ipv4ToInt32 = exports.validateSocksClientChainOptions = exports.validateSocksClientOptions = void 0; +const util_1 = require("./util"); +const constants_1 = require("./constants"); +const stream = require("stream"); +const ip_address_1 = require("ip-address"); +const net = require("net"); +/** + * Validates the provided SocksClientOptions + * @param options { SocksClientOptions } + * @param acceptedCommands { string[] } A list of accepted SocksProxy commands. + */ +function validateSocksClientOptions(options, acceptedCommands = ['connect', 'bind', 'associate']) { + // Check SOCKs command option. + if (!constants_1.SocksCommand[options.command]) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommand, options); + } + // Check SocksCommand for acceptable command. + if (acceptedCommands.indexOf(options.command) === -1) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandForOperation, options); + } + // Check destination + if (!isValidSocksRemoteHost(options.destination)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); + } + // Check SOCKS proxy to use + if (!isValidSocksProxy(options.proxy)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); + } + // Validate custom auth (if set) + validateCustomProxyAuth(options.proxy, options); + // Check timeout + if (options.timeout && !isValidTimeoutValue(options.timeout)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); + } + // Check existing_socket (if provided) + if (options.existing_socket && + !(options.existing_socket instanceof stream.Duplex)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsExistingSocket, options); + } +} +exports.validateSocksClientOptions = validateSocksClientOptions; +/** + * Validates the SocksClientChainOptions + * @param options { SocksClientChainOptions } + */ +function validateSocksClientChainOptions(options) { + // Only connect is supported when chaining. + if (options.command !== 'connect') { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandChain, options); + } + // Check destination + if (!isValidSocksRemoteHost(options.destination)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); + } + // Validate proxies (length) + if (!(options.proxies && + Array.isArray(options.proxies) && + options.proxies.length >= 2)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxiesLength, options); + } + // Validate proxies + options.proxies.forEach((proxy) => { + if (!isValidSocksProxy(proxy)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); + } + // Validate custom auth (if set) + validateCustomProxyAuth(proxy, options); + }); + // Check timeout + if (options.timeout && !isValidTimeoutValue(options.timeout)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); + } +} +exports.validateSocksClientChainOptions = validateSocksClientChainOptions; +function validateCustomProxyAuth(proxy, options) { + if (proxy.custom_auth_method !== undefined) { + // Invalid auth method range + if (proxy.custom_auth_method < constants_1.SOCKS5_CUSTOM_AUTH_START || + proxy.custom_auth_method > constants_1.SOCKS5_CUSTOM_AUTH_END) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthRange, options); + } + // Missing custom_auth_request_handler + if (proxy.custom_auth_request_handler === undefined || + typeof proxy.custom_auth_request_handler !== 'function') { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + // Missing custom_auth_response_size + if (proxy.custom_auth_response_size === undefined) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + // Missing/invalid custom_auth_response_handler + if (proxy.custom_auth_response_handler === undefined || + typeof proxy.custom_auth_response_handler !== 'function') { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + } +} +/** + * Validates a SocksRemoteHost + * @param remoteHost { SocksRemoteHost } + */ +function isValidSocksRemoteHost(remoteHost) { + return (remoteHost && + typeof remoteHost.host === 'string' && + typeof remoteHost.port === 'number' && + remoteHost.port >= 0 && + remoteHost.port <= 65535); +} +/** + * Validates a SocksProxy + * @param proxy { SocksProxy } + */ +function isValidSocksProxy(proxy) { + return (proxy && + (typeof proxy.host === 'string' || typeof proxy.ipaddress === 'string') && + typeof proxy.port === 'number' && + proxy.port >= 0 && + proxy.port <= 65535 && + (proxy.type === 4 || proxy.type === 5)); +} +/** + * Validates a timeout value. + * @param value { Number } + */ +function isValidTimeoutValue(value) { + return typeof value === 'number' && value > 0; +} +function ipv4ToInt32(ip) { + const address = new ip_address_1.Address4(ip); + // Convert the IPv4 address parts to an integer + return address.toArray().reduce((acc, part) => (acc << 8) + part, 0); +} +exports.ipv4ToInt32 = ipv4ToInt32; +function int32ToIpv4(int32) { + // Extract each byte (octet) from the 32-bit integer + const octet1 = (int32 >>> 24) & 0xff; + const octet2 = (int32 >>> 16) & 0xff; + const octet3 = (int32 >>> 8) & 0xff; + const octet4 = int32 & 0xff; + // Combine the octets into a string in IPv4 format + return [octet1, octet2, octet3, octet4].join('.'); +} +exports.int32ToIpv4 = int32ToIpv4; +function ipToBuffer(ip) { + if (net.isIPv4(ip)) { + // Handle IPv4 addresses + const address = new ip_address_1.Address4(ip); + return Buffer.from(address.toArray()); + } + else if (net.isIPv6(ip)) { + // Handle IPv6 addresses + const address = new ip_address_1.Address6(ip); + return Buffer.from(address.toByteArray()); + } + else { + throw new Error('Invalid IP address format'); + } +} +exports.ipToBuffer = ipToBuffer; +//# sourceMappingURL=helpers.js.map \ No newline at end of file diff --git a/node/node_modules/socks/build/common/helpers.js.map b/node/node_modules/socks/build/common/helpers.js.map new file mode 100644 index 0000000000000000000000000000000000000000..554fcccf1e93a48b8b8195f6be7b62d698f027ef --- /dev/null +++ b/node/node_modules/socks/build/common/helpers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/socks/build/common/receivebuffer.js b/node/node_modules/socks/build/common/receivebuffer.js new file mode 100644 index 0000000000000000000000000000000000000000..3dacbf9b95139f4ebd0ab4308a601044fc3ad5c7 --- /dev/null +++ b/node/node_modules/socks/build/common/receivebuffer.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ReceiveBuffer = void 0; +class ReceiveBuffer { + constructor(size = 4096) { + this.buffer = Buffer.allocUnsafe(size); + this.offset = 0; + this.originalSize = size; + } + get length() { + return this.offset; + } + append(data) { + if (!Buffer.isBuffer(data)) { + throw new Error('Attempted to append a non-buffer instance to ReceiveBuffer.'); + } + if (this.offset + data.length >= this.buffer.length) { + const tmp = this.buffer; + this.buffer = Buffer.allocUnsafe(Math.max(this.buffer.length + this.originalSize, this.buffer.length + data.length)); + tmp.copy(this.buffer); + } + data.copy(this.buffer, this.offset); + return (this.offset += data.length); + } + peek(length) { + if (length > this.offset) { + throw new Error('Attempted to read beyond the bounds of the managed internal data.'); + } + return this.buffer.slice(0, length); + } + get(length) { + if (length > this.offset) { + throw new Error('Attempted to read beyond the bounds of the managed internal data.'); + } + const value = Buffer.allocUnsafe(length); + this.buffer.slice(0, length).copy(value); + this.buffer.copyWithin(0, length, length + this.offset - length); + this.offset -= length; + return value; + } +} +exports.ReceiveBuffer = ReceiveBuffer; +//# sourceMappingURL=receivebuffer.js.map \ No newline at end of file diff --git a/node/node_modules/socks/build/common/receivebuffer.js.map b/node/node_modules/socks/build/common/receivebuffer.js.map new file mode 100644 index 0000000000000000000000000000000000000000..ad86c8c818f9b5c698a547186db84507619d2a75 --- /dev/null +++ b/node/node_modules/socks/build/common/receivebuffer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"receivebuffer.js","sourceRoot":"","sources":["../../src/common/receivebuffer.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa;IAKjB,YAAY,IAAI,GAAG,IAAI;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAC9B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CACjC,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QAEtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAEO,sCAAa"} \ No newline at end of file diff --git a/node/node_modules/socks/build/common/util.js b/node/node_modules/socks/build/common/util.js new file mode 100644 index 0000000000000000000000000000000000000000..f66b72e43e3861c519193626fb258e16d55f9ca4 --- /dev/null +++ b/node/node_modules/socks/build/common/util.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.shuffleArray = exports.SocksClientError = void 0; +/** + * Error wrapper for SocksClient + */ +class SocksClientError extends Error { + constructor(message, options) { + super(message); + this.options = options; + } +} +exports.SocksClientError = SocksClientError; +/** + * Shuffles a given array. + * @param array The array to shuffle. + */ +function shuffleArray(array) { + for (let i = array.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [array[i], array[j]] = [array[j], array[i]]; + } +} +exports.shuffleArray = shuffleArray; +//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/node/node_modules/socks/build/common/util.js.map b/node/node_modules/socks/build/common/util.js.map new file mode 100644 index 0000000000000000000000000000000000000000..21281b2357376ecc586c3bd6d56961fe496745af --- /dev/null +++ b/node/node_modules/socks/build/common/util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAM,gBAAiB,SAAQ,KAAK;IAClC,YACE,OAAe,EACR,OAAqD;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,YAAO,GAAP,OAAO,CAA8C;IAG9D,CAAC;CACF;AAaO,4CAAgB;AAXxB;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAgB;IACpC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAEyB,oCAAY"} \ No newline at end of file diff --git a/node/node_modules/socks/build/index.js b/node/node_modules/socks/build/index.js new file mode 100644 index 0000000000000000000000000000000000000000..05fbb1d949b486e962a5143046290fc499990f77 --- /dev/null +++ b/node/node_modules/socks/build/index.js @@ -0,0 +1,18 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./client/socksclient"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node/node_modules/socks/build/index.js.map b/node/node_modules/socks/build/index.js.map new file mode 100644 index 0000000000000000000000000000000000000000..0e2bcb27b8ba1246657793a945bd5a399d579641 --- /dev/null +++ b/node/node_modules/socks/build/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC"} \ No newline at end of file diff --git a/node/node_modules/socks/docs/examples/index.md b/node/node_modules/socks/docs/examples/index.md new file mode 100644 index 0000000000000000000000000000000000000000..87bfe250e208fea1ecc979d5fc2dd421f8df235c --- /dev/null +++ b/node/node_modules/socks/docs/examples/index.md @@ -0,0 +1,17 @@ +# socks examples + +## TypeScript Examples + +[Connect command](typescript/connectExample.md) + +[Bind command](typescript/bindExample.md) + +[Associate command](typescript/associateExample.md) + +## JavaScript Examples + +[Connect command](javascript/connectExample.md) + +[Bind command](javascript/bindExample.md) + +[Associate command](javascript/associateExample.md) \ No newline at end of file diff --git a/node/node_modules/socks/docs/examples/javascript/associateExample.md b/node/node_modules/socks/docs/examples/javascript/associateExample.md new file mode 100644 index 0000000000000000000000000000000000000000..c2c7b17b737977960e6417824dbc2f09ab265e34 --- /dev/null +++ b/node/node_modules/socks/docs/examples/javascript/associateExample.md @@ -0,0 +1,90 @@ +# socks examples + +## Example for SOCKS 'associate' command + +The associate command tells the SOCKS proxy server to establish a UDP relay. The server binds to a new UDP port and communicates the newly opened port back to the origin client. From here, any SOCKS UDP frame packets sent to this special UDP port on the Proxy server will be forwarded to the desired destination, and any responses will be forwarded back to the origin client (you). + +This can be used for things such as DNS queries, and other UDP communicates. + +**Connection Steps** + +1. Client -(associate)-> Proxy (Tells the proxy to create a UDP relay and bind on a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened and is accepting UDP frame packets on) + +At this point the proxy is accepting UDP frames on the specified port. + +3. Client --(udp frame) -> Proxy -> Destination (The origin client sends a UDP frame to the proxy on the UDP port, and the proxy then forwards it to the destination specified in the UDP frame.) +4. Client <--(udp frame) <-- Proxy <-- Destination (The destination client responds to the udp packet sent in #3) + +## Usage + +The 'associate' command can only be used by creating a new SocksClient instance and listening for the 'established' event. + +**Note:** UDP packets relayed through the proxy servers are encompassed in a special Socks UDP frame format. SocksClient.createUDPFrame() and SocksClient.parseUDPFrame() create and parse these special UDP packets. + +```typescript +const dgram = require('dgram'); +const SocksClient = require('socks').SocksClient; + +// Create a local UDP socket for sending/receiving packets to/from the proxy. +const udpSocket = dgram.createSocket('udp4'); +udpSocket.bind(); + +// Listen for incoming UDP packets from the proxy server. +udpSocket.on('message', (message, rinfo) => { + console.log(SocksClient.parseUDPFrame(message)); + /* + { frameNumber: 0, + remoteHost: { host: '8.8.8.8', port: 53 }, // The remote host that replied with a UDP packet + data: // The data + } + */ +}); + +const options = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will be sending UDP frames to the newly opened UDP port on the server. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept UDP frames from any source. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'associate' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new UDP port for UDP relaying. +client.on('established', info => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote port on the SOCKS proxy server to send UDP frame packets to. + host: '104.131.124.203', + port: 58232 + } + } + */ + + // Send a udp frame to 8.8.8.8 on port 53 through the proxy. + const packet = SocksClient.createUDPFrame({ + remoteHost: { host: '8.8.8.8', port: 53 }, + data: Buffer.from('hello') // A DNS lookup in the real world. + }); + + // Send packet. + udpSocket.send(packet, info.remoteHost.port, info.remoteHost.host); +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); +``` diff --git a/node/node_modules/socks/docs/examples/javascript/bindExample.md b/node/node_modules/socks/docs/examples/javascript/bindExample.md new file mode 100644 index 0000000000000000000000000000000000000000..be601d522e7890fe5421a3307e8eaf1dde0bd26c --- /dev/null +++ b/node/node_modules/socks/docs/examples/javascript/bindExample.md @@ -0,0 +1,83 @@ +# socks examples + +## Example for SOCKS 'bind' command + +The bind command tells the SOCKS proxy server to bind and listen on a new TCP port for an incoming connection. It communicates the newly opened port back to the origin client. Once a incoming connection is accepted by the SOCKS proxy server it then communicates the remote host that connected to the SOCKS proxy back through the same initial connection via the origin client. + +This can be used for things such as FTP clients which require incoming TCP connections, etc. + +**Connection Steps** + +1. Client -(bind)-> Proxy (Tells the proxy to bind to a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened) +3. Client2 --> Proxy (Other client connects to the proxy on this port) +4. Client <--(client2's host info) (Proxy tells the origin client who connected to it) +5. Original connection to the proxy is now a full TCP stream between client (you) and client2. +6. Client <--> Proxy <--> Client2 + + +## Usage + +The 'bind' command can only be used by creating a new SocksClient instance and listening for 'bound' and 'established' events. + + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will connect to the SOCKS proxy server on the newly bound port. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept any client. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'bind' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new port for incoming connections. +client.on('bound', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port of the SOCKS proxy that is now accepting incoming connections. + host: '104.131.124.203', + port: 49928 + } + } + */ +}); + +// This event is fired when the SOCKS server has accepted an incoming connection on the newly bound port. +client.on('established', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port that connected to the SOCKS proxy on the newly bound port. + host: '1.2.3.4', + port: 58232 + } + } + */ + + // At this point info.socket is a regular net.Socket TCP connection between client and client2 (1.2.3.4) (the client which connected to the proxy on the newly bound port.) + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); +``` \ No newline at end of file diff --git a/node/node_modules/socks/docs/examples/javascript/connectExample.md b/node/node_modules/socks/docs/examples/javascript/connectExample.md new file mode 100644 index 0000000000000000000000000000000000000000..66244c5b839b55f5262200a66a81bf362a2b85cb --- /dev/null +++ b/node/node_modules/socks/docs/examples/javascript/connectExample.md @@ -0,0 +1,258 @@ +# socks examples + +## Example for SOCKS 'connect' command + +The connect command is the most common use-case for a SOCKS proxy. This establishes a direct connection to a destination host through a proxy server. The destination host only has knowledge of the proxy server connecting to it and does not know about the origin client (you). + +**Origin Client (you) <-> Proxy Server <-> Destination Server** + +In this example, we are connecting to a web server on port 80, and sending a very basic HTTP request to receive a response. It's worth noting that there are many socks-http-agents that can be used with the node http module (and libraries such as request.js) to make this easier. This HTTP request is used as a simple example. + +The 'connect' command can be used via the SocksClient.createConnection() factory function as well as by creating a SocksClient instance and using event handlers. + +### Using createConnection with async/await + +Since SocksClient.createConnection returns a Promise, we can easily use async/await for flow control. + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +async function start() { + try { + const info = await SocksClient.createConnection(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + } catch (err) { + // Handle errors + } +} + +start(); +``` + +### Using createConnection with Promises + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ +}) +.catch(err => { + // handle errors +}); +``` + +### Using createConnection with callbacks + +SocksClient.createConnection() optionally accepts a callback function as a second parameter. + +**Note:** If a callback function is provided, a Promise is still returned from the function, but the promise will always resolve regardless of if there was en error. (tldr: Do not mix callbacks and Promises). + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options, (err, info) => { + if (err) { + // handle errors + } else { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + } +}) +``` + +### Using event handlers + +SocksClient also supports instance creation of a SocksClient. This allows for event based flow control. + +```typescript +const SocksClient = require('socks').SocksClient; + +const options = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +const client = new SocksClient(options); + +client.on('established', (info) => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ +}); + +// Failed to establish proxy connection to destination. +client.on('error', () => { + // Handle errors +}); +``` \ No newline at end of file diff --git a/node/node_modules/socks/docs/examples/typescript/associateExample.md b/node/node_modules/socks/docs/examples/typescript/associateExample.md new file mode 100644 index 0000000000000000000000000000000000000000..e8ca193444b3d5c0ec871682dff3b7642c6e0c48 --- /dev/null +++ b/node/node_modules/socks/docs/examples/typescript/associateExample.md @@ -0,0 +1,93 @@ +# socks examples + +## Example for SOCKS 'associate' command + +The associate command tells the SOCKS proxy server to establish a UDP relay. The server binds to a new UDP port and communicates the newly opened port back to the origin client. From here, any SOCKS UDP frame packets sent to this special UDP port on the Proxy server will be forwarded to the desired destination, and any responses will be forwarded back to the origin client (you). + +This can be used for things such as DNS queries, and other UDP communicates. + +**Connection Steps** + +1. Client -(associate)-> Proxy (Tells the proxy to create a UDP relay and bind on a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened and is accepting UDP frame packets on) + +At this point the proxy is accepting UDP frames on the specified port. + +3. Client --(udp frame) -> Proxy -> Destination (The origin client sends a UDP frame to the proxy on the UDP port, and the proxy then forwards it to the destination specified in the UDP frame.) +4. Client <--(udp frame) <-- Proxy <-- Destination (The destination client responds to the udp packet sent in #3) + +## Usage + +The 'associate' command can only be used by creating a new SocksClient instance and listening for the 'established' event. + +**Note:** UDP packets relayed through the proxy servers are packaged in a special Socks UDP frame format. SocksClient.createUDPFrame() and SocksClient.parseUDPFrame() create and parse these special UDP packets. + +```typescript +import * as dgram from 'dgram'; +import { SocksClient, SocksClientOptions } from 'socks'; + +// Create a local UDP socket for sending/receiving packets to/from the proxy. +const udpSocket = dgram.createSocket('udp4'); +udpSocket.bind(); + +// Listen for incoming UDP packets from the proxy server. +udpSocket.on('message', (message, rinfo) => { + console.log(SocksClient.parseUDPFrame(message)); + /* + { frameNumber: 0, + remoteHost: { host: '8.8.8.8', port: 53 }, // The remote host that replied with a UDP packet + data: // The data + } + */ +}); + +const options: SocksClientOptions = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will be sending UDP frames to the newly opened UDP port on the server. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept UDP frames from any source. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'associate' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new UDP port for UDP relaying. +client.on('established', info => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote port on the SOCKS proxy server to send UDP frame packets to. + host: '104.131.124.203', + port: 58232 + } + } + */ + + // Send a udp frame to 8.8.8.8 on port 53 through the proxy. + const packet = SocksClient.createUDPFrame({ + remoteHost: { host: '8.8.8.8', port: 53 }, + data: Buffer.from('hello') // A DNS lookup in the real world. + }); + + // Send packet. + udpSocket.send(packet, info.remoteHost.port, info.remoteHost.host); +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); + +// Start connection +client.connect(); +``` diff --git a/node/node_modules/socks/docs/examples/typescript/bindExample.md b/node/node_modules/socks/docs/examples/typescript/bindExample.md new file mode 100644 index 0000000000000000000000000000000000000000..6b7607df727f31b096a1941cf08a5c44895aaf75 --- /dev/null +++ b/node/node_modules/socks/docs/examples/typescript/bindExample.md @@ -0,0 +1,86 @@ +# socks examples + +## Example for SOCKS 'bind' command + +The bind command tells the SOCKS proxy server to bind and listen on a new TCP port for an incoming connection. It communicates the newly opened port back to the origin client. Once a incoming connection is accepted by the SOCKS proxy server it then communicates the remote host that connected to the SOCKS proxy back through the same initial connection via the origin client. + +This can be used for things such as FTP clients which require incoming TCP connections, etc. + +**Connection Steps** + +1. Client -(bind)-> Proxy (Tells the proxy to bind to a new port) +2. Client <-(port)- Proxy (Tells the origin client which port it opened) +3. Client2 --> Proxy (Other client connects to the proxy on this port) +4. Client <--(client2's host info) (Proxy tells the origin client who connected to it) +5. Original connection to the proxy is now a full TCP stream between client (you) and client2. +6. Client <--> Proxy <--> Client2 + + +## Usage + +The 'bind' command can only be used by creating a new SocksClient instance and listening for 'bound' and 'established' events. + + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + // This should be the ip and port of the expected client that will connect to the SOCKS proxy server on the newly bound port. + // Most SOCKS servers accept 0.0.0.0 as a wildcard address to accept any client. + destination: { + host: '0.0.0.0', + port: 0 + }, + + command: 'bind' +}; + +const client = new SocksClient(options); + +// This event is fired when the SOCKS server has started listening on a new port for incoming connections. +client.on('bound', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port of the SOCKS proxy that is now accepting incoming connections. + host: '104.131.124.203', + port: 49928 + } + } + */ +}); + +// This event is fired when the SOCKS server has accepted an incoming connection on the newly bound port. +client.on('established', (info) => { + console.log(info); + /* + { + socket: , + remoteHost: { // This is the remote ip and port that connected to the SOCKS proxy on the newly bound port. + host: '1.2.3.4', + port: 58232 + } + } + */ + + // At this point info.socket is a regular net.Socket TCP connection between client and client2 (1.2.3.4) (the client which connected to the proxy on the newly bound port.) + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) +}); + +// SOCKS proxy failed to bind. +client.on('error', () => { + // Handle errors +}); + +// Start connection +client.connect(); +``` \ No newline at end of file diff --git a/node/node_modules/socks/docs/examples/typescript/connectExample.md b/node/node_modules/socks/docs/examples/typescript/connectExample.md new file mode 100644 index 0000000000000000000000000000000000000000..30606d0ba507bda3b9fa0a1c3232cb37e8a99924 --- /dev/null +++ b/node/node_modules/socks/docs/examples/typescript/connectExample.md @@ -0,0 +1,265 @@ +# socks examples + +## Example for SOCKS 'connect' command + +The connect command is the most common use-case for a SOCKS proxy. This establishes a direct connection to a destination host through a proxy server. The destination host only has knowledge of the proxy server connecting to it and does not know about the origin client (you). + +**Origin Client (you) <-> Proxy Server <-> Destination Server** + +In this example, we are connecting to a web server on port 80, and sending a very basic HTTP request to receive a response. It's worth noting that there are many socks-http-agents that can be used with the node http module (and libraries such as request.js) to make this easier. This HTTP request is used as a simple example. + +The 'connect' command can be used via the SocksClient.createConnection() factory function as well as by creating a SocksClient instance and using event handlers. + +### Using createConnection with async/await + +Since SocksClient.createConnection returns a Promise, we can easily use async/await for flow control. + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + host: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +async function start() { + try { + const info = await SocksClient.createConnection(options); + + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); + } catch (err) { + // Handle errors + } +} + +start(); +``` + +### Using createConnection with Promises + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options) +.then(info => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +}) +.catch(err => { + // handle errors +}); +``` + +### Using createConnection with callbacks + +SocksClient.createConnection() optionally accepts a callback function as a second parameter. + +**Note:** If a callback function is provided, a Promise is still returned from the function, but the promise will always resolve regardless of if there was en error. (tldr: Do not mix callbacks and Promises). + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +SocksClient.createConnection(options, (err, info) => { + if (err) { + // handle errors + } else { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); + } +}) +``` + +### Using event handlers + +SocksClient also supports instance creation of a SocksClient. This allows for event based flow control. + +```typescript +import { SocksClient, SocksClientOptions } from 'socks'; + +const options: SocksClientOptions = { + proxy: { + ipaddress: '104.131.124.203', + port: 1081, + type: 5 + }, + + destination: { + host: 'ip-api.com', // host names are supported with SOCKS v4a and SOCKS v5. + port: 80 + }, + + command: 'connect' +}; + +const client = new SocksClient(options); + +client.on('established', (info) => { + console.log(info.socket); + // (this is a raw net.Socket that is established to the destination host through the given proxy servers) + + info.socket.write('GET /json HTTP/1.1\nHost: ip-api.com\n\n'); + info.socket.on('data', (data) => { + console.log(data.toString()); // ip-api.com sees that the last proxy (104.131.124.203) is connected to it and not the origin client (you). + /* + HTTP/1.1 200 OK + Access-Control-Allow-Origin: * + Content-Type: application/json; charset=utf-8 + Date: Sun, 24 Dec 2017 03:47:51 GMT + Content-Length: 300 + + { + "as":"AS14061 Digital Ocean, Inc.", + "city":"Clifton", + "country":"United States", + "countryCode":"US", + "isp":"Digital Ocean", + "lat":40.8326, + "lon":-74.1307, + "org":"Digital Ocean", + "query":"104.131.124.203", + "region":"NJ", + "regionName":"New Jersey", + "status":"success", + "timezone":"America/New_York", + "zip":"07014" + } + */ + }); +}); + +// Failed to establish proxy connection to destination. +client.on('error', () => { + // Handle errors +}); + +// Start connection +client.connect(); +``` \ No newline at end of file diff --git a/node/node_modules/socks/docs/index.md b/node/node_modules/socks/docs/index.md new file mode 100644 index 0000000000000000000000000000000000000000..3eb1d71182b8526f3a9809c2f085dec0f564fd65 --- /dev/null +++ b/node/node_modules/socks/docs/index.md @@ -0,0 +1,5 @@ +# Documentation + +- [API Reference](https://github.com/JoshGlazebrook/socks#api-reference) + +- [Code Examples](./examples/index.md) \ No newline at end of file diff --git a/node/node_modules/socks/docs/migratingFromV1.md b/node/node_modules/socks/docs/migratingFromV1.md new file mode 100644 index 0000000000000000000000000000000000000000..dd008384b9bbfae70096ccf2078721c313b1e15c --- /dev/null +++ b/node/node_modules/socks/docs/migratingFromV1.md @@ -0,0 +1,86 @@ +# socks + +## Migrating from v1 + +For the most part, migrating from v1 takes minimal effort as v2 still supports factory creation of proxy connections with callback support. + +### Notable breaking changes + +- In an options object, the proxy 'command' is now required and does not default to 'connect'. +- **In an options object, 'target' is now known as 'destination'.** +- Sockets are no longer paused after a SOCKS connection is made, so socket.resume() is no longer required. (Please be sure to attach data handlers immediately to the Socket to avoid losing data). +- In v2, only the 'connect' command is supported via the factory SocksClient.createConnection function. (BIND and ASSOCIATE must be used with a SocksClient instance via event handlers). +- In v2, the factory SocksClient.createConnection function callback is called with a single object rather than separate socket and info object. +- A SOCKS http/https agent is no longer bundled into the library. + +For informational purposes, here is the original getting started example from v1 converted to work with v2. + +### Before (v1) + +```javascript +var Socks = require('socks'); + +var options = { + proxy: { + ipaddress: "202.101.228.108", + port: 1080, + type: 5 + }, + target: { + host: "google.com", + port: 80 + }, + command: 'connect' +}; + +Socks.createConnection(options, function(err, socket, info) { + if (err) + console.log(err); + else { + socket.write("GET / HTTP/1.1\nHost: google.com\n\n"); + socket.on('data', function(data) { + console.log(data.length); + console.log(data); + }); + + // PLEASE NOTE: sockets need to be resumed before any data will come in or out as they are paused right before this callback is fired. + socket.resume(); + + // 569 + // = 10.0.0", + "npm": ">= 3.0.0" + }, + "author": "Josh Glazebrook", + "contributors": [ + "castorw" + ], + "license": "MIT", + "readmeFilename": "README.md", + "devDependencies": { + "@types/mocha": "^10.0.6", + "@types/node": "^20.11.17", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "eslint": "^8.20.0", + "mocha": "^10.0.0", + "prettier": "^3.2.5", + "ts-node": "^10.9.1", + "typescript": "^5.3.3" + }, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "scripts": { + "prepublish": "npm install -g typescript && npm run build", + "test": "NODE_ENV=test mocha --recursive --require ts-node/register test/**/*.ts", + "prettier": "prettier --write ./src/**/*.ts --config .prettierrc.yaml", + "lint": "eslint 'src/**/*.ts'", + "build": "rm -rf build typings && prettier --write ./src/**/*.ts --config .prettierrc.yaml && tsc -p .", + "build-raw": "rm -rf build typings && tsc -p ." + } +} diff --git a/node/node_modules/socks/typings/client/socksclient.d.ts b/node/node_modules/socks/typings/client/socksclient.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b886d95710b31c2f6018b237b1e7245aec323dc2 --- /dev/null +++ b/node/node_modules/socks/typings/client/socksclient.d.ts @@ -0,0 +1,162 @@ +/// +/// +/// +import { EventEmitter } from 'events'; +import { SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksClientBoundEvent, SocksClientEstablishedEvent, SocksUDPFrameDetails } from '../common/constants'; +import { SocksClientError } from '../common/util'; +import { Duplex } from 'stream'; +declare interface SocksClient { + on(event: 'error', listener: (err: SocksClientError) => void): this; + on(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; + on(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; + once(event: string, listener: (...args: unknown[]) => void): this; + once(event: 'error', listener: (err: SocksClientError) => void): this; + once(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this; + once(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this; + emit(event: string | symbol, ...args: unknown[]): boolean; + emit(event: 'error', err: SocksClientError): boolean; + emit(event: 'bound', info: SocksClientBoundEvent): boolean; + emit(event: 'established', info: SocksClientEstablishedEvent): boolean; +} +declare class SocksClient extends EventEmitter implements SocksClient { + private options; + private socket; + private state; + private receiveBuffer; + private nextRequiredPacketBufferSize; + private socks5ChosenAuthType; + private onDataReceived; + private onClose; + private onError; + private onConnect; + constructor(options: SocksClientOptions); + /** + * Creates a new SOCKS connection. + * + * Note: Supports callbacks and promises. Only supports the connect command. + * @param options { SocksClientOptions } Options. + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnection(options: SocksClientOptions, callback?: (error: Error | null, info?: SocksClientEstablishedEvent) => void): Promise; + /** + * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. + * + * Note: Supports callbacks and promises. Only supports the connect method. + * Note: Implemented via createConnection() factory function. + * @param options { SocksClientChainOptions } Options + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnectionChain(options: SocksClientChainOptions, callback?: (error: Error | null, socket?: SocksClientEstablishedEvent) => void): Promise; + /** + * Creates a SOCKS UDP Frame. + * @param options + */ + static createUDPFrame(options: SocksUDPFrameDetails): Buffer; + /** + * Parses a SOCKS UDP frame. + * @param data + */ + static parseUDPFrame(data: Buffer): SocksUDPFrameDetails; + /** + * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state. + */ + private setState; + /** + * Starts the connection establishment to the proxy and destination. + * @param existingSocket Connected socket to use instead of creating a new one (internal use). + */ + connect(existingSocket?: Duplex): void; + private getSocketOptions; + /** + * Handles internal Socks timeout callback. + * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed. + */ + private onEstablishedTimeout; + /** + * Handles Socket connect event. + */ + private onConnectHandler; + /** + * Handles Socket data event. + * @param data + */ + private onDataReceivedHandler; + /** + * Handles processing of the data we have received. + */ + private processData; + /** + * Handles Socket close event. + * @param had_error + */ + private onCloseHandler; + /** + * Handles Socket error event. + * @param err + */ + private onErrorHandler; + /** + * Removes internal event listeners on the underlying Socket. + */ + private removeInternalSocketHandlers; + /** + * Closes and destroys the underlying Socket. Emits an error event. + * @param err { String } An error string to include in error event. + */ + private closeSocket; + /** + * Sends initial Socks v4 handshake request. + */ + private sendSocks4InitialHandshake; + /** + * Handles Socks v4 handshake response. + * @param data + */ + private handleSocks4FinalHandshakeResponse; + /** + * Handles Socks v4 incoming connection request (BIND) + * @param data + */ + private handleSocks4IncomingConnectionResponse; + /** + * Sends initial Socks v5 handshake request. + */ + private sendSocks5InitialHandshake; + /** + * Handles initial Socks v5 handshake response. + * @param data + */ + private handleInitialSocks5HandshakeResponse; + /** + * Sends Socks v5 user & password auth handshake. + * + * Note: No auth and user/pass are currently supported. + */ + private sendSocks5UserPassAuthentication; + private sendSocks5CustomAuthentication; + private handleSocks5CustomAuthHandshakeResponse; + private handleSocks5AuthenticationNoAuthHandshakeResponse; + private handleSocks5AuthenticationUserPassHandshakeResponse; + /** + * Handles Socks v5 auth handshake response. + * @param data + */ + private handleInitialSocks5AuthenticationHandshakeResponse; + /** + * Sends Socks v5 final handshake request. + */ + private sendSocks5CommandRequest; + /** + * Handles Socks v5 final handshake response. + * @param data + */ + private handleSocks5FinalHandshakeResponse; + /** + * Handles Socks v5 incoming connection request (BIND). + */ + private handleSocks5IncomingConnectionResponse; + get socksClientOptions(): SocksClientOptions; +} +export { SocksClient, SocksClientOptions, SocksClientChainOptions, SocksClientError, SocksRemoteHost, SocksProxy, SocksUDPFrameDetails, }; diff --git a/node/node_modules/socks/typings/common/constants.d.ts b/node/node_modules/socks/typings/common/constants.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..475dee35c1e728e97e0eb52af66308b6df5cd3dc --- /dev/null +++ b/node/node_modules/socks/typings/common/constants.d.ts @@ -0,0 +1,151 @@ +/// +/// +/// +import { Duplex } from 'stream'; +import { Socket, SocketConnectOpts } from 'net'; +declare const DEFAULT_TIMEOUT = 30000; +type SocksProxyType = 4 | 5; +declare const ERRORS: { + InvalidSocksCommand: string; + InvalidSocksCommandForOperation: string; + InvalidSocksCommandChain: string; + InvalidSocksClientOptionsDestination: string; + InvalidSocksClientOptionsExistingSocket: string; + InvalidSocksClientOptionsProxy: string; + InvalidSocksClientOptionsTimeout: string; + InvalidSocksClientOptionsProxiesLength: string; + InvalidSocksClientOptionsCustomAuthRange: string; + InvalidSocksClientOptionsCustomAuthOptions: string; + NegotiationError: string; + SocketClosed: string; + ProxyConnectionTimedOut: string; + InternalError: string; + InvalidSocks4HandshakeResponse: string; + Socks4ProxyRejectedConnection: string; + InvalidSocks4IncomingConnectionResponse: string; + Socks4ProxyRejectedIncomingBoundConnection: string; + InvalidSocks5InitialHandshakeResponse: string; + InvalidSocks5IntiailHandshakeSocksVersion: string; + InvalidSocks5InitialHandshakeNoAcceptedAuthType: string; + InvalidSocks5InitialHandshakeUnknownAuthType: string; + Socks5AuthenticationFailed: string; + InvalidSocks5FinalHandshake: string; + InvalidSocks5FinalHandshakeRejected: string; + InvalidSocks5IncomingConnectionResponse: string; + Socks5ProxyRejectedIncomingBoundConnection: string; +}; +declare const SOCKS_INCOMING_PACKET_SIZES: { + Socks5InitialHandshakeResponse: number; + Socks5UserPassAuthenticationResponse: number; + Socks5ResponseHeader: number; + Socks5ResponseIPv4: number; + Socks5ResponseIPv6: number; + Socks5ResponseHostname: (hostNameLength: number) => number; + Socks4Response: number; +}; +type SocksCommandOption = 'connect' | 'bind' | 'associate'; +declare enum SocksCommand { + connect = 1, + bind = 2, + associate = 3 +} +declare enum Socks4Response { + Granted = 90, + Failed = 91, + Rejected = 92, + RejectedIdent = 93 +} +declare enum Socks5Auth { + NoAuth = 0, + GSSApi = 1, + UserPass = 2 +} +declare const SOCKS5_CUSTOM_AUTH_START = 128; +declare const SOCKS5_CUSTOM_AUTH_END = 254; +declare const SOCKS5_NO_ACCEPTABLE_AUTH = 255; +declare enum Socks5Response { + Granted = 0, + Failure = 1, + NotAllowed = 2, + NetworkUnreachable = 3, + HostUnreachable = 4, + ConnectionRefused = 5, + TTLExpired = 6, + CommandNotSupported = 7, + AddressNotSupported = 8 +} +declare enum Socks5HostType { + IPv4 = 1, + Hostname = 3, + IPv6 = 4 +} +declare enum SocksClientState { + Created = 0, + Connecting = 1, + Connected = 2, + SentInitialHandshake = 3, + ReceivedInitialHandshakeResponse = 4, + SentAuthentication = 5, + ReceivedAuthenticationResponse = 6, + SentFinalHandshake = 7, + ReceivedFinalResponse = 8, + BoundWaitingForConnection = 9, + Established = 10, + Disconnected = 11, + Error = 99 +} +/** + * Represents a SocksProxy + */ +interface SocksProxy { + ipaddress?: string; + host?: string; + port: number; + type: SocksProxyType; + userId?: string; + password?: string; + custom_auth_method?: number; + custom_auth_request_handler?: () => Promise; + custom_auth_response_size?: number; + custom_auth_response_handler?: (data: Buffer) => Promise; +} +/** + * Represents a remote host + */ +interface SocksRemoteHost { + host: string; + port: number; +} +/** + * SocksClient connection options. + */ +interface SocksClientOptions { + command: SocksCommandOption; + destination: SocksRemoteHost; + proxy: SocksProxy; + timeout?: number; + existing_socket?: Duplex; + set_tcp_nodelay?: boolean; + socket_options?: SocketConnectOpts; +} +/** + * SocksClient chain connection options. + */ +interface SocksClientChainOptions { + command: 'connect'; + destination: SocksRemoteHost; + proxies: SocksProxy[]; + timeout?: number; + randomizeChain?: false; +} +interface SocksClientEstablishedEvent { + socket: Socket; + remoteHost?: SocksRemoteHost; +} +type SocksClientBoundEvent = SocksClientEstablishedEvent; +interface SocksUDPFrameDetails { + frameNumber?: number; + remoteHost: SocksRemoteHost; + data: Buffer; +} +export { DEFAULT_TIMEOUT, ERRORS, SocksProxyType, SocksCommand, Socks4Response, Socks5Auth, Socks5HostType, Socks5Response, SocksClientState, SocksProxy, SocksRemoteHost, SocksCommandOption, SocksClientOptions, SocksClientChainOptions, SocksClientEstablishedEvent, SocksClientBoundEvent, SocksUDPFrameDetails, SOCKS_INCOMING_PACKET_SIZES, SOCKS5_CUSTOM_AUTH_START, SOCKS5_CUSTOM_AUTH_END, SOCKS5_NO_ACCEPTABLE_AUTH, }; diff --git a/node/node_modules/socks/typings/common/helpers.d.ts b/node/node_modules/socks/typings/common/helpers.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5bad9fe11cee1628475b3294ac19fda43001c947 --- /dev/null +++ b/node/node_modules/socks/typings/common/helpers.d.ts @@ -0,0 +1,17 @@ +/// +import { SocksClientOptions, SocksClientChainOptions } from '../client/socksclient'; +/** + * Validates the provided SocksClientOptions + * @param options { SocksClientOptions } + * @param acceptedCommands { string[] } A list of accepted SocksProxy commands. + */ +declare function validateSocksClientOptions(options: SocksClientOptions, acceptedCommands?: string[]): void; +/** + * Validates the SocksClientChainOptions + * @param options { SocksClientChainOptions } + */ +declare function validateSocksClientChainOptions(options: SocksClientChainOptions): void; +export { validateSocksClientOptions, validateSocksClientChainOptions }; +export declare function ipv4ToInt32(ip: string): number; +export declare function int32ToIpv4(int32: number): string; +export declare function ipToBuffer(ip: string): Buffer; diff --git a/node/node_modules/socks/typings/common/receivebuffer.d.ts b/node/node_modules/socks/typings/common/receivebuffer.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..756e98b5893ed818b8948951627e2fc4113afbf3 --- /dev/null +++ b/node/node_modules/socks/typings/common/receivebuffer.d.ts @@ -0,0 +1,12 @@ +/// +declare class ReceiveBuffer { + private buffer; + private offset; + private originalSize; + constructor(size?: number); + get length(): number; + append(data: Buffer): number; + peek(length: number): Buffer; + get(length: number): Buffer; +} +export { ReceiveBuffer }; diff --git a/node/node_modules/socks/typings/common/util.d.ts b/node/node_modules/socks/typings/common/util.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8612026271feb8ad9b2a5ab0863af2f0db0bcb79 --- /dev/null +++ b/node/node_modules/socks/typings/common/util.d.ts @@ -0,0 +1,14 @@ +import { SocksClientOptions, SocksClientChainOptions } from './constants'; +/** + * Error wrapper for SocksClient + */ +declare class SocksClientError extends Error { + options: SocksClientOptions | SocksClientChainOptions; + constructor(message: string, options: SocksClientOptions | SocksClientChainOptions); +} +/** + * Shuffles a given array. + * @param array The array to shuffle. + */ +declare function shuffleArray(array: unknown[]): void; +export { SocksClientError, shuffleArray }; diff --git a/node/node_modules/socks/typings/index.d.ts b/node/node_modules/socks/typings/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..fbf9006ef1d3de072b22a34fbba96680bd3dadb5 --- /dev/null +++ b/node/node_modules/socks/typings/index.d.ts @@ -0,0 +1 @@ +export * from './client/socksclient'; diff --git a/node/node_modules/swiper/LICENSE b/node/node_modules/swiper/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a7876ca731acb4b434d775a69c5796b42da9ee43 --- /dev/null +++ b/node/node_modules/swiper/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node/node_modules/swiper/README.md b/node/node_modules/swiper/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d4e726ca5bcf51859b34afd2be494f6576d52713 --- /dev/null +++ b/node/node_modules/swiper/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/swiper-api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/node/node_modules/swiper/modules/a11y-element.css b/node/node_modules/swiper/modules/a11y-element.css new file mode 100644 index 0000000000000000000000000000000000000000..c5f9eec4567ddd10b44bcbc612ce0bcafc2d9a33 --- /dev/null +++ b/node/node_modules/swiper/modules/a11y-element.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/node/node_modules/swiper/modules/a11y-element.min.css b/node/node_modules/swiper/modules/a11y-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..78c39d57a6844da23d09cec8178b630b85ce92fb --- /dev/null +++ b/node/node_modules/swiper/modules/a11y-element.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/a11y.css b/node/node_modules/swiper/modules/a11y.css new file mode 100644 index 0000000000000000000000000000000000000000..c5f9eec4567ddd10b44bcbc612ce0bcafc2d9a33 --- /dev/null +++ b/node/node_modules/swiper/modules/a11y.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/node/node_modules/swiper/modules/a11y.less b/node/node_modules/swiper/modules/a11y.less new file mode 100644 index 0000000000000000000000000000000000000000..c5f9eec4567ddd10b44bcbc612ce0bcafc2d9a33 --- /dev/null +++ b/node/node_modules/swiper/modules/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/node/node_modules/swiper/modules/a11y.min.css b/node/node_modules/swiper/modules/a11y.min.css new file mode 100644 index 0000000000000000000000000000000000000000..78c39d57a6844da23d09cec8178b630b85ce92fb --- /dev/null +++ b/node/node_modules/swiper/modules/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/a11y.min.mjs b/node/node_modules/swiper/modules/a11y.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..8cfaeac0d2fd9a72213e198c9245fafa85f9e779 --- /dev/null +++ b/node/node_modules/swiper/modules/a11y.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElement,h as elementIndex,m as makeElementsArray}from"../shared/utils.min.mjs";function A11y(e){let{swiper:a,extendParams:t,on:n}=e;t({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}}),a.a11y={clicked:!1};let i=null;function s(e){const a=i;0!==a.length&&(a.innerHTML="",a.innerHTML=e)}function r(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function l(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function o(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("role",a)}))}function c(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-roledescription",a)}))}function d(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-label",a)}))}function p(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function g(e){if(13!==e.keyCode&&32!==e.keyCode)return;const t=a.params.a11y,n=e.target;a.pagination&&a.pagination.el&&(n===a.pagination.el||a.pagination.el.contains(e.target))&&!e.target.matches(classesToSelector(a.params.pagination.bulletClass))||(a.navigation&&a.navigation.nextEl&&n===a.navigation.nextEl&&(a.isEnd&&!a.params.loop||a.slideNext(),a.isEnd?s(t.lastSlideMessage):s(t.nextSlideMessage)),a.navigation&&a.navigation.prevEl&&n===a.navigation.prevEl&&(a.isBeginning&&!a.params.loop||a.slidePrev(),a.isBeginning?s(t.firstSlideMessage):s(t.prevSlideMessage)),a.pagination&&n.matches(classesToSelector(a.params.pagination.bulletClass))&&n.click())}function u(){return a.pagination&&a.pagination.bullets&&a.pagination.bullets.length}function E(){return u()&&a.params.pagination.clickable}const f=(e,a,t)=>{r(e),"BUTTON"!==e.tagName&&(o(e,"button"),e.addEventListener("keydown",g)),d(e,t),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-controls",a)}))}(e,a)},v=()=>{a.a11y.clicked=!0},b=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{a.destroyed||(a.a11y.clicked=!1)}))}))},y=e=>{if(a.a11y.clicked)return;const t=e.target.closest(`.${a.params.slideClass}, swiper-slide`);if(!t||!a.slides.includes(t))return;const n=a.slides.indexOf(t)===a.activeIndex,i=a.params.watchSlidesProgress&&a.visibleSlides&&a.visibleSlides.includes(t);n||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(a.isHorizontal()?a.el.scrollLeft=0:a.el.scrollTop=0,a.slideTo(a.slides.indexOf(t),0))},h=()=>{const e=a.params.a11y;e.itemRoleDescriptionMessage&&c(a.slides,e.itemRoleDescriptionMessage),e.slideRole&&o(a.slides,e.slideRole);const t=a.slides.length;e.slideLabelMessage&&a.slides.forEach(((n,i)=>{const s=a.params.loop?parseInt(n.getAttribute("data-swiper-slide-index"),10):i;d(n,e.slideLabelMessage.replace(/\{\{index\}\}/,s+1).replace(/\{\{slidesLength\}\}/,t))}))},A=()=>{const e=a.params.a11y;a.el.append(i);const t=a.el;e.containerRoleDescriptionMessage&&c(t,e.containerRoleDescriptionMessage),e.containerMessage&&d(t,e.containerMessage);const n=a.wrapperEl,s=e.id||n.getAttribute("id")||`swiper-wrapper-${r=16,void 0===r&&(r=16),"x".repeat(r).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var r;const l=a.params.autoplay&&a.params.autoplay.enabled?"off":"polite";var o;o=s,makeElementsArray(n).forEach((e=>{e.setAttribute("id",o)})),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-live",a)}))}(n,l),h();let{nextEl:p,prevEl:m}=a.navigation?a.navigation:{};if(p=makeElementsArray(p),m=makeElementsArray(m),p&&p.forEach((a=>f(a,s,e.nextSlideMessage))),m&&m.forEach((a=>f(a,s,e.prevSlideMessage))),E()){makeElementsArray(a.pagination.el).forEach((e=>{e.addEventListener("keydown",g)}))}a.el.addEventListener("focus",y,!0),a.el.addEventListener("pointerdown",v,!0),a.el.addEventListener("pointerup",b,!0)};n("beforeInit",(()=>{i=createElement("span",a.params.a11y.notificationClass),i.setAttribute("aria-live","assertive"),i.setAttribute("aria-atomic","true")})),n("afterInit",(()=>{a.params.a11y.enabled&&A()})),n("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{a.params.a11y.enabled&&h()})),n("fromEdge toEdge afterInit lock unlock",(()=>{a.params.a11y.enabled&&function(){if(a.params.loop||a.params.rewind||!a.navigation)return;const{nextEl:e,prevEl:t}=a.navigation;t&&(a.isBeginning?(p(t),l(t)):(m(t),r(t))),e&&(a.isEnd?(p(e),l(e)):(m(e),r(e)))}()})),n("paginationUpdate",(()=>{a.params.a11y.enabled&&function(){const e=a.params.a11y;u()&&a.pagination.bullets.forEach((t=>{a.params.pagination.clickable&&(r(t),a.params.pagination.renderBullet||(o(t,"button"),d(t,e.paginationBulletMessage.replace(/\{\{index\}\}/,elementIndex(t)+1)))),t.matches(classesToSelector(a.params.pagination.bulletActiveClass))?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")}))}()})),n("destroy",(()=>{a.params.a11y.enabled&&function(){i&&i.remove();let{nextEl:e,prevEl:t}=a.navigation?a.navigation:{};e=makeElementsArray(e),t=makeElementsArray(t),e&&e.forEach((e=>e.removeEventListener("keydown",g))),t&&t.forEach((e=>e.removeEventListener("keydown",g))),E()&&makeElementsArray(a.pagination.el).forEach((e=>{e.removeEventListener("keydown",g)}));a.el.removeEventListener("focus",y,!0),a.el.removeEventListener("pointerdown",v,!0),a.el.removeEventListener("pointerup",b,!0)}()}))}export{A11y as default}; +//# sourceMappingURL=a11y.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/a11y.min.mjs.map b/node/node_modules/swiper/modules/a11y.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..adfeec70cc8fb8379c3e3d402f1a3fd5207064d6 --- /dev/null +++ b/node/node_modules/swiper/modules/a11y.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"a11y.mjs.mjs","names":["classesToSelector","createElement","elementIndex","makeElementsArray","A11y","_ref","swiper","extendParams","on","a11y","enabled","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","clicked","liveRegion","notify","message","notification","length","innerHTML","makeElFocusable","el","forEach","subEl","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","e","keyCode","params","targetEl","target","pagination","contains","matches","bulletClass","navigation","nextEl","isEnd","loop","slideNext","prevEl","isBeginning","slidePrev","click","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","addEventListener","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","handleFocus","slideEl","closest","slideClass","slides","includes","isActive","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideTo","initSlides","slidesLength","index","slideIndex","parseInt","getAttribute","replace","init","append","containerEl","wrapperEl","size","repeat","Math","round","random","toString","live","autoplay","addElLive","rewind","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","remove","removeEventListener","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/a11y.mjs b/node/node_modules/swiper/modules/a11y.mjs new file mode 100644 index 0000000000000000000000000000000000000000..6a6cab87c10f4323dcfcebca5b837b3eefc2c83e --- /dev/null +++ b/node/node_modules/swiper/modules/a11y.mjs @@ -0,0 +1,342 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs'; + +function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +export { A11y as default }; diff --git a/node/node_modules/swiper/modules/a11y.scss b/node/node_modules/swiper/modules/a11y.scss new file mode 100644 index 0000000000000000000000000000000000000000..c5f9eec4567ddd10b44bcbc612ce0bcafc2d9a33 --- /dev/null +++ b/node/node_modules/swiper/modules/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/node/node_modules/swiper/modules/autoplay-element.css b/node/node_modules/swiper/modules/autoplay-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/autoplay-element.min.css b/node/node_modules/swiper/modules/autoplay-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/autoplay.css b/node/node_modules/swiper/modules/autoplay.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/autoplay.less b/node/node_modules/swiper/modules/autoplay.less new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/autoplay.min.css b/node/node_modules/swiper/modules/autoplay.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/autoplay.min.mjs b/node/node_modules/swiper/modules/autoplay.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..a5b77e592c2281dcd7410ee9d15beae6fe7f1158 --- /dev/null +++ b/node/node_modules/swiper/modules/autoplay.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay(e){let a,t,{swiper:n,extendParams:r,on:i,emit:o,params:s}=e;n.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let p,l,u,d,y,m,c,g,v=s&&s.autoplay?s.autoplay.delay:3e3,T=s&&s.autoplay?s.autoplay.delay:3e3,f=(new Date).getTime();function w(e){n&&!n.destroyed&&n.wrapperEl&&e.target===n.wrapperEl&&(n.wrapperEl.removeEventListener("transitionend",w),g||S())}const E=()=>{if(n.destroyed||!n.autoplay.running)return;n.autoplay.paused?l=!0:l&&(T=p,l=!1);const e=n.autoplay.paused?p:f+T-(new Date).getTime();n.autoplay.timeLeft=e,o("autoplayTimeLeft",e,e/v),t=requestAnimationFrame((()=>{E()}))},b=e=>{if(n.destroyed||!n.autoplay.running)return;cancelAnimationFrame(t),E();let r=void 0===e?n.params.autoplay.delay:e;v=n.params.autoplay.delay,T=n.params.autoplay.delay;const i=(()=>{let e;if(e=n.virtual&&n.params.virtual.enabled?n.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:n.slides[n.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(i)&&i>0&&void 0===e&&(r=i,v=i,T=i),p=r;const s=n.params.speed,l=()=>{n&&!n.destroyed&&(n.params.autoplay.reverseDirection?!n.isBeginning||n.params.loop||n.params.rewind?(n.slidePrev(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(n.slides.length-1,s,!0,!0),o("autoplay")):!n.isEnd||n.params.loop||n.params.rewind?(n.slideNext(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(0,s,!0,!0),o("autoplay")),n.params.cssMode&&(f=(new Date).getTime(),requestAnimationFrame((()=>{b()}))))};return r>0?(clearTimeout(a),a=setTimeout((()=>{l()}),r)):requestAnimationFrame((()=>{l()})),r},L=()=>{f=(new Date).getTime(),n.autoplay.running=!0,b(),o("autoplayStart")},D=()=>{n.autoplay.running=!1,clearTimeout(a),cancelAnimationFrame(t),o("autoplayStop")},O=(e,t)=>{if(n.destroyed||!n.autoplay.running)return;clearTimeout(a),e||(c=!0);const r=()=>{o("autoplayPause"),n.params.autoplay.waitForTransition?n.wrapperEl.addEventListener("transitionend",w):S()};if(n.autoplay.paused=!0,t)return m&&(p=n.params.autoplay.delay),m=!1,void r();const i=p||n.params.autoplay.delay;p=i-((new Date).getTime()-f),n.isEnd&&p<0&&!n.params.loop||(p<0&&(p=0),r())},S=()=>{n.isEnd&&p<0&&!n.params.loop||n.destroyed||!n.autoplay.running||(f=(new Date).getTime(),c?(c=!1,b(p)):b(),n.autoplay.paused=!1,o("autoplayResume"))},A=()=>{if(n.destroyed||!n.autoplay.running)return;const e=getDocument();"hidden"===e.visibilityState&&(c=!0,O(!0)),"visible"===e.visibilityState&&S()},F=e=>{"mouse"===e.pointerType&&(c=!0,g=!0,n.animating||n.autoplay.paused||O(!0))},M=e=>{"mouse"===e.pointerType&&(g=!1,n.autoplay.paused&&S())};i("init",(()=>{n.params.autoplay.enabled&&(n.params.autoplay.pauseOnMouseEnter&&(n.el.addEventListener("pointerenter",F),n.el.addEventListener("pointerleave",M)),getDocument().addEventListener("visibilitychange",A),L())})),i("destroy",(()=>{n.el.removeEventListener("pointerenter",F),n.el.removeEventListener("pointerleave",M),getDocument().removeEventListener("visibilitychange",A),n.autoplay.running&&D()})),i("_freeModeStaticRelease",(()=>{(d||c)&&S()})),i("_freeModeNoMomentumRelease",(()=>{n.params.autoplay.disableOnInteraction?D():O(!0,!0)})),i("beforeTransitionStart",((e,a,t)=>{!n.destroyed&&n.autoplay.running&&(t||!n.params.autoplay.disableOnInteraction?O(!0,!0):D())})),i("sliderFirstMove",(()=>{!n.destroyed&&n.autoplay.running&&(n.params.autoplay.disableOnInteraction?D():(u=!0,d=!1,c=!1,y=setTimeout((()=>{c=!0,d=!0,O(!0)}),200)))})),i("touchEnd",(()=>{if(!n.destroyed&&n.autoplay.running&&u){if(clearTimeout(y),clearTimeout(a),n.params.autoplay.disableOnInteraction)return d=!1,void(u=!1);d&&n.params.cssMode&&S(),d=!1,u=!1}})),i("slideChange",(()=>{!n.destroyed&&n.autoplay.running&&(m=!0)})),Object.assign(n.autoplay,{start:L,stop:D,pause:O,resume:S})}export{Autoplay as default}; +//# sourceMappingURL=autoplay.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/autoplay.min.mjs.map b/node/node_modules/swiper/modules/autoplay.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..0f086c13ecbedccdb1375e1f469526948177860b --- /dev/null +++ b/node/node_modules/swiper/modules/autoplay.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"autoplay.mjs.mjs","names":["getDocument","Autoplay","_ref","timeout","raf","swiper","extendParams","on","emit","params","autoplay","running","paused","timeLeft","enabled","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","e","destroyed","wrapperEl","target","removeEventListener","resume","calcTimeLeft","requestAnimationFrame","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","virtual","slides","filter","slideEl","classList","contains","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","speed","proceed","isBeginning","loop","rewind","slidePrev","slideTo","length","isEnd","slideNext","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","addEventListener","onVisibilityChange","document","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","el","_s","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/autoplay.mjs b/node/node_modules/swiper/modules/autoplay.mjs new file mode 100644 index 0000000000000000000000000000000000000000..5e54974688da749ab2d95fea9543d085990ab15d --- /dev/null +++ b/node/node_modules/swiper/modules/autoplay.mjs @@ -0,0 +1,302 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; + +/* eslint no-underscore-dangle: "off" */ +/* eslint no-use-before-define: "off" */ +function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); +} + +export { Autoplay as default }; diff --git a/node/node_modules/swiper/modules/autoplay.scss b/node/node_modules/swiper/modules/autoplay.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/controller-element.css b/node/node_modules/swiper/modules/controller-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/controller-element.min.css b/node/node_modules/swiper/modules/controller-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/controller.css b/node/node_modules/swiper/modules/controller.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/controller.less b/node/node_modules/swiper/modules/controller.less new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/controller.min.css b/node/node_modules/swiper/modules/controller.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/controller.min.mjs b/node/node_modules/swiper/modules/controller.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..1e9a224fdb200c6e72bcfb21564584132d1589f6 --- /dev/null +++ b/node/node_modules/swiper/modules/controller.min.mjs @@ -0,0 +1,2 @@ +import{n as nextTick,k as elementTransitionEnd}from"../shared/utils.min.mjs";function Controller(t){let{swiper:e,extendParams:n,on:r}=t;function o(t,e){const n=function(){let t,e,n;return(r,o)=>{for(e=-1,t=r.length;t-e>1;)n=t+e>>1,r[n]<=o?e=n:t=n;return t}}();let r,o;return this.x=t,this.y=e,this.lastIndex=t.length-1,this.interpolate=function(t){return t?(o=n(this.x,t),r=o-1,(t-this.x[r])*(this.y[o]-this.y[r])/(this.x[o]-this.x[r])+this.y[r]):0},this}function l(){e.controller.control&&e.controller.spline&&(e.controller.spline=void 0,delete e.controller.spline)}n({controller:{control:void 0,inverse:!1,by:"slide"}}),e.controller={control:void 0},r("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof e.params.controller.control||e.params.controller.control instanceof HTMLElement)){const t=document.querySelector(e.params.controller.control);if(t&&t.swiper)e.controller.control=t.swiper;else if(t){const n=r=>{e.controller.control=r.detail[0],e.update(),t.removeEventListener("init",n)};t.addEventListener("init",n)}}else e.controller.control=e.params.controller.control})),r("update",(()=>{l()})),r("resize",(()=>{l()})),r("observerUpdate",(()=>{l()})),r("setTranslate",((t,n,r)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTranslate(n,r)})),r("setTransition",((t,n,r)=>{e.controller.control&&!e.controller.control.destroyed&&e.controller.setTransition(n,r)})),Object.assign(e.controller,{setTranslate:function(t,n){const r=e.controller.control;let l,s;const i=e.constructor;function a(t){if(t.destroyed)return;const n=e.rtlTranslate?-e.translate:e.translate;"slide"===e.params.controller.by&&(!function(t){e.controller.spline=e.params.loop?new o(e.slidesGrid,t.slidesGrid):new o(e.snapGrid,t.snapGrid)}(t),s=-e.controller.spline.interpolate(-n)),s&&"container"!==e.params.controller.by||(l=(t.maxTranslate()-t.minTranslate())/(e.maxTranslate()-e.minTranslate()),!Number.isNaN(l)&&Number.isFinite(l)||(l=1),s=(n-e.minTranslate())*l+t.minTranslate()),e.params.controller.inverse&&(s=t.maxTranslate()-s),t.updateProgress(s),t.setTranslate(s,e),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(r))for(let t=0;t{n.updateAutoHeight()})),elementTransitionEnd(n.wrapperEl,(()=>{o&&n.transitionEnd()}))))}if(Array.isArray(o))for(l=0;l>"] }] */ +function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +export { Controller as default }; diff --git a/node/node_modules/swiper/modules/controller.scss b/node/node_modules/swiper/modules/controller.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/effect-cards-element.css b/node/node_modules/swiper/modules/effect-cards-element.css new file mode 100644 index 0000000000000000000000000000000000000000..f8310100aad7d49a89e5d147071e3241535b4578 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards-element.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards ::slotted(swiper-slide) { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/node/node_modules/swiper/modules/effect-cards-element.min.css b/node/node_modules/swiper/modules/effect-cards-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..97c6648514b25edf6ea012329a0bde48d7ef1785 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards-element.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cards.css b/node/node_modules/swiper/modules/effect-cards.css new file mode 100644 index 0000000000000000000000000000000000000000..4b9f64b810a6c2d7105ec8001d3ec0f239c25866 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/node/node_modules/swiper/modules/effect-cards.less b/node/node_modules/swiper/modules/effect-cards.less new file mode 100644 index 0000000000000000000000000000000000000000..ab9034258faa21c1f144a83ecd1a1a4d0ae6c348 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards.less @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/node/node_modules/swiper/modules/effect-cards.min.css b/node/node_modules/swiper/modules/effect-cards.min.css new file mode 100644 index 0000000000000000000000000000000000000000..1769ef29bcce33618635b94a12688d5bc52474c8 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cards.min.mjs b/node/node_modules/swiper/modules/effect-cards.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..2b2e86c8dae40983ffef7a257db83d3ada0fcbfc --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards(e){let{swiper:t,extendParams:a,on:s}=e;a({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:t,on:s,setTranslate:()=>{const{slides:e,activeIndex:a,rtlTranslate:s}=t,r=t.params.cardsEffect,{startTranslate:i,isTouched:n}=t.touchEventsData,o=s?-t.translate:t.translate;for(let l=0;l0&&c<1&&(n||t.params.cssMode)&&o-1&&(n||t.params.cssMode)&&o>i;if(E||T){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;w+=-28*c*e,u+=-.5*e,S+=96*e,h=-25*e*Math.abs(c)+"%"}if(p=c<0?`calc(${p}px ${s?"-":"+"} (${S*Math.abs(c)}%))`:c>0?`calc(${p}px ${s?"-":"+"} (-${S*Math.abs(c)}%))`:`${p}px`,!t.isHorizontal()){const e=h;h=p,p=e}const g=c<0?""+(1+(1-u)*c):""+(1-(1-u)*c),x=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-w:w:0}deg)\n scale(${g})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(f))+e.length;effectTarget(r,d).style.transform=x}},setTransition:e=>{const a=t.slides.map((e=>getSlideTransformEl(e)));a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCards as default}; +//# sourceMappingURL=effect-cards.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cards.min.mjs.map b/node/node_modules/swiper/modules/effect-cards.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..e23f3379b8820ca1b13148fcc721701f0dde4916 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cards.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","_ref","swiper","extendParams","on","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","effect","setTranslate","slides","activeIndex","rtlTranslate","rtl","params","startTranslate","isTouched","touchEventsData","currentTranslate","translate","i","length","slideEl","slideProgress","progress","Math","min","max","offset","swiperSlideOffset","centeredSlides","cssMode","wrapperEl","style","transform","minTranslate","tX","tY","tZ","abs","scale","tXAdd","slideIndex","virtual","enabled","from","isSwipeToNext","isSwipeToPrev","subProgress","isHorizontal","prevY","scaleString","shadowEl","querySelector","opacity","zIndex","round","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","perspective","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cards.mjs b/node/node_modules/swiper/modules/effect-cards.mjs new file mode 100644 index 0000000000000000000000000000000000000000..27e577a2b1c1e23521e93614e02cfc96ba44c267 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards.mjs @@ -0,0 +1,125 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCards as default }; diff --git a/node/node_modules/swiper/modules/effect-cards.scss b/node/node_modules/swiper/modules/effect-cards.scss new file mode 100644 index 0000000000000000000000000000000000000000..ab9034258faa21c1f144a83ecd1a1a4d0ae6c348 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cards.scss @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/node/node_modules/swiper/modules/effect-coverflow-element.css b/node/node_modules/swiper/modules/effect-coverflow-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/effect-coverflow-element.min.css b/node/node_modules/swiper/modules/effect-coverflow-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/effect-coverflow.css b/node/node_modules/swiper/modules/effect-coverflow.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/effect-coverflow.less b/node/node_modules/swiper/modules/effect-coverflow.less new file mode 100644 index 0000000000000000000000000000000000000000..ac504bf1a62d44495f7d7ecb7a115b7834dda1e4 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-coverflow.less @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/node/node_modules/swiper/modules/effect-coverflow.min.css b/node/node_modules/swiper/modules/effect-coverflow.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/effect-coverflow.min.mjs b/node/node_modules/swiper/modules/effect-coverflow.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..e116989e215d3b81edf0675faab1fd33c0bb3c65 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-coverflow.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCoverflow(e){let{swiper:t,extendParams:s,on:r}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}});effectInit({effect:"coverflow",swiper:t,on:r,setTranslate:()=>{const{width:e,height:s,slides:r,slidesSizesGrid:a}=t,o=t.params.coverflowEffect,i=t.isHorizontal(),l=t.translate,f=i?e/2-l:s/2-l,d=i?o.rotate:-o.rotate,h=o.depth;for(let e=0,s=r.length;e0?n:0),t&&(t.style.opacity=-n>0?-n:0)}}},setTransition:e=>{t.slides.map((e=>getSlideTransformEl(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}export{EffectCoverflow as default}; +//# sourceMappingURL=effect-coverflow.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-coverflow.min.mjs.map b/node/node_modules/swiper/modules/effect-coverflow.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..4b71baf7007ac18efae3efab8e9c0563fb8fda72 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-coverflow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-coverflow.mjs.mjs","names":["createShadow","effectInit","effectTarget","getSlideTransformEl","EffectCoverflow","_ref","swiper","extendParams","on","coverflowEffect","rotate","stretch","depth","scale","modifier","slideShadows","effect","setTranslate","width","swiperWidth","height","swiperHeight","slides","slidesSizesGrid","params","isHorizontal","transform","translate","center","i","length","slideEl","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","Math","abs","indexOf","parseFloat","translateY","translateX","browser","need3dFix","slideTransform","style","zIndex","round","shadowBeforeEl","querySelector","shadowAfterEl","opacity","setTransition","duration","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","perspective","overwriteParams","watchSlidesProgress"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-coverflow.mjs b/node/node_modules/swiper/modules/effect-coverflow.mjs new file mode 100644 index 0000000000000000000000000000000000000000..819c44b619dfda9ccc082e73de77d236d6215b3f --- /dev/null +++ b/node/node_modules/swiper/modules/effect-coverflow.mjs @@ -0,0 +1,111 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.need3dFix) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +export { EffectCoverflow as default }; diff --git a/node/node_modules/swiper/modules/effect-coverflow.scss b/node/node_modules/swiper/modules/effect-coverflow.scss new file mode 100644 index 0000000000000000000000000000000000000000..ac504bf1a62d44495f7d7ecb7a115b7834dda1e4 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-coverflow.scss @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/node/node_modules/swiper/modules/effect-creative-element.css b/node/node_modules/swiper/modules/effect-creative-element.css new file mode 100644 index 0000000000000000000000000000000000000000..6ccf22b62fd70ac3973ba4ad12b82918ceabdaeb --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative-element.css @@ -0,0 +1,6 @@ +.swiper-creative ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/node/node_modules/swiper/modules/effect-creative-element.min.css b/node/node_modules/swiper/modules/effect-creative-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..70fb70574c841d519df70f63caf03e09d8ca64ea --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative-element.min.css @@ -0,0 +1 @@ +.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-creative.css b/node/node_modules/swiper/modules/effect-creative.css new file mode 100644 index 0000000000000000000000000000000000000000..2082494168b6669184b57202698ec94caeab7c03 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative.css @@ -0,0 +1,6 @@ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/node/node_modules/swiper/modules/effect-creative.less b/node/node_modules/swiper/modules/effect-creative.less new file mode 100644 index 0000000000000000000000000000000000000000..b893cad5c8331ff785b6ee6c54df91bed4bccf34 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative.less @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/node/node_modules/swiper/modules/effect-creative.min.css b/node/node_modules/swiper/modules/effect-creative.min.css new file mode 100644 index 0000000000000000000000000000000000000000..404da2c284e73470c47b8eede4af00d7ae7e5f23 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-creative.min.mjs b/node/node_modules/swiper/modules/effect-creative.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..5147f345a0a65783741e0e0bb0671e92dc1a51fe --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCreative(e){let{swiper:t,extendParams:r,on:s}=e;r({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:t,on:s,setTranslate:()=>{const{slides:e,wrapperEl:r,slidesSizesGrid:s}=t,i=t.params.creativeEffect,{progressMultiplier:o}=i,l=t.params.centeredSlides;if(l){const e=s[0]/2-t.params.slidesOffsetBefore||0;r.style.transform=`translateX(calc(50% - ${e}px))`}for(let r=0;r0&&(g=i.prev,h=!0),p.forEach(((e,t)=>{p[t]=`calc(${e}px + (${a(g.translate[t])} * ${Math.abs(c*o)}))`})),d.forEach(((e,r)=>{let s=g.rotate[r]*Math.abs(c*o);t.browser&&t.browser.need3dFix&&Math.abs(s)/90%2==1&&(s+=.001),d[r]=s})),s.style.zIndex=-Math.abs(Math.round(n))+e.length;const w=p.join(", "),y=`rotateX(${d[0]}deg) rotateY(${d[1]}deg) rotateZ(${d[2]}deg)`,M=f<0?`scale(${1+(1-g.scale)*f*o})`:`scale(${1-(1-g.scale)*f*o})`,u=f<0?1+(1-g.opacity)*f*o:1-(1-g.opacity)*f*o,v=`translate3d(${w}) ${y} ${M}`;if(h&&g.shadow||!h){let e=s.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=createShadow("creative",s)),e){const t=i.shadowPerProgress?c*(1/i.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=effectTarget(i,s);E.style.transform=v,E.style.opacity=u,g.origin&&(E.style.transformOrigin=g.origin)}},setTransition:e=>{const r=t.slides.map((e=>getSlideTransformEl(e)));r.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:r,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCreative as default}; +//# sourceMappingURL=effect-creative.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-creative.min.mjs.map b/node/node_modules/swiper/modules/effect-creative.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..467a9e9ae6db5062a8741439c3f978a5b40e4394 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-creative.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCreative","_ref","swiper","extendParams","on","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","prev","translate","rotate","opacity","scale","next","getTranslateValue","value","effect","setTranslate","slides","wrapperEl","slidesSizesGrid","params","multiplier","isCenteredSlides","centeredSlides","margin","slidesOffsetBefore","style","transform","i","length","slideEl","slideProgress","progress","Math","min","max","originalProgress","offset","swiperSlideOffset","t","cssMode","r","custom","isHorizontal","data","forEach","index","abs","val","browser","need3dFix","zIndex","round","translateString","join","rotateString","scaleString","opacityString","shadow","shadowEl","querySelector","shadowOpacity","targetEl","origin","transformOrigin","setTransition","duration","transformElements","map","el","transitionDuration","querySelectorAll","allSlides","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-creative.mjs b/node/node_modules/swiper/modules/effect-creative.mjs new file mode 100644 index 0000000000000000000000000000000000000000..eb2473336363b2b448e1082c1259299d395f98e9 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative.mjs @@ -0,0 +1,148 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCreative as default }; diff --git a/node/node_modules/swiper/modules/effect-creative.scss b/node/node_modules/swiper/modules/effect-creative.scss new file mode 100644 index 0000000000000000000000000000000000000000..b893cad5c8331ff785b6ee6c54df91bed4bccf34 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-creative.scss @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/node/node_modules/swiper/modules/effect-cube-element.css b/node/node_modules/swiper/modules/effect-cube-element.css new file mode 100644 index 0000000000000000000000000000000000000000..af136156d7175811fa00e8e951882a9d6abdfc13 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube-element.css @@ -0,0 +1,53 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-cube.swiper-rtl ::slotted(swiper-slide) { + transform-origin: 100% 0; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-next), +.swiper-cube ::slotted(.swiper-slide-prev) { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube ::slotted(.swiper-slide-next) + ::slotted(swiper-slide) { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start *//* Cube slide shadows end */ diff --git a/node/node_modules/swiper/modules/effect-cube-element.min.css b/node/node_modules/swiper/modules/effect-cube-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..afc6ca2c2913df2198bb0fbe59ae6778d8948673 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube-element.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cube.css b/node/node_modules/swiper/modules/effect-cube.css new file mode 100644 index 0000000000000000000000000000000000000000..14b5d08ceb355eee66589c4f9960651f6c2c8c37 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube.css @@ -0,0 +1,62 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ diff --git a/node/node_modules/swiper/modules/effect-cube.less b/node/node_modules/swiper/modules/effect-cube.less new file mode 100644 index 0000000000000000000000000000000000000000..54bdc0132592726a4f1128c82572158c28e144f5 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube.less @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/node/node_modules/swiper/modules/effect-cube.min.css b/node/node_modules/swiper/modules/effect-cube.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e91764c1a9c57202a32fb39d4bc70cd5a159bbd8 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cube.min.mjs b/node/node_modules/swiper/modules/effect-cube.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..e5739262fd2d8de0d1bff2cb4af93e32c809892a --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{c as createElement}from"../shared/utils.min.mjs";function EffectCube(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const r=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),r||(r=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),a&&(a.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:o,height:i,rtlTranslate:l,size:d,browser:n}=t,p=t.params.cubeEffect,c=t.isHorizontal(),w=t.virtual&&t.params.virtual.enabled;let h,f=0;p.shadow&&(c?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=createElement("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${o}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=createElement("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*o+90*h,l&&(f=90*-o-90*h),t.browser&&t.browser.need3dFix&&Math.abs(f)/90%2==1&&(f+=.001)),s.style.transform=x,p.slideShadows&&r(s,h,c)}if(s.style.transformOrigin=`50% 50% -${d/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${d/2}px`,p.shadow)if(c)h.style.transform=`translate3d(0px, ${o/2+p.shadowOffset}px, ${-o/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,r=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${i/2+r}px, ${-i/2/a}px) rotateX(-89.99deg)`}const m=(n.isSafari||n.isWebView)&&n.needPerspectiveFix?-d/2:0;s.style.transform=`translate3d(0px,0,${m}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${m}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);r(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}export{EffectCube as default}; +//# sourceMappingURL=effect-cube.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cube.min.mjs.map b/node/node_modules/swiper/modules/effect-cube.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..ef43f66d5f1d805372108c06114ffc4229436a99 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cube.mjs.mjs","names":["effectInit","createElement","EffectCube","_ref","swiper","extendParams","on","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","createSlideShadows","slideEl","progress","isHorizontal","shadowBefore","querySelector","shadowAfter","split","append","style","opacity","Math","max","effect","setTranslate","el","wrapperEl","slides","width","swiperWidth","height","swiperHeight","rtlTranslate","rtl","size","swiperSize","browser","params","isVirtual","virtual","enabled","cubeShadowEl","wrapperRotate","i","length","slideIndex","parseInt","getAttribute","slideAngle","round","floor","min","tx","ty","tz","transform","need3dFix","abs","transformOrigin","shadowAngle","multiplier","sin","PI","cos","scale1","scale2","offset","zFactor","isSafari","isWebView","needPerspectiveFix","setProperty","setTransition","duration","forEach","transitionDuration","querySelectorAll","subEl","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","resistanceRatio","spaceBetween","centeredSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-cube.mjs b/node/node_modules/swiper/modules/effect-cube.mjs new file mode 100644 index 0000000000000000000000000000000000000000..2d03cba2bdc66da78e01471ebb567c78f65fde9e --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube.mjs @@ -0,0 +1,176 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { c as createElement } from '../shared/utils.mjs'; + +function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +export { EffectCube as default }; diff --git a/node/node_modules/swiper/modules/effect-cube.scss b/node/node_modules/swiper/modules/effect-cube.scss new file mode 100644 index 0000000000000000000000000000000000000000..54bdc0132592726a4f1128c82572158c28e144f5 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-cube.scss @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/node/node_modules/swiper/modules/effect-fade-element.css b/node/node_modules/swiper/modules/effect-fade-element.css new file mode 100644 index 0000000000000000000000000000000000000000..76242c6b1b551c215d0bcdf735eadaaa1e1b0ca7 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade-element.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide) { + transition-timing-function: ease-out; +} +.swiper-fade ::slotted(swiper-slide) { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-fade ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} diff --git a/node/node_modules/swiper/modules/effect-fade-element.min.css b/node/node_modules/swiper/modules/effect-fade-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..6fb728007b24735f52593e39dc4d08586ff94781 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade-element.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-fade.css b/node/node_modules/swiper/modules/effect-fade.css new file mode 100644 index 0000000000000000000000000000000000000000..ac7449efc56948142bb3f27c6bad2a1367c56c6a --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} diff --git a/node/node_modules/swiper/modules/effect-fade.less b/node/node_modules/swiper/modules/effect-fade.less new file mode 100644 index 0000000000000000000000000000000000000000..0fadca48a00519dbfb832fb2ac9105473c93a6fb --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade.less @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/node/node_modules/swiper/modules/effect-fade.min.css b/node/node_modules/swiper/modules/effect-fade.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e535e7e23ef497ffd7daa25b1f843e80bb233da7 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-fade.min.mjs b/node/node_modules/swiper/modules/effect-fade.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..52a481c95eee49f0b4832fcc21b3c7fd9dd132ec --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFade(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1}});effectInit({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFade as default}; +//# sourceMappingURL=effect-fade.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-fade.min.mjs.map b/node/node_modules/swiper/modules/effect-fade.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..91e91f176c1a318340a5dd209dce00e5478395a3 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-fade.mjs.mjs","names":["effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFade","_ref","swiper","extendParams","on","fadeEffect","crossFade","effect","setTranslate","slides","params","i","length","slideEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","isHorizontal","slideOpacity","Math","max","abs","progress","min","targetEl","style","opacity","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","allSlides","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","cssMode"],"sources":["0"],"mappings":"YAAcA,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,WAAW,KAoCfV,WAAW,CACTW,OAAQ,OACRL,SACAE,KACAI,aArCmB,KACnB,MAAMC,OACJA,GACEP,EACEQ,EAASR,EAAOQ,OAAOL,WAC7B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,GAAK,EAAG,CACzC,MAAME,EAAUX,EAAOO,OAAOE,GAE9B,IAAIG,GADWD,EAAQE,kBAElBb,EAAOQ,OAAOM,mBAAkBF,GAAMZ,EAAOe,WAClD,IAAIC,EAAK,EACJhB,EAAOiB,iBACVD,EAAKJ,EACLA,EAAK,GAEP,MAAMM,EAAelB,EAAOQ,OAAOL,WAAWC,UAAYe,KAAKC,IAAI,EAAID,KAAKE,IAAIV,EAAQW,UAAW,GAAK,EAAIH,KAAKI,IAAIJ,KAAKC,IAAIT,EAAQW,UAAW,GAAI,GAC/IE,EAAW7B,aAAaa,EAAQG,GACtCa,EAASC,MAAMC,QAAUR,EACzBM,EAASC,MAAME,UAAY,eAAef,QAASI,WACrD,GAmBAY,cAjBoBC,IACpB,MAAMC,EAAoB9B,EAAOO,OAAOwB,KAAIpB,GAAWd,oBAAoBc,KAC3EmB,EAAkBE,SAAQC,IACxBA,EAAGR,MAAMS,mBAAqB,GAAGL,KAAY,IAE/CjC,2BAA2B,CACzBI,SACA6B,WACAC,oBACAK,WAAW,GACX,EAQFC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACd1B,kBAAmBd,EAAOQ,OAAOiC,WAGvC,QAES3C"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-fade.mjs b/node/node_modules/swiper/modules/effect-fade.mjs new file mode 100644 index 0000000000000000000000000000000000000000..140e9b71b84fd05410ccb0fc2558598a84095554 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade.mjs @@ -0,0 +1,66 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFade as default }; diff --git a/node/node_modules/swiper/modules/effect-fade.scss b/node/node_modules/swiper/modules/effect-fade.scss new file mode 100644 index 0000000000000000000000000000000000000000..bb059dd354a6d2a380be4558545c3e4e214834d8 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-fade.scss @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/node/node_modules/swiper/modules/effect-flip-element.css b/node/node_modules/swiper/modules/effect-flip-element.css new file mode 100644 index 0000000000000000000000000000000000000000..4ae833846b7052b56240f0a17dbad46a165c4568 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip-element.css @@ -0,0 +1,17 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-flip ::slotted(.swiper-slide-active), +.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +/* Flip slide shadows start *//* Flip slide shadows end */ diff --git a/node/node_modules/swiper/modules/effect-flip-element.min.css b/node/node_modules/swiper/modules/effect-flip-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..40d852be25ebe2f390139b962e5c29ecd000e880 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip-element.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-flip.css b/node/node_modules/swiper/modules/effect-flip.css new file mode 100644 index 0000000000000000000000000000000000000000..f4b1d34ccbd8852f559a939dec2ad28560af686c --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip.css @@ -0,0 +1,26 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ diff --git a/node/node_modules/swiper/modules/effect-flip.less b/node/node_modules/swiper/modules/effect-flip.less new file mode 100644 index 0000000000000000000000000000000000000000..6c16d114c7db400eacf77e3492ec71eab4e74555 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip.less @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/node/node_modules/swiper/modules/effect-flip.min.css b/node/node_modules/swiper/modules/effect-flip.min.css new file mode 100644 index 0000000000000000000000000000000000000000..b7656ff3e370216ef86094b7ef69681c23c8261c --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-flip.min.mjs b/node/node_modules/swiper/modules/effect-flip.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..7938ab8011b3ca19e04b7effae2515e7758265b7 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFlip(e){let{swiper:t,extendParams:s,on:r}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let r=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");r||(r=createShadow("flip",e,t.isHorizontal()?"left":"top")),a||(a=createShadow("flip",e,t.isHorizontal()?"right":"bottom")),r&&(r.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:t,on:r,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,r=t.params.flipEffect;for(let i=0;i{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFlip as default}; +//# sourceMappingURL=effect-flip.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-flip.min.mjs.map b/node/node_modules/swiper/modules/effect-flip.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..a1c6392cb0ba87f2993a21c726c536f6d525efee --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-flip.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFlip","_ref","swiper","extendParams","on","flipEffect","slideShadows","limitRotation","createSlideShadows","slideEl","progress","shadowBefore","isHorizontal","querySelector","shadowAfter","style","opacity","Math","max","effect","setTranslate","slides","rtlTranslate","rtl","params","i","length","min","offset","swiperSlideOffset","rotateY","rotateX","tx","cssMode","translate","ty","browser","need3dFix","abs","zIndex","round","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","virtualTranslate"],"sources":["0"],"mappings":"YAAcA,iBAAoB,8CACpBC,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,cAAc,EACdC,eAAe,KAGnB,MAAMC,EAAqB,CAACC,EAASC,KACnC,IAAIC,EAAeT,EAAOU,eAAiBH,EAAQI,cAAc,6BAA+BJ,EAAQI,cAAc,4BAClHC,EAAcZ,EAAOU,eAAiBH,EAAQI,cAAc,8BAAgCJ,EAAQI,cAAc,+BACjHF,IACHA,EAAehB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,OAAS,QAE3EE,IACHA,EAAcnB,aAAa,OAAQc,EAASP,EAAOU,eAAiB,QAAU,WAE5ED,IAAcA,EAAaI,MAAMC,QAAUC,KAAKC,KAAKR,EAAU,IAC/DI,IAAaA,EAAYC,MAAMC,QAAUC,KAAKC,IAAIR,EAAU,GAAE,EAsEpEd,WAAW,CACTuB,OAAQ,OACRjB,SACAE,KACAgB,aA7DmB,KACnB,MAAMC,OACJA,EACAC,aAAcC,GACZrB,EACEsB,EAAStB,EAAOsB,OAAOnB,WAC7B,IAAK,IAAIoB,EAAI,EAAGA,EAAIJ,EAAOK,OAAQD,GAAK,EAAG,CACzC,MAAMhB,EAAUY,EAAOI,GACvB,IAAIf,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKU,IAAIlB,EAAQC,SAAU,IAAK,IAEtD,MAAMkB,EAASnB,EAAQoB,kBAEvB,IAAIC,GADY,IAAMpB,EAElBqB,EAAU,EACVC,EAAK9B,EAAOsB,OAAOS,SAAWL,EAAS1B,EAAOgC,WAAaN,EAC3DO,EAAK,EACJjC,EAAOU,eAKDW,IACTO,GAAWA,IALXK,EAAKH,EACLA,EAAK,EACLD,GAAWD,EACXA,EAAU,GAIR5B,EAAOkC,SAAWlC,EAAOkC,QAAQC,YAC/BpB,KAAKqB,IAAIR,GAAW,GAAK,GAAM,IACjCA,GAAW,MAETb,KAAKqB,IAAIP,GAAW,GAAK,GAAM,IACjCA,GAAW,OAGftB,EAAQM,MAAMwB,QAAUtB,KAAKqB,IAAIrB,KAAKuB,MAAM9B,IAAaW,EAAOK,OAC5DF,EAAOlB,cACTE,EAAmBC,EAASC,GAE9B,MAAM+B,EAAY,eAAeT,QAASG,qBAAsBJ,iBAAuBD,QACtEjC,aAAa2B,EAAQf,GAC7BM,MAAM0B,UAAYA,CAC7B,GAqBAC,cAnBoBC,IACpB,MAAMC,EAAoB1C,EAAOmB,OAAOwB,KAAIpC,GAAWV,oBAAoBU,KAC3EmC,EAAkBE,SAAQC,IACxBA,EAAGhC,MAAMiC,mBAAqB,GAAGL,MACjCI,EAAGE,iBAAiB,gHAAgHH,SAAQI,IAC1IA,EAASnC,MAAMiC,mBAAqB,GAAGL,KAAY,GACnD,IAEJ7C,2BAA2B,CACzBI,SACAyC,WACAC,qBACA,EAQFO,gBA1EsB,KAEtBjD,EAAOsB,OAAOnB,WACdH,EAAOmB,OAAOyB,SAAQrC,IACpB,IAAIC,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKU,IAAIlB,EAAQC,SAAU,IAAK,IAEtDF,EAAmBC,EAASC,EAAS,GACrC,EAkEF0C,gBAAiB,IAAMlD,EAAOsB,OAAOnB,WACrCgD,YAAa,KAAM,EACnBC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACdC,kBAAmBzD,EAAOsB,OAAOS,WAGvC,QAESjC"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/effect-flip.mjs b/node/node_modules/swiper/modules/effect-flip.mjs new file mode 100644 index 0000000000000000000000000000000000000000..4685b6752fd0c0ced88ee23d56bd35f1b8300096 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip.mjs @@ -0,0 +1,118 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.need3dFix) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFlip as default }; diff --git a/node/node_modules/swiper/modules/effect-flip.scss b/node/node_modules/swiper/modules/effect-flip.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c16d114c7db400eacf77e3492ec71eab4e74555 --- /dev/null +++ b/node/node_modules/swiper/modules/effect-flip.scss @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/node/node_modules/swiper/modules/free-mode-element.css b/node/node_modules/swiper/modules/free-mode-element.css new file mode 100644 index 0000000000000000000000000000000000000000..9c289eb769d6c7a4eaf96ccfa04aa72ce886ec30 --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode-element.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/node/node_modules/swiper/modules/free-mode-element.min.css b/node/node_modules/swiper/modules/free-mode-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..ecc81203831247db63675531874bf226110fd0c4 --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode-element.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/free-mode.css b/node/node_modules/swiper/modules/free-mode.css new file mode 100644 index 0000000000000000000000000000000000000000..9c289eb769d6c7a4eaf96ccfa04aa72ce886ec30 --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/node/node_modules/swiper/modules/free-mode.less b/node/node_modules/swiper/modules/free-mode.less new file mode 100644 index 0000000000000000000000000000000000000000..9c289eb769d6c7a4eaf96ccfa04aa72ce886ec30 --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode.less @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/node/node_modules/swiper/modules/free-mode.min.css b/node/node_modules/swiper/modules/free-mode.min.css new file mode 100644 index 0000000000000000000000000000000000000000..ecc81203831247db63675531874bf226110fd0c4 --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/free-mode.min.mjs b/node/node_modules/swiper/modules/free-mode.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..251c4ac64ede4b72f673cb750eeb80e483c70b75 --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode.min.mjs @@ -0,0 +1,2 @@ +import{d as now,k as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode(e){let{swiper:t,extendParams:o,emit:n,once:s}=e;o({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:o}=t;0===e.velocities.length&&e.velocities.push({position:o[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:o[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:o}=e;if(t.params.cssMode)return;const{params:i,wrapperEl:a,rtlTranslate:r,snapGrid:l,touchEventsData:m}=t,c=now()-m.touchStartTime;if(o<-t.minTranslate())t.slideTo(t.activeIndex);else if(o>-t.maxTranslate())t.slides.length1){const e=m.velocities.pop(),o=m.velocities.pop(),n=e.position-o.position,s=e.time-o.time;t.velocity=n/s,t.velocity/=2,Math.abs(t.velocity)150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeMode.momentumVelocityRatio,m.velocities.length=0;let e=1e3*i.freeMode.momentumRatio;const o=t.velocity*e;let c=t.translate+o;r&&(c=-c);let d,u=!1;const f=20*Math.abs(t.velocity)*i.freeMode.momentumBounceRatio;let p;if(ct.minTranslate())i.freeMode.momentumBounce?(c-t.minTranslate()>f&&(c=t.minTranslate()+f),d=t.minTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.minTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(i.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(l[e]-c){t.loopFix()})),0!==t.velocity){if(e=r?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),i.freeMode.sticky){const o=Math.abs((r?-c:c)-t.translate),n=t.slidesSizesGrid[t.activeIndex];e=o{t&&!t.destroyed&&m.allowMomentumBounce&&(n("momentumBounce"),t.setTransition(i.speed),setTimeout((()=>{t.setTranslate(d),elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(n("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode&&n("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(n("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}export{freeMode as default}; +//# sourceMappingURL=free-mode.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/free-mode.min.mjs.map b/node/node_modules/swiper/modules/free-mode.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..97162eaf3772b310440c8cb13acae86b8cc88dbc --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","_ref","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","_ref2","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/free-mode.mjs b/node/node_modules/swiper/modules/free-mode.mjs new file mode 100644 index 0000000000000000000000000000000000000000..db39c3d9ea642813acf058d3c914fce6ac20019c --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode.mjs @@ -0,0 +1,237 @@ +import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs'; + +function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +export { freeMode as default }; diff --git a/node/node_modules/swiper/modules/free-mode.scss b/node/node_modules/swiper/modules/free-mode.scss new file mode 100644 index 0000000000000000000000000000000000000000..9c289eb769d6c7a4eaf96ccfa04aa72ce886ec30 --- /dev/null +++ b/node/node_modules/swiper/modules/free-mode.scss @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/node/node_modules/swiper/modules/grid-element.css b/node/node_modules/swiper/modules/grid-element.css new file mode 100644 index 0000000000000000000000000000000000000000..136cb654c1978fb769f8c390a56e8b8bcc9296d8 --- /dev/null +++ b/node/node_modules/swiper/modules/grid-element.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/node/node_modules/swiper/modules/grid-element.min.css b/node/node_modules/swiper/modules/grid-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..7d5f8f9226290919934dd80a7026848608a31436 --- /dev/null +++ b/node/node_modules/swiper/modules/grid-element.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/grid.css b/node/node_modules/swiper/modules/grid.css new file mode 100644 index 0000000000000000000000000000000000000000..136cb654c1978fb769f8c390a56e8b8bcc9296d8 --- /dev/null +++ b/node/node_modules/swiper/modules/grid.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/node/node_modules/swiper/modules/grid.less b/node/node_modules/swiper/modules/grid.less new file mode 100644 index 0000000000000000000000000000000000000000..136cb654c1978fb769f8c390a56e8b8bcc9296d8 --- /dev/null +++ b/node/node_modules/swiper/modules/grid.less @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/node/node_modules/swiper/modules/grid.min.css b/node/node_modules/swiper/modules/grid.min.css new file mode 100644 index 0000000000000000000000000000000000000000..7d5f8f9226290919934dd80a7026848608a31436 --- /dev/null +++ b/node/node_modules/swiper/modules/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/grid.min.mjs b/node/node_modules/swiper/modules/grid.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..84f1b4ea951c7ab28db020ee03f94823f6bed74b --- /dev/null +++ b/node/node_modules/swiper/modules/grid.min.mjs @@ -0,0 +1,2 @@ +function Grid(e){let i,r,a,t,{swiper:s,extendParams:l,on:o}=e;l({grid:{rows:1,fill:"column"}});const n=()=>{let e=s.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*s.size:"string"==typeof e&&(e=parseFloat(e)),e};o("init",(()=>{t=s.params.grid&&s.params.grid.rows>1})),o("update",(()=>{const{params:e,el:i}=s,r=e.grid&&e.grid.rows>1;t&&!r?(i.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,s.emitContainerClasses()):!t&&r&&(i.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&i.classList.add(`${e.containerModifierClass}grid-column`),s.emitContainerClasses()),t=r})),s.grid={initSlides:e=>{const{slidesPerView:t}=s.params,{rows:l,fill:o}=s.params.grid,n=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:e.length;a=Math.floor(n/l),i=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==t&&"row"===o&&(i=Math.max(i,t*l)),r=i/l},unsetSlides:()=>{s.slides&&s.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[s.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,t,l)=>{const{slidesPerGroup:o}=s.params,d=n(),{rows:p,fill:c}=s.params.grid,g=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:l.length;let u,h,m;if("row"===c&&o>1){const r=Math.floor(e/(o*p)),a=e-p*o*r,s=0===r?o:Math.min(Math.ceil((g-r*p*o)/p),o);m=Math.floor(a/s),h=a-m*s+r*o,u=h+m*i/p,t.style.order=u}else"column"===c?(h=Math.floor(e/p),m=e-h*p,(h>a||h===a&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(e/r),h=e-m*r);t.row=m,t.column=h,t.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,t.style[s.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",t.swiperSlideGridSet=!0},updateWrapperSize:(e,r)=>{const{centeredSlides:a,roundLengths:t}=s.params,l=n(),{rows:o}=s.params.grid;if(s.virtualSize=(e+l)*i,s.virtualSize=Math.ceil(s.virtualSize/o)-l,s.params.cssMode||(s.wrapperEl.style[s.getDirectionLabel("width")]=`${s.virtualSize+l}px`),a){const e=[];for(let i=0;i { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; +} + +export { Grid as default }; diff --git a/node/node_modules/swiper/modules/grid.scss b/node/node_modules/swiper/modules/grid.scss new file mode 100644 index 0000000000000000000000000000000000000000..136cb654c1978fb769f8c390a56e8b8bcc9296d8 --- /dev/null +++ b/node/node_modules/swiper/modules/grid.scss @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/node/node_modules/swiper/modules/hash-navigation-element.css b/node/node_modules/swiper/modules/hash-navigation-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/hash-navigation-element.min.css b/node/node_modules/swiper/modules/hash-navigation-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/hash-navigation.css b/node/node_modules/swiper/modules/hash-navigation.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/hash-navigation.less b/node/node_modules/swiper/modules/hash-navigation.less new file mode 100644 index 0000000000000000000000000000000000000000..be8912a901ffc6f0c6249113f2ee8cc1c59ec8b1 --- /dev/null +++ b/node/node_modules/swiper/modules/hash-navigation.less @@ -0,0 +1,2 @@ +@import url('../swiper-vars.less'); + diff --git a/node/node_modules/swiper/modules/hash-navigation.min.css b/node/node_modules/swiper/modules/hash-navigation.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/hash-navigation.min.mjs b/node/node_modules/swiper/modules/hash-navigation.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..0c58effcd44eb4a7ad87ac4d92223f013246db7c --- /dev/null +++ b/node/node_modules/swiper/modules/hash-navigation.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren}from"../shared/utils.min.mjs";function HashNavigation(a){let{swiper:e,extendParams:t,emit:s,on:i}=a,n=!1;const r=getDocument(),h=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(a,t){if(e.virtual&&e.params.virtual.enabled){const a=e.slides.filter((a=>a.getAttribute("data-hash")===t))[0];if(!a)return 0;return parseInt(a.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(elementChildren(e.slidesEl,`.${e.params.slideClass}[data-hash="${t}"], swiper-slide[data-hash="${t}"]`)[0])}}});const d=()=>{s("hashChange");const a=r.location.hash.replace("#",""),t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(a!==(t?t.getAttribute("data-hash"):"")){const t=e.params.hashNavigation.getSlideIndex(e,a);if(void 0===t||Number.isNaN(t))return;e.slideTo(t)}},l=()=>{if(!n||!e.params.hashNavigation.enabled)return;const a=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],t=a?a.getAttribute("data-hash")||a.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&h.history&&h.history.replaceState?(h.history.replaceState(null,null,`#${t}`||""),s("hashSet")):(r.location.hash=t||"",s("hashSet"))};i("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const a=r.location.hash.replace("#","");if(a){const t=0,s=e.params.hashNavigation.getSlideIndex(e,a);e.slideTo(s||0,t,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&h.addEventListener("hashchange",d)})()})),i("destroy",(()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&h.removeEventListener("hashchange",d)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{n&&l()})),i("slideChange",(()=>{n&&e.params.cssMode&&l()}))}export{HashNavigation as default}; +//# sourceMappingURL=hash-navigation.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/hash-navigation.min.mjs.map b/node/node_modules/swiper/modules/hash-navigation.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..373df60b13d42aa0eefb537076e2b8246d163482 --- /dev/null +++ b/node/node_modules/swiper/modules/hash-navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-navigation.mjs.mjs","names":["getDocument","getWindow","elementChildren","HashNavigation","_ref","swiper","extendParams","emit","on","initialized","document","window","hashNavigation","enabled","replaceState","watchState","getSlideIndex","_s","hash","virtual","params","slideWithHash","slides","filter","slideEl","getAttribute","parseInt","slidesEl","slideClass","onHashChange","newHash","location","replace","activeSlideEl","querySelector","activeIndex","newIndex","Number","isNaN","slideTo","setHash","activeSlideHash","history","speed","index","runCallbacksOnInit","addEventListener","init","removeEventListener","cssMode"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAuB,0BAErC,SAASC,eAAeC,GACtB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,KACZA,EAAIC,GACJA,GACEJ,EACAK,GAAc,EAClB,MAAMC,EAAWV,cACXW,EAASV,YACfK,EAAa,CACXM,eAAgB,CACdC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZ,aAAAC,CAAcC,EAAIC,GAChB,GAAIb,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAS,CACnD,MAAMQ,EAAgBhB,EAAOiB,OAAOC,QAAOC,GAAWA,EAAQC,aAAa,eAAiBP,IAAM,GAClG,IAAKG,EAAe,OAAO,EAE3B,OADcK,SAASL,EAAcI,aAAa,2BAA4B,GAEhF,CACA,OAAOpB,EAAOW,cAAcd,gBAAgBG,EAAOsB,SAAU,IAAItB,EAAOe,OAAOQ,yBAAyBV,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMW,EAAe,KACnBtB,EAAK,cACL,MAAMuB,EAAUpB,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IAC9CC,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAElL,GAAIL,KADoBG,EAAgBA,EAAcR,aAAa,aAAe,IACjD,CAC/B,MAAMW,EAAW/B,EAAOe,OAAOR,eAAeI,cAAcX,EAAQyB,GACpE,QAAwB,IAAbM,GAA4BC,OAAOC,MAAMF,GAAW,OAC/D/B,EAAOkC,QAAQH,EACjB,GAEII,EAAU,KACd,IAAK/B,IAAgBJ,EAAOe,OAAOR,eAAeC,QAAS,OAC3D,MAAMoB,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAC5KM,EAAkBR,EAAgBA,EAAcR,aAAa,cAAgBQ,EAAcR,aAAa,gBAAkB,GAC5HpB,EAAOe,OAAOR,eAAeE,cAAgBH,EAAO+B,SAAW/B,EAAO+B,QAAQ5B,cAChFH,EAAO+B,QAAQ5B,aAAa,KAAM,KAAM,IAAI2B,KAAqB,IACjElC,EAAK,aAELG,EAASqB,SAASb,KAAOuB,GAAmB,GAC5ClC,EAAK,WACP,EAoBFC,EAAG,QAAQ,KACLH,EAAOe,OAAOR,eAAeC,SAnBtB,MACX,IAAKR,EAAOe,OAAOR,eAAeC,SAAWR,EAAOe,OAAOsB,SAAWrC,EAAOe,OAAOsB,QAAQ7B,QAAS,OACrGJ,GAAc,EACd,MAAMS,EAAOR,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IACjD,GAAId,EAAM,CACR,MAAMyB,EAAQ,EACRC,EAAQvC,EAAOe,OAAOR,eAAeI,cAAcX,EAAQa,GACjEb,EAAOkC,QAAQK,GAAS,EAAGD,EAAOtC,EAAOe,OAAOyB,oBAAoB,EACtE,CACIxC,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOmC,iBAAiB,aAAcjB,EACxC,EASEkB,EACF,IAEFvC,EAAG,WAAW,KACRH,EAAOe,OAAOR,eAAeC,SAV7BR,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOqC,oBAAoB,aAAcnB,EAW3C,IAEFrB,EAAG,4CAA4C,KACzCC,GACF+B,GACF,IAEFhC,EAAG,eAAe,KACZC,GAAeJ,EAAOe,OAAO6B,SAC/BT,GACF,GAEJ,QAESrC"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/hash-navigation.mjs b/node/node_modules/swiper/modules/hash-navigation.mjs new file mode 100644 index 0000000000000000000000000000000000000000..cf334203badfa268bc89f763ed10bb40da5be629 --- /dev/null +++ b/node/node_modules/swiper/modules/hash-navigation.mjs @@ -0,0 +1,93 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren } from '../shared/utils.mjs'; + +function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +export { HashNavigation as default }; diff --git a/node/node_modules/swiper/modules/hash-navigation.scss b/node/node_modules/swiper/modules/hash-navigation.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/history-element.css b/node/node_modules/swiper/modules/history-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/history-element.min.css b/node/node_modules/swiper/modules/history-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/history.css b/node/node_modules/swiper/modules/history.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/history.less b/node/node_modules/swiper/modules/history.less new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/history.min.css b/node/node_modules/swiper/modules/history.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/history.min.mjs b/node/node_modules/swiper/modules/history.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..b88cbf97d806b602a929d784654ba48bece1a057 --- /dev/null +++ b/node/node_modules/swiper/modules/history.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";function History(e){let{swiper:t,extendParams:a,on:s}=e;a({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let r=!1,i={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=getWindow();let a;a=e?new URL(e):t.location;const s=a.pathname.slice(1).split("/").filter((e=>""!==e)),r=s.length;return{key:s[r-2],value:s[r-1]}},n=(e,a)=>{const s=getWindow();if(!r||!t.params.history.enabled)return;let i;i=t.params.url?new URL(t.params.url):s.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${a}"]`):t.slides[a];let n=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let a=t.params.history.root;"/"===a[a.length-1]&&(a=a.slice(0,a.length-1)),n=`${a}/${e?`${e}/`:""}${n}`}else i.pathname.includes(e)||(n=`${e?`${e}/`:""}${n}`);t.params.history.keepQuery&&(n+=i.search);const p=s.history.state;p&&p.value===n||(t.params.history.replaceState?s.history.replaceState({value:n},null,n):s.history.pushState({value:n},null,n))},p=(e,a,s)=>{if(a)for(let r=0,i=t.slides.length;r{i=o(t.params.url),p(t.params.speed,i.value,!1)};s("init",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);r=!0,i=o(t.params.url),i.key||i.value?(p(0,i.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",d)):t.params.history.replaceState||e.addEventListener("popstate",d)}})()})),s("destroy",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();t.params.history.replaceState||e.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{r&&n(t.params.history.key,t.activeIndex)})),s("slideChange",(()=>{r&&t.params.cssMode&&n(t.params.history.key,t.activeIndex)}))}export{History as default}; +//# sourceMappingURL=history.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/history.min.mjs.map b/node/node_modules/swiper/modules/history.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..821c584ec5241b129b09838d2f12c33596397df1 --- /dev/null +++ b/node/node_modules/swiper/modules/history.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"history.mjs.mjs","names":["getWindow","History","_ref","swiper","extendParams","on","history","enabled","root","replaceState","key","keepQuery","initialized","paths","slugify","text","toString","replace","getPathValues","urlOverride","window","location","URL","pathArray","pathname","slice","split","filter","part","total","length","value","setHistory","index","params","url","slide","virtual","slidesEl","querySelector","slides","getAttribute","includes","search","currentState","state","pushState","scrollToSlide","speed","runCallbacks","i","getSlideIndex","slideTo","setHistoryPopState","hashNavigation","runCallbacksOnInit","addEventListener","init","removeEventListener","destroy","activeIndex","cssMode"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/history.mjs b/node/node_modules/swiper/modules/history.mjs new file mode 100644 index 0000000000000000000000000000000000000000..466c8b8d51c25ba9c74c70deee1a0a9202bc653f --- /dev/null +++ b/node/node_modules/swiper/modules/history.mjs @@ -0,0 +1,142 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; + +function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +export { History as default }; diff --git a/node/node_modules/swiper/modules/history.scss b/node/node_modules/swiper/modules/history.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/index.min.mjs b/node/node_modules/swiper/modules/index.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..41b89c320a678427d9781cb7a0a4c940b42ba7d2 --- /dev/null +++ b/node/node_modules/swiper/modules/index.min.mjs @@ -0,0 +1,2 @@ +export{default as Virtual}from"./virtual.min.mjs";export{default as Keyboard}from"./keyboard.min.mjs";export{default as Mousewheel}from"./mousewheel.min.mjs";export{default as Navigation}from"./navigation.min.mjs";export{default as Pagination}from"./pagination.min.mjs";export{default as Scrollbar}from"./scrollbar.min.mjs";export{default as Parallax}from"./parallax.min.mjs";export{default as Zoom}from"./zoom.min.mjs";export{default as Controller}from"./controller.min.mjs";export{default as A11y}from"./a11y.min.mjs";export{default as History}from"./history.min.mjs";export{default as HashNavigation}from"./hash-navigation.min.mjs";export{default as Autoplay}from"./autoplay.min.mjs";export{default as Thumbs}from"./thumbs.min.mjs";export{default as FreeMode}from"./free-mode.min.mjs";export{default as Grid}from"./grid.min.mjs";export{default as Manipulation}from"./manipulation.min.mjs";export{default as EffectFade}from"./effect-fade.min.mjs";export{default as EffectCube}from"./effect-cube.min.mjs";export{default as EffectFlip}from"./effect-flip.min.mjs";export{default as EffectCoverflow}from"./effect-coverflow.min.mjs";export{default as EffectCreative}from"./effect-creative.min.mjs";export{default as EffectCards}from"./effect-cards.min.mjs"; +//# sourceMappingURL=index.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/index.min.mjs.map b/node/node_modules/swiper/modules/index.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..1492964119ca9f738f18def7006267665e7f91a2 --- /dev/null +++ b/node/node_modules/swiper/modules/index.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.mjs","names":[],"sources":["0"],"mappings":"OAAQ,uBAAyB,2BACzB,wBAA0B,4BAC1B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,yBAA2B,6BAC3B,wBAA0B,4BAC1B,oBAAsB,wBACtB,0BAA4B,8BAC5B,oBAAsB,wBACtB,uBAAyB,2BACzB,8BAAgC,mCAChC,wBAA0B,4BAC1B,sBAAwB,0BACxB,wBAA0B,6BAC1B,oBAAsB,wBACtB,4BAA8B,gCAC9B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,+BAAiC,oCACjC,8BAAgC,mCAChC,2BAA6B"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/index.mjs b/node/node_modules/swiper/modules/index.mjs new file mode 100644 index 0000000000000000000000000000000000000000..3186045c4483619f5c677a559ea4795f204438e2 --- /dev/null +++ b/node/node_modules/swiper/modules/index.mjs @@ -0,0 +1,23 @@ +export {default as Virtual} from './virtual.mjs'; +export {default as Keyboard} from './keyboard.mjs'; +export {default as Mousewheel} from './mousewheel.mjs'; +export {default as Navigation} from './navigation.mjs'; +export {default as Pagination} from './pagination.mjs'; +export {default as Scrollbar} from './scrollbar.mjs'; +export {default as Parallax} from './parallax.mjs'; +export {default as Zoom} from './zoom.mjs'; +export {default as Controller} from './controller.mjs'; +export {default as A11y} from './a11y.mjs'; +export {default as History} from './history.mjs'; +export {default as HashNavigation} from './hash-navigation.mjs'; +export {default as Autoplay} from './autoplay.mjs'; +export {default as Thumbs} from './thumbs.mjs'; +export {default as FreeMode} from './free-mode.mjs'; +export {default as Grid} from './grid.mjs'; +export {default as Manipulation} from './manipulation.mjs'; +export {default as EffectFade} from './effect-fade.mjs'; +export {default as EffectCube} from './effect-cube.mjs'; +export {default as EffectFlip} from './effect-flip.mjs'; +export {default as EffectCoverflow} from './effect-coverflow.mjs'; +export {default as EffectCreative} from './effect-creative.mjs'; +export {default as EffectCards} from './effect-cards.mjs'; \ No newline at end of file diff --git a/node/node_modules/swiper/modules/keyboard-element.css b/node/node_modules/swiper/modules/keyboard-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/keyboard-element.min.css b/node/node_modules/swiper/modules/keyboard-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/keyboard.css b/node/node_modules/swiper/modules/keyboard.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/keyboard.less b/node/node_modules/swiper/modules/keyboard.less new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/keyboard.min.css b/node/node_modules/swiper/modules/keyboard.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/keyboard.min.mjs b/node/node_modules/swiper/modules/keyboard.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..f1d9d2dfc92a1c0cb57b446c19d4510b990bca16 --- /dev/null +++ b/node/node_modules/swiper/modules/keyboard.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{a as elementParents,b as elementOffset}from"../shared/utils.min.mjs";function Keyboard(e){let{swiper:t,extendParams:n,on:a,emit:r}=e;const l=getDocument(),i=getWindow();function o(e){if(!t.enabled)return;const{rtlTranslate:n}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const o=a.keyCode||a.charCode,s=t.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,b=39===o,c=38===o,p=40===o;if(!t.allowSlideNext&&(t.isHorizontal()&&b||t.isVertical()&&p||f))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&m||t.isVertical()&&c||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||f||m||b||c||p)){let e=!1;if(elementParents(t.el,`.${t.params.slideClass}, swiper-slide`).length>0&&0===elementParents(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let t=0;t=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||f||m||b)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((f||b)&&!n||(d||m)&&n)&&t.slideNext(),((d||m)&&!n||(f||b)&&n)&&t.slidePrev()):((d||f||c||p)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(f||p)&&t.slideNext(),(d||c)&&t.slidePrev()),r("keyPress",o)}}function s(){t.keyboard.enabled||(l.addEventListener("keydown",o),t.keyboard.enabled=!0)}function d(){t.keyboard.enabled&&(l.removeEventListener("keydown",o),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},n({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&s()})),a("destroy",(()=>{t.keyboard.enabled&&d()})),Object.assign(t.keyboard,{enable:s,disable:d})}export{Keyboard as default}; +//# sourceMappingURL=keyboard.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/keyboard.min.mjs.map b/node/node_modules/swiper/modules/keyboard.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..04ab4eb8e2a014e313a055ad64575963783a566d --- /dev/null +++ b/node/node_modules/swiper/modules/keyboard.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard.mjs.mjs","names":["getDocument","getWindow","elementParents","elementOffset","Keyboard","_ref","swiper","extendParams","on","emit","document","window","handle","event","enabled","rtlTranslate","rtl","e","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","length","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/keyboard.mjs b/node/node_modules/swiper/modules/keyboard.mjs new file mode 100644 index 0000000000000000000000000000000000000000..ba62a4652a16914ae80864c63fd325d972f0276e --- /dev/null +++ b/node/node_modules/swiper/modules/keyboard.mjs @@ -0,0 +1,117 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { a as elementParents, b as elementOffset } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +export { Keyboard as default }; diff --git a/node/node_modules/swiper/modules/keyboard.scss b/node/node_modules/swiper/modules/keyboard.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/manipulation-element.css b/node/node_modules/swiper/modules/manipulation-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/manipulation-element.min.css b/node/node_modules/swiper/modules/manipulation-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/manipulation.css b/node/node_modules/swiper/modules/manipulation.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/manipulation.less b/node/node_modules/swiper/modules/manipulation.less new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/manipulation.min.css b/node/node_modules/swiper/modules/manipulation.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/manipulation.min.mjs b/node/node_modules/swiper/modules/manipulation.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..1b7832f535f3d2589499d83439dfc3fb6a46706c --- /dev/null +++ b/node/node_modules/swiper/modules/manipulation.min.mjs @@ -0,0 +1,2 @@ +function appendSlide(e){const l=this,{params:o,slidesEl:i}=l;o.loop&&l.loopDestroy();const t=e=>{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,i.append(l.children[0]),l.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let l=0;l{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,t.prepend(l.children[0]),l.innerHTML=""}else t.prepend(e)};if("object"==typeof e&&"length"in e){for(let l=0;l=s)return void o.appendSlide(l);let p=d>e?d+1:d;const r=[];for(let l=s-1;l>=e;l-=1){const e=o.slides[l];e.remove(),r.unshift(e)}if("object"==typeof l&&"length"in l){for(let e=0;ee?d+l.length:d}else n.append(l);for(let e=0;e { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +export { Manipulation as default }; diff --git a/node/node_modules/swiper/modules/manipulation.scss b/node/node_modules/swiper/modules/manipulation.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/mousewheel-element.css b/node/node_modules/swiper/modules/mousewheel-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/mousewheel-element.min.css b/node/node_modules/swiper/modules/mousewheel-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/mousewheel.css b/node/node_modules/swiper/modules/mousewheel.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/mousewheel.less b/node/node_modules/swiper/modules/mousewheel.less new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/mousewheel.min.css b/node/node_modules/swiper/modules/mousewheel.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/mousewheel.min.mjs b/node/node_modules/swiper/modules/mousewheel.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..312e9b6cccb2e0a01aa284338372654f2d2ac077 --- /dev/null +++ b/node/node_modules/swiper/modules/mousewheel.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,d as now}from"../shared/utils.min.mjs";function Mousewheel(e){let{swiper:t,extendParams:a,on:s,emit:n}=e;const l=getWindow();let i;a({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let r,o=now();const d=[];function m(){t.enabled&&(t.mouseEntered=!0)}function p(){t.enabled&&(t.mouseEntered=!1)}function u(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&now()-o<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),n("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),n("scroll",e.raw)),o=(new l.Date).getTime(),!1)))}function h(e){let a=e,s=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const l=t.params.mousewheel;t.params.cssMode&&a.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const m=o&&o.contains(a.target);if(!t.mouseEntered&&!m&&!l.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let p=0;const h=t.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(l.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;p=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;p=-c.pixelY}else p=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===p)return!0;l.invert&&(p=-p);let w=t.getTranslate()+p*l.sensitivity;if(w>=t.minTranslate()&&(w=t.minTranslate()),w<=t.maxTranslate()&&(w=t.maxTranslate()),s=!!t.params.loop||!(w===t.minTranslate()||w===t.maxTranslate()),s&&t.params.nested&&a.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:now(),delta:Math.abs(p),direction:Math.sign(p)},s=r&&e.time=t.minTranslate()&&(o=t.minTranslate()),o<=t.maxTranslate()&&(o=t.maxTranslate()),t.setTransition(0),t.setTranslate(o),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!m&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(i),i=void 0,d.length>=15&&d.shift();const a=d.length?d[d.length-1]:void 0,s=d[0];if(d.push(e),a&&(e.delta>a.delta||e.direction!==a.direction))d.splice(0);else if(d.length>=15&&e.time-s.time<500&&s.delta-e.delta>=1&&e.delta<=6){const a=p>0?.8:.2;r=e,d.splice(0),i=nextTick((()=>{t.slideToClosest(t.params.speed,!0,void 0,a)}),0)}i||(i=nextTick((()=>{r=e,d.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(s||n("scroll",a),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),l.releaseOnEdges&&(o===t.minTranslate()||o===t.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(p),direction:Math.sign(p),raw:e};d.length>=2&&d.shift();const s=d.length?d[d.length-1]:void 0;if(d.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&u(a):u(a),function(e){const a=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&a.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function c(e){let a=t.el;"container"!==t.params.mousewheel.eventsTarget&&(a=document.querySelector(t.params.mousewheel.eventsTarget)),a[e]("mouseenter",m),a[e]("mouseleave",p),a[e]("wheel",h)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",h),!0):!t.mousewheel.enabled&&(c("addEventListener"),t.mousewheel.enabled=!0,!0)}function f(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,h),!0):!!t.mousewheel.enabled&&(c("removeEventListener"),t.mousewheel.enabled=!1,!0)}s("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&f(),t.params.mousewheel.enabled&&w()})),s("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&f()})),Object.assign(t.mousewheel,{enable:w,disable:f})}export{Mousewheel as default}; +//# sourceMappingURL=mousewheel.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/mousewheel.min.mjs.map b/node/node_modules/swiper/modules/mousewheel.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..678fdba0eaf54b2dc756e7a398cb0386ce8cb2e9 --- /dev/null +++ b/node/node_modules/swiper/modules/mousewheel.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"mousewheel.mjs.mjs","names":["getWindow","nextTick","now","Mousewheel","_ref","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/mousewheel.mjs b/node/node_modules/swiper/modules/mousewheel.mjs new file mode 100644 index 0000000000000000000000000000000000000000..28c4d2e2c9b1a980b770b2d50fa24d5283095014 --- /dev/null +++ b/node/node_modules/swiper/modules/mousewheel.mjs @@ -0,0 +1,393 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { n as nextTick, d as now } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +export { Mousewheel as default }; diff --git a/node/node_modules/swiper/modules/mousewheel.scss b/node/node_modules/swiper/modules/mousewheel.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/navigation-element.css b/node/node_modules/swiper/modules/navigation-element.css new file mode 100644 index 0000000000000000000000000000000000000000..46a29181e0e7b106c1cf7f71a7324b0cce178f1d --- /dev/null +++ b/node/node_modules/swiper/modules/navigation-element.css @@ -0,0 +1,63 @@ +:host { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start *//* Navigation font end */ diff --git a/node/node_modules/swiper/modules/navigation-element.min.css b/node/node_modules/swiper/modules/navigation-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..70d187003fd6fe56da365f69ba7bcb75ee4cfc4f --- /dev/null +++ b/node/node_modules/swiper/modules/navigation-element.min.css @@ -0,0 +1 @@ +:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/navigation.css b/node/node_modules/swiper/modules/navigation.css new file mode 100644 index 0000000000000000000000000000000000000000..a287b8a925c055ec741bbf1d3f9be7136a27fdc8 --- /dev/null +++ b/node/node_modules/swiper/modules/navigation.css @@ -0,0 +1,86 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ diff --git a/node/node_modules/swiper/modules/navigation.less b/node/node_modules/swiper/modules/navigation.less new file mode 100644 index 0000000000000000000000000000000000000000..5243fe6deb38c886f5f9688df47d971b1a0ee2c1 --- /dev/null +++ b/node/node_modules/swiper/modules/navigation.less @@ -0,0 +1,86 @@ +@import url('../swiper-vars.less'); + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/node/node_modules/swiper/modules/navigation.min.css b/node/node_modules/swiper/modules/navigation.min.css new file mode 100644 index 0000000000000000000000000000000000000000..d93c5d845b56e6b92b542c9b9af4c3400bf8ea84 --- /dev/null +++ b/node/node_modules/swiper/modules/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/navigation.min.mjs b/node/node_modules/swiper/modules/navigation.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..2a758e0f96c8af4110b013926fb5c5f4b5357bc5 --- /dev/null +++ b/node/node_modules/swiper/modules/navigation.min.mjs @@ -0,0 +1,2 @@ +import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray}from"../shared/utils.min.mjs";function Navigation(a){let{swiper:e,extendParams:n,on:i,emit:t}=a;function s(a){let n;return a&&"string"==typeof a&&e.isElement&&(n=e.el.querySelector(a),n)?n:(a&&("string"==typeof a&&(n=[...document.querySelectorAll(a)]),e.params.uniqueNavElements&&"string"==typeof a&&n.length>1&&1===e.el.querySelectorAll(a).length&&(n=e.el.querySelector(a))),a&&!n?a:n)}function l(a,n){const i=e.params.navigation;(a=makeElementsArray(a)).forEach((a=>{a&&(a.classList[n?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=n),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](i.lockClass))}))}function r(){const{nextEl:a,prevEl:n}=e.navigation;if(e.params.loop)return l(n,!1),void l(a,!1);l(n,e.isBeginning&&!e.params.rewind),l(a,e.isEnd&&!e.params.rewind)}function o(a){a.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),t("navigationPrev"))}function d(a){a.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),t("navigationNext"))}function m(){const a=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let n=s(a.nextEl),i=s(a.prevEl);Object.assign(e.navigation,{nextEl:n,prevEl:i}),n=makeElementsArray(n),i=makeElementsArray(i);const t=(n,i)=>{n&&n.addEventListener("click","next"===i?d:o),!e.enabled&&n&&n.classList.add(...a.lockClass.split(" "))};n.forEach((a=>t(a,"next"))),i.forEach((a=>t(a,"prev")))}function c(){let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n);const i=(a,n)=>{a.removeEventListener("click","next"===n?d:o),a.classList.remove(...e.params.navigation.disabledClass.split(" "))};a.forEach((a=>i(a,"next"))),n.forEach((a=>i(a,"prev")))}n({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===e.params.navigation.enabled?p():(m(),r())})),i("toEdge fromEdge lock unlock",(()=>{r()})),i("destroy",(()=>{c()})),i("enable disable",(()=>{let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n),e.enabled?r():[...a,...n].filter((a=>!!a)).forEach((a=>a.classList.add(e.params.navigation.lockClass)))})),i("click",((a,n)=>{let{nextEl:i,prevEl:s}=e.navigation;i=makeElementsArray(i),s=makeElementsArray(s);const l=n.target;if(e.params.navigation.hideOnClick&&!s.includes(l)&&!i.includes(l)){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===l||e.pagination.el.contains(l)))return;let a;i.length?a=i[0].classList.contains(e.params.navigation.hiddenClass):s.length&&(a=s[0].classList.contains(e.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...s].filter((a=>!!a)).forEach((a=>a.classList.toggle(e.params.navigation.hiddenClass)))}}));const p=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),m(),r()},disable:p,update:r,init:m,destroy:c})}export{Navigation as default}; +//# sourceMappingURL=navigation.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/navigation.min.mjs.map b/node/node_modules/swiper/modules/navigation.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..ddb00ade013fbaa6521471ec2c9a9d6219a058a1 --- /dev/null +++ b/node/node_modules/swiper/modules/navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"navigation.mjs.mjs","names":["createElementIfNotDefined","makeElementsArray","Navigation","_ref","swiper","extendParams","on","emit","getEl","el","res","isElement","querySelector","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","navigation","forEach","subEl","classList","disabledClass","split","tagName","watchOverflow","enabled","isLocked","lockClass","update","nextEl","prevEl","loop","isBeginning","rewind","isEnd","onPrevClick","e","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","Object","assign","initButton","dir","addEventListener","add","destroy","destroyButton","removeEventListener","remove","hideOnClick","hiddenClass","navigationDisabledClass","disable","filter","_s","targetEl","target","includes","pagination","clickable","contains","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/navigation.mjs b/node/node_modules/swiper/modules/navigation.mjs new file mode 100644 index 0000000000000000000000000000000000000000..ac008735d6a1b28e54e629f710003f7e56fe98d3 --- /dev/null +++ b/node/node_modules/swiper/modules/navigation.mjs @@ -0,0 +1,191 @@ +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray } from '../shared/utils.mjs'; + +function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +export { Navigation as default }; diff --git a/node/node_modules/swiper/modules/navigation.scss b/node/node_modules/swiper/modules/navigation.scss new file mode 100644 index 0000000000000000000000000000000000000000..8fb729d4a74d05237592f0ef4e3656621c37defd --- /dev/null +++ b/node/node_modules/swiper/modules/navigation.scss @@ -0,0 +1,87 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ + } +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/node/node_modules/swiper/modules/pagination-element.css b/node/node_modules/swiper/modules/pagination-element.css new file mode 100644 index 0000000000000000000000000000000000000000..cae824f5f47ecff9d617ca451341fd7d959590a3 --- /dev/null +++ b/node/node_modules/swiper/modules/pagination-element.css @@ -0,0 +1,184 @@ +:host { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/pagination-element.min.css b/node/node_modules/swiper/modules/pagination-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..398a3454b26f66ead6da2bdcf15d98e0436694d0 --- /dev/null +++ b/node/node_modules/swiper/modules/pagination-element.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/pagination.css b/node/node_modules/swiper/modules/pagination.css new file mode 100644 index 0000000000000000000000000000000000000000..20bda39ca3f6567f8219a9fa9ab512181e4b55ca --- /dev/null +++ b/node/node_modules/swiper/modules/pagination.css @@ -0,0 +1,184 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/pagination.less b/node/node_modules/swiper/modules/pagination.less new file mode 100644 index 0000000000000000000000000000000000000000..202e40c9ba288b3ecbde66250369f6ce5eca7e85 --- /dev/null +++ b/node/node_modules/swiper/modules/pagination.less @@ -0,0 +1,187 @@ +@import url('../swiper-vars.less'); + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/pagination.min.css b/node/node_modules/swiper/modules/pagination.min.css new file mode 100644 index 0000000000000000000000000000000000000000..398a3454b26f66ead6da2bdcf15d98e0436694d0 --- /dev/null +++ b/node/node_modules/swiper/modules/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/pagination.min.mjs b/node/node_modules/swiper/modules/pagination.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..0db352fbd407c099dd4aa8a3d88d3d3996ed6875 --- /dev/null +++ b/node/node_modules/swiper/modules/pagination.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray,f as elementOuterSize,h as elementIndex,a as elementParents}from"../shared/utils.min.mjs";function Pagination(e){let{swiper:a,extendParams:s,on:l,emit:t}=e;const i="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),a.pagination={el:null,bullets:[]};let r=0;function o(){return!a.params.pagination.el||!a.pagination.el||Array.isArray(a.pagination.el)&&0===a.pagination.el.length}function p(e,s){const{bulletActiveClass:l}=a.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${l}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${l}-${s}-${s}`))}function c(e){const s=e.target.closest(classesToSelector(a.params.pagination.bulletClass));if(!s)return;e.preventDefault();const l=elementIndex(s)*a.params.slidesPerGroup;if(a.params.loop){if(a.realIndex===l)return;a.slideToLoop(l)}else a.slideTo(l)}function d(){const e=a.rtl,s=a.params.pagination;if(o())return;let l,i,c=a.pagination.el;c=makeElementsArray(c);const d=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.slides.length,m=a.params.loop?Math.ceil(d/a.params.slidesPerGroup):a.snapGrid.length;if(a.params.loop?(i=a.previousRealIndex||0,l=a.params.slidesPerGroup>1?Math.floor(a.realIndex/a.params.slidesPerGroup):a.realIndex):void 0!==a.snapIndex?(l=a.snapIndex,i=a.previousSnapIndex):(i=a.previousIndex||0,l=a.activeIndex||0),"bullets"===s.type&&a.pagination.bullets&&a.pagination.bullets.length>0){const t=a.pagination.bullets;let o,d,m;if(s.dynamicBullets&&(n=elementOuterSize(t[0],a.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[a.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==i&&(r+=l-(i||0),r>s.dynamicMainBullets-1?r=s.dynamicMainBullets-1:r<0&&(r=0)),o=Math.max(l-r,0),d=o+(Math.min(t.length,s.dynamicMainBullets)-1),m=(d+o)/2),t.forEach((e=>{const a=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...a)})),c.length>1)t.forEach((e=>{const t=elementIndex(e);t===l?e.classList.add(...s.bulletActiveClass.split(" ")):a.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(t>=o&&t<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),t===o&&p(e,"prev"),t===d&&p(e,"next"))}));else{const e=t[l];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),a.isElement&&t.forEach(((e,a)=>{e.setAttribute("part",a===l?"bullet-active":"bullet")})),s.dynamicBullets){const e=t[o],a=t[d];for(let e=o;e<=d;e+=1)t[e]&&t[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));p(e,"prev"),p(a,"next")}}if(s.dynamicBullets){const l=Math.min(t.length,s.dynamicMainBullets+4),i=(n*l-n)/2-m*n,r=e?"right":"left";t.forEach((e=>{e.style[a.isHorizontal()?r:"top"]=`${i}px`}))}}c.forEach(((e,i)=>{if("fraction"===s.type&&(e.querySelectorAll(classesToSelector(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(l+1)})),e.querySelectorAll(classesToSelector(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let t;t=s.progressbarOpposite?a.isHorizontal()?"vertical":"horizontal":a.isHorizontal()?"horizontal":"vertical";const i=(l+1)/m;let n=1,r=1;"horizontal"===t?n=i:r=i,e.querySelectorAll(classesToSelector(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${r})`,e.style.transitionDuration=`${a.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(a,l+1,m),0===i&&t("paginationRender",e)):(0===i&&t("paginationRender",e),t("paginationUpdate",e)),a.params.watchOverflow&&a.enabled&&e.classList[a.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=a.params.pagination;if(o())return;const s=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.grid&&a.params.grid.rows>1?a.slides.length/Math.ceil(a.params.grid.rows):a.slides.length;let l=a.pagination.el;l=makeElementsArray(l);let i="";if("bullets"===e.type){let l=a.params.loop?Math.ceil(s/a.params.slidesPerGroup):a.snapGrid.length;a.params.freeMode&&a.params.freeMode.enabled&&l>s&&(l=s);for(let s=0;s`}"fraction"===e.type&&(i=e.renderFraction?e.renderFraction.call(a,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(i=e.renderProgressbar?e.renderProgressbar.call(a,e.progressbarFillClass):``),a.pagination.bullets=[],l.forEach((s=>{"custom"!==e.type&&(s.innerHTML=i||""),"bullets"===e.type&&a.pagination.bullets.push(...s.querySelectorAll(classesToSelector(e.bulletClass)))})),"custom"!==e.type&&t("paginationRender",l[0])}function u(){a.params.pagination=createElementIfNotDefined(a,a.originalParams.pagination,a.params.pagination,{el:"swiper-pagination"});const e=a.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&a.isElement&&(s=a.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(a.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...a.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>elementParents(e,".swiper")[0]===a.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(a.pagination,{el:s}),s=makeElementsArray(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),r=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),a.enabled||s.classList.add(e.lockClass)})))}function g(){const e=a.params.pagination;if(o())return;let s=a.pagination.el;s&&(s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(a.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),a.pagination.bullets&&a.pagination.bullets.forEach((a=>a.classList.remove(...e.bulletActiveClass.split(" "))))}l("changeDirection",(()=>{if(!a.pagination||!a.pagination.el)return;const e=a.params.pagination;let{el:s}=a.pagination;s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),l("init",(()=>{!1===a.params.pagination.enabled?b():(u(),m(),d())})),l("activeIndexChange",(()=>{void 0===a.snapIndex&&d()})),l("snapIndexChange",(()=>{d()})),l("snapGridLengthChange",(()=>{m(),d()})),l("destroy",(()=>{g()})),l("enable disable",(()=>{let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList[a.enabled?"remove":"add"](a.params.pagination.lockClass))))})),l("lock unlock",(()=>{d()})),l("click",((e,s)=>{const l=s.target,i=makeElementsArray(a.pagination.el);if(a.params.pagination.el&&a.params.pagination.hideOnClick&&i&&i.length>0&&!l.classList.contains(a.params.pagination.bulletClass)){if(a.navigation&&(a.navigation.nextEl&&l===a.navigation.nextEl||a.navigation.prevEl&&l===a.navigation.prevEl))return;const e=i[0].classList.contains(a.params.pagination.hiddenClass);t(!0===e?"paginationShow":"paginationHide"),i.forEach((e=>e.classList.toggle(a.params.pagination.hiddenClass)))}}));const b=()=>{a.el.classList.add(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.add(a.params.pagination.paginationDisabledClass)))),g()};Object.assign(a.pagination,{enable:()=>{a.el.classList.remove(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.remove(a.params.pagination.paginationDisabledClass)))),u(),m(),d()},disable:b,render:m,update:d,init:u,destroy:g})}export{Pagination as default}; +//# sourceMappingURL=pagination.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/pagination.min.mjs.map b/node/node_modules/swiper/modules/pagination.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..eee8355d5db607246ec667e9b057273be208a56c --- /dev/null +++ b/node/node_modules/swiper/modules/pagination.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.mjs.mjs","names":["classesToSelector","createElementIfNotDefined","makeElementsArray","elementOuterSize","elementIndex","elementParents","Pagination","_ref","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","params","Array","isArray","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","e","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","slideToLoop","slideTo","update","rtl","current","previousIndex","slidesLength","virtual","enabled","slides","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","querySelector","document","uniqueNavElements","filter","Object","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/pagination.mjs b/node/node_modules/swiper/modules/pagination.mjs new file mode 100644 index 0000000000000000000000000000000000000000..e38786d2c5b944fd11ffdce71ddcb5d06195f8d3 --- /dev/null +++ b/node/node_modules/swiper/modules/pagination.mjs @@ -0,0 +1,443 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs'; + +function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + 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(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + 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; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +export { Pagination as default }; diff --git a/node/node_modules/swiper/modules/pagination.scss b/node/node_modules/swiper/modules/pagination.scss new file mode 100644 index 0000000000000000000000000000000000000000..5595484cd060c46866f4dbedf886806ba093d1fa --- /dev/null +++ b/node/node_modules/swiper/modules/pagination.scss @@ -0,0 +1,188 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ + } +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/parallax-element.css b/node/node_modules/swiper/modules/parallax-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/parallax-element.min.css b/node/node_modules/swiper/modules/parallax-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/parallax.css b/node/node_modules/swiper/modules/parallax.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/parallax.less b/node/node_modules/swiper/modules/parallax.less new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/parallax.min.css b/node/node_modules/swiper/modules/parallax.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/parallax.min.mjs b/node/node_modules/swiper/modules/parallax.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..b70fbd0397f07da541d0ef81334584e262d1637a --- /dev/null +++ b/node/node_modules/swiper/modules/parallax.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren}from"../shared/utils.min.mjs";function Parallax(a){let{swiper:e,extendParams:t,on:l}=a;t({parallax:{enabled:!1}});const r="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",s=(a,t)=>{const{rtl:l}=e,r=l?-1:1,s=a.getAttribute("data-swiper-parallax")||"0";let i=a.getAttribute("data-swiper-parallax-x"),p=a.getAttribute("data-swiper-parallax-y");const n=a.getAttribute("data-swiper-parallax-scale"),o=a.getAttribute("data-swiper-parallax-opacity"),d=a.getAttribute("data-swiper-parallax-rotate");if(i||p?(i=i||"0",p=p||"0"):e.isHorizontal()?(i=s,p="0"):(p=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*r+"%":i*t*r+"px",p=p.indexOf("%")>=0?parseInt(p,10)*t+"%":p*t+"px",null!=o){const e=o-(o-1)*(1-Math.abs(t));a.style.opacity=e}let x=`translate3d(${i}, ${p}, 0px)`;if(null!=n){x+=` scale(${n-(n-1)*(1-Math.abs(t))})`}if(d&&null!=d){x+=` rotate(${d*t*-1}deg)`}a.style.transform=x},i=()=>{const{el:a,slides:t,progress:l,snapGrid:i,isElement:p}=e,n=elementChildren(a,r);e.isElement&&n.push(...elementChildren(e.hostEl,r)),n.forEach((a=>{s(a,l)})),t.forEach(((a,t)=>{let p=a.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(p+=Math.ceil(t/2)-l*(i.length-1)),p=Math.min(Math.max(p,-1),1),a.querySelectorAll(`${r}, [data-swiper-parallax-rotate]`).forEach((a=>{s(a,p)}))}))};l("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),l("init",(()=>{e.params.parallax.enabled&&i()})),l("setTranslate",(()=>{e.params.parallax.enabled&&i()})),l("setTransition",((a,t)=>{e.params.parallax.enabled&&function(a){void 0===a&&(a=e.params.speed);const{el:t,hostEl:l}=e,s=[...t.querySelectorAll(r)];e.isElement&&s.push(...l.querySelectorAll(r)),s.forEach((e=>{let t=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||a;0===a&&(t=0),e.style.transitionDuration=`${t}ms`}))}(t)}))}export{Parallax as default}; +//# sourceMappingURL=parallax.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/parallax.min.mjs.map b/node/node_modules/swiper/modules/parallax.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..395322ae19fe5aa5425dd1a417b0056b7d5ff897 --- /dev/null +++ b/node/node_modules/swiper/modules/parallax.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"parallax.mjs.mjs","names":["elementChildren","Parallax","_ref","swiper","extendParams","on","parallax","enabled","elementsSelector","setTransform","el","progress","rtl","rtlFactor","p","getAttribute","x","y","scale","opacity","rotate","isHorizontal","indexOf","parseInt","currentOpacity","Math","abs","style","transform","setTranslate","slides","snapGrid","isElement","elements","push","hostEl","forEach","subEl","slideEl","slideIndex","slideProgress","params","slidesPerGroup","slidesPerView","ceil","length","min","max","querySelectorAll","watchSlidesProgress","originalParams","_swiper","duration","speed","parallaxEl","parallaxDuration","transitionDuration","setTransition"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/parallax.mjs b/node/node_modules/swiper/modules/parallax.mjs new file mode 100644 index 0000000000000000000000000000000000000000..1f467dede4a060a5b54f6bacc1431570e65a5795 --- /dev/null +++ b/node/node_modules/swiper/modules/parallax.mjs @@ -0,0 +1,124 @@ +import { e as elementChildren } from '../shared/utils.mjs'; + +function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +export { Parallax as default }; diff --git a/node/node_modules/swiper/modules/parallax.scss b/node/node_modules/swiper/modules/parallax.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/scrollbar-element.css b/node/node_modules/swiper/modules/scrollbar-element.css new file mode 100644 index 0000000000000000000000000000000000000000..b6b755e7df376bfddbe6a8d158f51f95e07ccdcf --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar-element.css @@ -0,0 +1,58 @@ +:host { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/scrollbar-element.min.css b/node/node_modules/swiper/modules/scrollbar-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..dc9860fdf545953b0986789de950f4ca0c25b4ac --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar-element.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/scrollbar.css b/node/node_modules/swiper/modules/scrollbar.css new file mode 100644 index 0000000000000000000000000000000000000000..678451cdfe901eaf7793bc991ce5bef9edb52322 --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar.css @@ -0,0 +1,58 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/scrollbar.less b/node/node_modules/swiper/modules/scrollbar.less new file mode 100644 index 0000000000000000000000000000000000000000..4920d9bf0ac20aedbaf951e5b0c6c18826190dcf --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar.less @@ -0,0 +1,59 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/scrollbar.min.css b/node/node_modules/swiper/modules/scrollbar.min.css new file mode 100644 index 0000000000000000000000000000000000000000..dc9860fdf545953b0986789de950f4ca0c25b4ac --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/scrollbar.min.mjs b/node/node_modules/swiper/modules/scrollbar.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..ea875ac47e8eccbe6d81fcb90d1f9cf70e266ce6 --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{m as makeElementsArray,i as classesToTokens,c as createElement,n as nextTick,b as elementOffset}from"../shared/utils.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";function Scrollbar(s){let{swiper:l,extendParams:e,on:a,emit:r}=s;const t=getDocument();let o,n,i,c,p=!1,m=null,d=null;function b(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s,rtlTranslate:e}=l,{dragEl:a,el:r}=s,t=l.params.scrollbar,o=l.params.loop?l.progressLoop:l.progress;let c=n,p=(i-n)*o;e?(p=-p,p>0?(c=n-p,p=0):-p+n>i&&(c=i+p)):p<0?(c=n+p,p=0):p+n>i&&(c=i-p),l.isHorizontal()?(a.style.transform=`translate3d(${p}px, 0, 0)`,a.style.width=`${c}px`):(a.style.transform=`translate3d(0px, ${p}px, 0)`,a.style.height=`${c}px`),t.hide&&(clearTimeout(m),r.style.opacity=1,m=setTimeout((()=>{r.style.opacity=0,r.style.transitionDuration="400ms"}),1e3))}function u(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s}=l,{dragEl:e,el:a}=s;e.style.width="",e.style.height="",i=l.isHorizontal()?a.offsetWidth:a.offsetHeight,c=l.size/(l.virtualSize+l.params.slidesOffsetBefore-(l.params.centeredSlides?l.snapGrid[0]:0)),n="auto"===l.params.scrollbar.dragSize?i*c:parseInt(l.params.scrollbar.dragSize,10),l.isHorizontal()?e.style.width=`${n}px`:e.style.height=`${n}px`,a.style.display=c>=1?"none":"",l.params.scrollbar.hide&&(a.style.opacity=0),l.params.watchOverflow&&l.enabled&&s.el.classList[l.isLocked?"add":"remove"](l.params.scrollbar.lockClass)}function f(s){return l.isHorizontal()?s.clientX:s.clientY}function g(s){const{scrollbar:e,rtlTranslate:a}=l,{el:r}=e;let t;t=(f(s)-elementOffset(r)[l.isHorizontal()?"left":"top"]-(null!==o?o:n/2))/(i-n),t=Math.max(Math.min(t,1),0),a&&(t=1-t);const c=l.minTranslate()+(l.maxTranslate()-l.minTranslate())*t;l.updateProgress(c),l.setTranslate(c),l.updateActiveIndex(),l.updateSlidesClasses()}function y(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:n,dragEl:i}=a;p=!0,o=s.target===i?f(s)-s.target.getBoundingClientRect()[l.isHorizontal()?"left":"top"]:null,s.preventDefault(),s.stopPropagation(),t.style.transitionDuration="100ms",i.style.transitionDuration="100ms",g(s),clearTimeout(d),n.style.transitionDuration="0ms",e.hide&&(n.style.opacity=1),l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",s)}function h(s){const{scrollbar:e,wrapperEl:a}=l,{el:t,dragEl:o}=e;p&&(s.preventDefault?s.preventDefault():s.returnValue=!1,g(s),a.style.transitionDuration="0ms",t.style.transitionDuration="0ms",o.style.transitionDuration="0ms",r("scrollbarDragMove",s))}function T(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:o}=a;p&&(p=!1,l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="",t.style.transitionDuration=""),e.hide&&(clearTimeout(d),d=nextTick((()=>{o.style.opacity=0,o.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",s),e.snapOnRelease&&l.slideToClosest())}function v(s){const{scrollbar:e,params:a}=l,r=e.el;if(!r)return;const o=r,n=!!a.passiveListeners&&{passive:!1,capture:!1},i=!!a.passiveListeners&&{passive:!0,capture:!1};if(!o)return;const c="on"===s?"addEventListener":"removeEventListener";o[c]("pointerdown",y,n),t[c]("pointermove",h,n),t[c]("pointerup",T,i)}function D(){const{scrollbar:s,el:e}=l;l.params.scrollbar=createElementIfNotDefined(l,l.originalParams.scrollbar,l.params.scrollbar,{el:"swiper-scrollbar"});const a=l.params.scrollbar;if(!a.el)return;let r,o;if("string"==typeof a.el&&l.isElement&&(r=l.el.querySelector(a.el)),r||"string"!=typeof a.el)r||(r=a.el);else if(r=t.querySelectorAll(a.el),!r.length)return;l.params.uniqueNavElements&&"string"==typeof a.el&&r.length>1&&1===e.querySelectorAll(a.el).length&&(r=e.querySelector(a.el)),r.length>0&&(r=r[0]),r.classList.add(l.isHorizontal()?a.horizontalClass:a.verticalClass),r&&(o=r.querySelector(classesToSelector(l.params.scrollbar.dragClass)),o||(o=createElement("div",l.params.scrollbar.dragClass),r.append(o))),Object.assign(s,{el:r,dragEl:o}),a.draggable&&l.params.scrollbar.el&&l.scrollbar.el&&v("on"),r&&r.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))}function C(){const s=l.params.scrollbar,e=l.scrollbar.el;e&&e.classList.remove(...classesToTokens(l.isHorizontal()?s.horizontalClass:s.verticalClass)),l.params.scrollbar.el&&l.scrollbar.el&&v("off")}e({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),l.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!l.scrollbar||!l.scrollbar.el)return;const s=l.params.scrollbar;let{el:e}=l.scrollbar;e=makeElementsArray(e),e.forEach((e=>{e.classList.remove(s.horizontalClass,s.verticalClass),e.classList.add(l.isHorizontal()?s.horizontalClass:s.verticalClass)}))})),a("init",(()=>{!1===l.params.scrollbar.enabled?E():(D(),u(),b())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{u()})),a("setTranslate",(()=>{b()})),a("setTransition",((s,e)=>{!function(s){l.params.scrollbar.el&&l.scrollbar.el&&(l.scrollbar.dragEl.style.transitionDuration=`${s}ms`)}(e)})),a("enable disable",(()=>{const{el:s}=l.scrollbar;s&&s.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))})),a("destroy",(()=>{C()}));const E=()=>{l.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),C()};Object.assign(l.scrollbar,{enable:()=>{l.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),D(),u(),b()},disable:E,updateSize:u,setTranslate:b,init:D,destroy:C})}export{Scrollbar as default}; +//# sourceMappingURL=scrollbar.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/scrollbar.min.mjs.map b/node/node_modules/swiper/modules/scrollbar.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..325d019c698c7527cf8ba4a73046926612f63ff2 --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"scrollbar.mjs.mjs","names":["getDocument","makeElementsArray","classesToTokens","createElement","nextTick","elementOffset","createElementIfNotDefined","classesToSelector","Scrollbar","_ref","swiper","extendParams","on","emit","document","dragStartPos","dragSize","trackSize","divider","isTouched","timeout","dragTimeout","setTranslate","params","scrollbar","el","rtlTranslate","rtl","dragEl","progress","loop","progressLoop","newSize","newPos","isHorizontal","style","transform","width","height","hide","clearTimeout","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","enabled","classList","isLocked","lockClass","getPointerPosition","e","clientX","clientY","setDragPosition","positionRatio","Math","max","min","position","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","target","getBoundingClientRect","preventDefault","stopPropagation","cssMode","onDragMove","returnValue","onDragEnd","snapOnRelease","slideToClosest","events","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","isElement","querySelector","querySelectorAll","length","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","append","Object","assign","draggable","destroy","remove","scrollbarDisabledClass","forEach","subEl","disable","_s","duration","setTransition","enable"],"sources":["0"],"mappings":"YAAcA,gBAAmB,+CACnBC,uBAAwBC,qBAAsBC,mBAAoBC,cAAeC,kBAAqB,sCACtGC,8BAAiC,8DACjCC,sBAAyB,wCAEvC,SAASC,UAAUC,GACjB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,EAAEC,KACFA,GACEJ,EACJ,MAAMK,EAAWd,cACjB,IAGIe,EACAC,EACAC,EACAC,EANAC,GAAY,EACZC,EAAU,KACVC,EAAc,KAuBlB,SAASC,IACP,IAAKZ,EAAOa,OAAOC,UAAUC,KAAOf,EAAOc,UAAUC,GAAI,OACzD,MAAMD,UACJA,EACAE,aAAcC,GACZjB,GACEkB,OACJA,EAAMH,GACNA,GACED,EACED,EAASb,EAAOa,OAAOC,UACvBK,EAAWnB,EAAOa,OAAOO,KAAOpB,EAAOqB,aAAerB,EAAOmB,SACnE,IAAIG,EAAUhB,EACViB,GAAUhB,EAAYD,GAAYa,EAClCF,GACFM,GAAUA,EACNA,EAAS,GACXD,EAAUhB,EAAWiB,EACrBA,EAAS,IACCA,EAASjB,EAAWC,IAC9Be,EAAUf,EAAYgB,IAEfA,EAAS,GAClBD,EAAUhB,EAAWiB,EACrBA,EAAS,GACAA,EAASjB,EAAWC,IAC7Be,EAAUf,EAAYgB,GAEpBvB,EAAOwB,gBACTN,EAAOO,MAAMC,UAAY,eAAeH,aACxCL,EAAOO,MAAME,MAAQ,GAAGL,QAExBJ,EAAOO,MAAMC,UAAY,oBAAoBH,UAC7CL,EAAOO,MAAMG,OAAS,GAAGN,OAEvBT,EAAOgB,OACTC,aAAapB,GACbK,EAAGU,MAAMM,QAAU,EACnBrB,EAAUsB,YAAW,KACnBjB,EAAGU,MAAMM,QAAU,EACnBhB,EAAGU,MAAMQ,mBAAqB,OAAO,GACpC,KAEP,CAKA,SAASC,IACP,IAAKlC,EAAOa,OAAOC,UAAUC,KAAOf,EAAOc,UAAUC,GAAI,OACzD,MAAMD,UACJA,GACEd,GACEkB,OACJA,EAAMH,GACNA,GACED,EACJI,EAAOO,MAAME,MAAQ,GACrBT,EAAOO,MAAMG,OAAS,GACtBrB,EAAYP,EAAOwB,eAAiBT,EAAGoB,YAAcpB,EAAGqB,aACxD5B,EAAUR,EAAOqC,MAAQrC,EAAOsC,YAActC,EAAOa,OAAO0B,oBAAsBvC,EAAOa,OAAO2B,eAAiBxC,EAAOyC,SAAS,GAAK,IAEpInC,EADuC,SAArCN,EAAOa,OAAOC,UAAUR,SACfC,EAAYC,EAEZkC,SAAS1C,EAAOa,OAAOC,UAAUR,SAAU,IAEpDN,EAAOwB,eACTN,EAAOO,MAAME,MAAQ,GAAGrB,MAExBY,EAAOO,MAAMG,OAAS,GAAGtB,MAGzBS,EAAGU,MAAMkB,QADPnC,GAAW,EACM,OAEA,GAEjBR,EAAOa,OAAOC,UAAUe,OAC1Bd,EAAGU,MAAMM,QAAU,GAEjB/B,EAAOa,OAAO+B,eAAiB5C,EAAO6C,SACxC/B,EAAUC,GAAG+B,UAAU9C,EAAO+C,SAAW,MAAQ,UAAU/C,EAAOa,OAAOC,UAAUkC,UAEvF,CACA,SAASC,EAAmBC,GAC1B,OAAOlD,EAAOwB,eAAiB0B,EAAEC,QAAUD,EAAEE,OAC/C,CACA,SAASC,EAAgBH,GACvB,MAAMpC,UACJA,EACAE,aAAcC,GACZjB,GACEe,GACJA,GACED,EACJ,IAAIwC,EACJA,GAAiBL,EAAmBC,GAAKvD,cAAcoB,GAAIf,EAAOwB,eAAiB,OAAS,QAA2B,OAAjBnB,EAAwBA,EAAeC,EAAW,KAAOC,EAAYD,GAC3KgD,EAAgBC,KAAKC,IAAID,KAAKE,IAAIH,EAAe,GAAI,GACjDrC,IACFqC,EAAgB,EAAIA,GAEtB,MAAMI,EAAW1D,EAAO2D,gBAAkB3D,EAAO4D,eAAiB5D,EAAO2D,gBAAkBL,EAC3FtD,EAAO6D,eAAeH,GACtB1D,EAAOY,aAAa8C,GACpB1D,EAAO8D,oBACP9D,EAAO+D,qBACT,CACA,SAASC,EAAYd,GACnB,MAAMrC,EAASb,EAAOa,OAAOC,WACvBA,UACJA,EAASmD,UACTA,GACEjE,GACEe,GACJA,EAAEG,OACFA,GACEJ,EACJL,GAAY,EACZJ,EAAe6C,EAAEgB,SAAWhD,EAAS+B,EAAmBC,GAAKA,EAAEgB,OAAOC,wBAAwBnE,EAAOwB,eAAiB,OAAS,OAAS,KACxI0B,EAAEkB,iBACFlB,EAAEmB,kBACFJ,EAAUxC,MAAMQ,mBAAqB,QACrCf,EAAOO,MAAMQ,mBAAqB,QAClCoB,EAAgBH,GAChBpB,aAAanB,GACbI,EAAGU,MAAMQ,mBAAqB,MAC1BpB,EAAOgB,OACTd,EAAGU,MAAMM,QAAU,GAEjB/B,EAAOa,OAAOyD,UAChBtE,EAAOiE,UAAUxC,MAAM,oBAAsB,QAE/CtB,EAAK,qBAAsB+C,EAC7B,CACA,SAASqB,EAAWrB,GAClB,MAAMpC,UACJA,EAASmD,UACTA,GACEjE,GACEe,GACJA,EAAEG,OACFA,GACEJ,EACCL,IACDyC,EAAEkB,eAAgBlB,EAAEkB,iBAAsBlB,EAAEsB,aAAc,EAC9DnB,EAAgBH,GAChBe,EAAUxC,MAAMQ,mBAAqB,MACrClB,EAAGU,MAAMQ,mBAAqB,MAC9Bf,EAAOO,MAAMQ,mBAAqB,MAClC9B,EAAK,oBAAqB+C,GAC5B,CACA,SAASuB,EAAUvB,GACjB,MAAMrC,EAASb,EAAOa,OAAOC,WACvBA,UACJA,EAASmD,UACTA,GACEjE,GACEe,GACJA,GACED,EACCL,IACLA,GAAY,EACRT,EAAOa,OAAOyD,UAChBtE,EAAOiE,UAAUxC,MAAM,oBAAsB,GAC7CwC,EAAUxC,MAAMQ,mBAAqB,IAEnCpB,EAAOgB,OACTC,aAAanB,GACbA,EAAcjB,UAAS,KACrBqB,EAAGU,MAAMM,QAAU,EACnBhB,EAAGU,MAAMQ,mBAAqB,OAAO,GACpC,MAEL9B,EAAK,mBAAoB+C,GACrBrC,EAAO6D,eACT1E,EAAO2E,iBAEX,CACA,SAASC,EAAOC,GACd,MAAM/D,UACJA,EAASD,OACTA,GACEb,EACEe,EAAKD,EAAUC,GACrB,IAAKA,EAAI,OACT,MAAMmD,EAASnD,EACT+D,IAAiBjE,EAAOkE,kBAAmB,CAC/CC,SAAS,EACTC,SAAS,GAELC,IAAkBrE,EAAOkE,kBAAmB,CAChDC,SAAS,EACTC,SAAS,GAEX,IAAKf,EAAQ,OACb,MAAMiB,EAAyB,OAAXN,EAAkB,mBAAqB,sBAC3DX,EAAOiB,GAAa,cAAenB,EAAac,GAChD1E,EAAS+E,GAAa,cAAeZ,EAAYO,GACjD1E,EAAS+E,GAAa,YAAaV,EAAWS,EAChD,CASA,SAASE,IACP,MAAMtE,UACJA,EACAC,GAAIsE,GACFrF,EACJA,EAAOa,OAAOC,UAAYlB,0BAA0BI,EAAQA,EAAOsF,eAAexE,UAAWd,EAAOa,OAAOC,UAAW,CACpHC,GAAI,qBAEN,MAAMF,EAASb,EAAOa,OAAOC,UAC7B,IAAKD,EAAOE,GAAI,OAChB,IAAIA,EAeAG,EAXJ,GAHyB,iBAAdL,EAAOE,IAAmBf,EAAOuF,YAC1CxE,EAAKf,EAAOe,GAAGyE,cAAc3E,EAAOE,KAEjCA,GAA2B,iBAAdF,EAAOE,GAGbA,IACVA,EAAKF,EAAOE,SAFZ,GADAA,EAAKX,EAASqF,iBAAiB5E,EAAOE,KACjCA,EAAG2E,OAAQ,OAId1F,EAAOa,OAAO8E,mBAA0C,iBAAd9E,EAAOE,IAAmBA,EAAG2E,OAAS,GAAqD,IAAhDL,EAASI,iBAAiB5E,EAAOE,IAAI2E,SAC5H3E,EAAKsE,EAASG,cAAc3E,EAAOE,KAEjCA,EAAG2E,OAAS,IAAG3E,EAAKA,EAAG,IAC3BA,EAAG+B,UAAU8C,IAAI5F,EAAOwB,eAAiBX,EAAOgF,gBAAkBhF,EAAOiF,eAErE/E,IACFG,EAASH,EAAGyE,cAAc3F,kBAAkBG,EAAOa,OAAOC,UAAUiF,YAC/D7E,IACHA,EAASzB,cAAc,MAAOO,EAAOa,OAAOC,UAAUiF,WACtDhF,EAAGiF,OAAO9E,KAGd+E,OAAOC,OAAOpF,EAAW,CACvBC,KACAG,WAEEL,EAAOsF,WA5CNnG,EAAOa,OAAOC,UAAUC,IAAOf,EAAOc,UAAUC,IACrD6D,EAAO,MA8CH7D,GACFA,EAAG+B,UAAU9C,EAAO6C,QAAU,SAAW,UAAUrD,gBAAgBQ,EAAOa,OAAOC,UAAUkC,WAE/F,CACA,SAASoD,IACP,MAAMvF,EAASb,EAAOa,OAAOC,UACvBC,EAAKf,EAAOc,UAAUC,GACxBA,GACFA,EAAG+B,UAAUuD,UAAU7G,gBAAgBQ,EAAOwB,eAAiBX,EAAOgF,gBAAkBhF,EAAOiF,gBAnD5F9F,EAAOa,OAAOC,UAAUC,IAAOf,EAAOc,UAAUC,IACrD6D,EAAO,MAqDT,CApRA3E,EAAa,CACXa,UAAW,CACTC,GAAI,KACJT,SAAU,OACVuB,MAAM,EACNsE,WAAW,EACXzB,eAAe,EACf1B,UAAW,wBACX+C,UAAW,wBACXO,uBAAwB,4BACxBT,gBAAiB,8BACjBC,cAAe,+BAGnB9F,EAAOc,UAAY,CACjBC,GAAI,KACJG,OAAQ,MAqQVhB,EAAG,mBAAmB,KACpB,IAAKF,EAAOc,YAAcd,EAAOc,UAAUC,GAAI,OAC/C,MAAMF,EAASb,EAAOa,OAAOC,UAC7B,IAAIC,GACFA,GACEf,EAAOc,UACXC,EAAKxB,kBAAkBwB,GACvBA,EAAGwF,SAAQC,IACTA,EAAM1D,UAAUuD,OAAOxF,EAAOgF,gBAAiBhF,EAAOiF,eACtDU,EAAM1D,UAAU8C,IAAI5F,EAAOwB,eAAiBX,EAAOgF,gBAAkBhF,EAAOiF,cAAc,GAC1F,IAEJ5F,EAAG,QAAQ,MAC+B,IAApCF,EAAOa,OAAOC,UAAU+B,QAE1B4D,KAEArB,IACAlD,IACAtB,IACF,IAEFV,EAAG,4DAA4D,KAC7DgC,GAAY,IAEdhC,EAAG,gBAAgB,KACjBU,GAAc,IAEhBV,EAAG,iBAAiB,CAACwG,EAAIC,MAnPzB,SAAuBA,GAChB3G,EAAOa,OAAOC,UAAUC,IAAOf,EAAOc,UAAUC,KACrDf,EAAOc,UAAUI,OAAOO,MAAMQ,mBAAqB,GAAG0E,MACxD,CAiPEC,CAAcD,EAAS,IAEzBzG,EAAG,kBAAkB,KACnB,MAAMa,GACJA,GACEf,EAAOc,UACPC,GACFA,EAAG+B,UAAU9C,EAAO6C,QAAU,SAAW,UAAUrD,gBAAgBQ,EAAOa,OAAOC,UAAUkC,WAC7F,IAEF9C,EAAG,WAAW,KACZkG,GAAS,IAEX,MASMK,EAAU,KACdzG,EAAOe,GAAG+B,UAAU8C,OAAOpG,gBAAgBQ,EAAOa,OAAOC,UAAUwF,yBAC/DtG,EAAOc,UAAUC,IACnBf,EAAOc,UAAUC,GAAG+B,UAAU8C,OAAOpG,gBAAgBQ,EAAOa,OAAOC,UAAUwF,yBAE/EF,GAAS,EAEXH,OAAOC,OAAOlG,EAAOc,UAAW,CAC9B+F,OAjBa,KACb7G,EAAOe,GAAG+B,UAAUuD,UAAU7G,gBAAgBQ,EAAOa,OAAOC,UAAUwF,yBAClEtG,EAAOc,UAAUC,IACnBf,EAAOc,UAAUC,GAAG+B,UAAUuD,UAAU7G,gBAAgBQ,EAAOa,OAAOC,UAAUwF,yBAElFlB,IACAlD,IACAtB,GAAc,EAWd6F,UACAvE,aACAtB,eACAwE,OACAgB,WAEJ,QAEStG"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/scrollbar.mjs b/node/node_modules/swiper/modules/scrollbar.mjs new file mode 100644 index 0000000000000000000000000000000000000000..7406ab2579b553d49cb6bec6a70bc6ab1340fc97 --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar.mjs @@ -0,0 +1,366 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; + +function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +export { Scrollbar as default }; diff --git a/node/node_modules/swiper/modules/scrollbar.scss b/node/node_modules/swiper/modules/scrollbar.scss new file mode 100644 index 0000000000000000000000000000000000000000..93882d383d23dc5eea7268374506969164cce04a --- /dev/null +++ b/node/node_modules/swiper/modules/scrollbar.scss @@ -0,0 +1,61 @@ +@at-root { + :root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ + } +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/node/node_modules/swiper/modules/thumbs-element.css b/node/node_modules/swiper/modules/thumbs-element.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/thumbs-element.min.css b/node/node_modules/swiper/modules/thumbs-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/thumbs.css b/node/node_modules/swiper/modules/thumbs.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/thumbs.less b/node/node_modules/swiper/modules/thumbs.less new file mode 100644 index 0000000000000000000000000000000000000000..9eaa1b3c04a673df2a0014fc07f1ac9bc7de4003 --- /dev/null +++ b/node/node_modules/swiper/modules/thumbs.less @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/node/node_modules/swiper/modules/thumbs.min.css b/node/node_modules/swiper/modules/thumbs.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node/node_modules/swiper/modules/thumbs.min.mjs b/node/node_modules/swiper/modules/thumbs.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..80761f5193a3a2bddcdaf227e03be3a121c406f4 --- /dev/null +++ b/node/node_modules/swiper/modules/thumbs.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{l as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb(e){let{swiper:s,extendParams:i,on:t}=e;i({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,a=!1;function l(){const e=s.thumbs.swiper;if(!e||e.destroyed)return;const i=e.clickedIndex,t=e.clickedSlide;if(t&&t.classList.contains(s.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,s.params.loop?s.slideToLoop(r):s.slideTo(r)}function n(){const{thumbs:e}=s.params;if(r)return!1;r=!0;const i=s.constructor;if(e.swiper instanceof i)s.thumbs.swiper=e.swiper,Object.assign(s.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(s.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper.update();else if(isObject(e.swiper)){const t=Object.assign({},e.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper=new i(t),a=!0}return s.thumbs.swiper.el.classList.add(s.params.thumbs.thumbsContainerClass),s.thumbs.swiper.on("tap",l),!0}function d(e){const i=s.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView;let r=1;const a=s.params.thumbs.slideThumbActiveClass;if(s.params.slidesPerView>1&&!s.params.centeredSlides&&(r=s.params.slidesPerView),s.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),i.slides.forEach((e=>e.classList.remove(a))),i.params.loop||i.params.virtual&&i.params.virtual.enabled)for(let e=0;e{e.classList.add(a)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${s.realIndex}`))[0];a=i.slides.indexOf(e),d=s.activeIndex>s.previousIndex?"next":"prev"}else a=s.realIndex,d=a>s.previousIndex?"next":"prev";n&&(a+="next"===d?l:-1*l),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(a)<0&&(i.params.centeredSlides?a=a>r?a-Math.floor(t/2)+1:a+Math.floor(t/2)-1:a>r&&i.params.slidesPerGroup,i.slideTo(a,e?0:void 0))}}s.thumbs={swiper:null},t("beforeInit",(()=>{const{thumbs:e}=s.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof e.swiper?i.querySelector(e.swiper):e.swiper;if(t&&t.swiper)e.swiper=t.swiper,n(),d(!0);else if(t){const i=r=>{e.swiper=r.detail[0],t.removeEventListener("init",i),n(),d(!0),e.swiper.update(),s.update()};t.addEventListener("init",i)}return t},r=()=>{if(s.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else n(),d(!0)})),t("slideChange update resize observerUpdate",(()=>{d()})),t("setTransition",((e,i)=>{const t=s.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)})),t("beforeDestroy",(()=>{const e=s.thumbs.swiper;e&&!e.destroyed&&a&&e.destroy()})),Object.assign(s.thumbs,{init:n,update:d})}export{Thumb as default}; +//# sourceMappingURL=thumbs.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/thumbs.min.mjs.map b/node/node_modules/swiper/modules/thumbs.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..6d3de20556bee684a907f42928a08bf377dd22cf --- /dev/null +++ b/node/node_modules/swiper/modules/thumbs.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"thumbs.mjs.mjs","names":["getDocument","isObject","elementChildren","Thumb","_ref","swiper","extendParams","on","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","classList","contains","params","slideToIndex","loop","parseInt","getAttribute","slideToLoop","slideTo","init","thumbsParams","SwiperClass","constructor","Object","assign","originalParams","watchSlidesProgress","slideToClickedSlide","update","thumbsSwiperParams","el","add","initial","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","Math","floor","slides","forEach","slideEl","remove","virtual","enabled","i","slidesEl","realIndex","useOffset","currentThumbsIndex","activeIndex","newThumbsIndex","direction","newThumbsSlide","filter","indexOf","previousIndex","visibleSlidesIndexes","slidesPerGroup","undefined","HTMLElement","document","getThumbsElementAndInit","thumbsElement","querySelector","onThumbsSwiper","e","detail","removeEventListener","addEventListener","watchForThumbsToAppear","requestAnimationFrame","_s","duration","setTransition","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/thumbs.mjs b/node/node_modules/swiper/modules/thumbs.mjs new file mode 100644 index 0000000000000000000000000000000000000000..92cfc47320068dee0e04bea477653fe7fd3e75e8 --- /dev/null +++ b/node/node_modules/swiper/modules/thumbs.mjs @@ -0,0 +1,192 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { l as isObject, e as elementChildren } from '../shared/utils.mjs'; + +function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +export { Thumb as default }; diff --git a/node/node_modules/swiper/modules/thumbs.scss b/node/node_modules/swiper/modules/thumbs.scss new file mode 100644 index 0000000000000000000000000000000000000000..9eaa1b3c04a673df2a0014fc07f1ac9bc7de4003 --- /dev/null +++ b/node/node_modules/swiper/modules/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/node/node_modules/swiper/modules/virtual-element.css b/node/node_modules/swiper/modules/virtual-element.css new file mode 100644 index 0000000000000000000000000000000000000000..432b52bba5d398c7e5af8e75f00c7bd3e2a09f5e --- /dev/null +++ b/node/node_modules/swiper/modules/virtual-element.css @@ -0,0 +1,19 @@ +.swiper-virtual ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/node/node_modules/swiper/modules/virtual-element.min.css b/node/node_modules/swiper/modules/virtual-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..d0e604354c0c306bbfea7fb7f226362576b9d600 --- /dev/null +++ b/node/node_modules/swiper/modules/virtual-element.min.css @@ -0,0 +1 @@ +.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/virtual.css b/node/node_modules/swiper/modules/virtual.css new file mode 100644 index 0000000000000000000000000000000000000000..60ebeea44e93faab9e7cdd56664c43a9851de52e --- /dev/null +++ b/node/node_modules/swiper/modules/virtual.css @@ -0,0 +1,19 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/node/node_modules/swiper/modules/virtual.less b/node/node_modules/swiper/modules/virtual.less new file mode 100644 index 0000000000000000000000000000000000000000..824cc1e3c5d08c1357b601ba2c243e6ee71596b4 --- /dev/null +++ b/node/node_modules/swiper/modules/virtual.less @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/node/node_modules/swiper/modules/virtual.min.css b/node/node_modules/swiper/modules/virtual.min.css new file mode 100644 index 0000000000000000000000000000000000000000..dbb40070edb6532b601d1d499c9eba0effe0fb38 --- /dev/null +++ b/node/node_modules/swiper/modules/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/virtual.min.mjs b/node/node_modules/swiper/modules/virtual.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..761b2d7110a6b983b27721043bf40c561349782e --- /dev/null +++ b/node/node_modules/swiper/modules/virtual.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{s as setCSSProperty,e as elementChildren,c as createElement}from"../shared/utils.min.mjs";function Virtual(e){let s,{swiper:t,extendParams:r,on:i,emit:a}=e;r({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=getDocument();t.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const d=l.createElement("div");function n(e,s){const r=t.params.virtual;if(r.cache&&t.virtual.cache[s])return t.virtual.cache[s];let i;return r.renderSlide?(i=r.renderSlide.call(t,e,s),"string"==typeof i&&(d.innerHTML=i,i=d.children[0])):i=t.isElement?createElement("swiper-slide"):createElement("div",t.params.slideClass),i.setAttribute("data-swiper-slide-index",s),r.renderSlide||(i.innerHTML=e),r.cache&&(t.virtual.cache[s]=i),i}function c(e){const{slidesPerView:s,slidesPerGroup:r,centeredSlides:i,loop:l}=t.params,{addSlidesBefore:d,addSlidesAfter:c}=t.params.virtual,{from:o,to:u,slides:p,slidesGrid:h,offset:f}=t.virtual;t.params.cssMode||t.updateActiveIndex();const v=t.activeIndex||0;let m,g,E;m=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",i?(g=Math.floor(s/2)+r+c,E=Math.floor(s/2)+r+d):(g=s+(r-1)+c,E=(l?s:r)+d);let x=v-E,w=v+g;l||(x=Math.max(x,0),w=Math.min(w,p.length-1));let S=(t.slidesGrid[x]||0)-(t.slidesGrid[0]||0);function b(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),a("virtualUpdate")}if(l&&v>=E?(x-=E,i||(S+=t.slidesGrid[0])):l&&v{e.style[m]=S-Math.abs(t.cssOverflowAdjustment())+"px"})),t.updateProgress(),void a("virtualUpdate");if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:S,from:x,to:w,slides:function(){const e=[];for(let s=x;s<=w;s+=1)e.push(p[s]);return e}()}),void(t.params.virtual.renderExternalUpdate?b():a("virtualUpdate"));const A=[],M=[],y=e=>{let s=e;return e<0?s=p.length+e:s>=p.length&&(s-=p.length),s};if(e)t.slides.filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=o;e<=u;e+=1)if(ew){const s=y(e);t.slides.filter((e=>e.matches(`.${t.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`))).forEach((e=>{e.remove()}))}const P=l?-p.length:0,j=l?2*p.length:p.length;for(let s=P;s=x&&s<=w){const t=y(s);void 0===u||e?M.push(t):(s>u&&M.push(t),s{t.slidesEl.append(n(p[e],e))})),l)for(let e=A.length-1;e>=0;e-=1){const s=A[e];t.slidesEl.prepend(n(p[s],s))}else A.sort(((e,s)=>s-e)),A.forEach((e=>{t.slidesEl.prepend(n(p[e],e))}));elementChildren(t.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[m]=S-Math.abs(t.cssOverflowAdjustment())+"px"})),b()}i("beforeInit",(()=>{if(!t.params.virtual.enabled)return;let e;if(void 0===t.passedParams.virtual.slides){const s=[...t.slidesEl.children].filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`)));s&&s.length&&(t.virtual.slides=[...s],e=!0,s.forEach(((e,s)=>{e.setAttribute("data-swiper-slide-index",s),t.virtual.cache[s]=e,e.remove()})))}e||(t.virtual.slides=t.params.virtual.slides),t.classNames.push(`${t.params.containerModifierClass}virtual`),t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0,c()})),i("setTranslate",(()=>{t.params.virtual.enabled&&(t.params.cssMode&&!t._immediateVirtual?(clearTimeout(s),s=setTimeout((()=>{c()}),100)):c())})),i("init update resize",(()=>{t.params.virtual.enabled&&t.params.cssMode&&setCSSProperty(t.wrapperEl,"--swiper-virtual-size",`${t.virtualSize}px`)})),Object.assign(t.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let s=0;s{const r=e[t],a=r.getAttribute("data-swiper-slide-index");a&&r.setAttribute("data-swiper-slide-index",parseInt(a,10)+i),s[parseInt(t,10)+i]=r})),t.virtual.cache=s}c(!0),t.slideTo(r,0)},removeSlide:function(e){if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let r=e.length-1;r>=0;r-=1)t.params.virtual.cache&&(delete t.virtual.cache[e[r]],Object.keys(t.virtual.cache).forEach((s=>{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e[r],1),e[r]{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e,1),e= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +export { Virtual as default }; diff --git a/node/node_modules/swiper/modules/virtual.scss b/node/node_modules/swiper/modules/virtual.scss new file mode 100644 index 0000000000000000000000000000000000000000..824cc1e3c5d08c1357b601ba2c243e6ee71596b4 --- /dev/null +++ b/node/node_modules/swiper/modules/virtual.scss @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/node/node_modules/swiper/modules/zoom-element.css b/node/node_modules/swiper/modules/zoom-element.css new file mode 100644 index 0000000000000000000000000000000000000000..f81a92badb10787ba142596acda1f2799dab61b2 --- /dev/null +++ b/node/node_modules/swiper/modules/zoom-element.css @@ -0,0 +1,5 @@ +/* Zoom container styles start *//* Zoom container styles end */ +::slotted(.swiper-slide-zoomed) { + cursor: move; + touch-action: none; +} diff --git a/node/node_modules/swiper/modules/zoom-element.min.css b/node/node_modules/swiper/modules/zoom-element.min.css new file mode 100644 index 0000000000000000000000000000000000000000..17d073f83531493c9d6187627013b670d94e8dad --- /dev/null +++ b/node/node_modules/swiper/modules/zoom-element.min.css @@ -0,0 +1 @@ +::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/zoom.css b/node/node_modules/swiper/modules/zoom.css new file mode 100644 index 0000000000000000000000000000000000000000..40f5b10b9f5124e430d92ae59a81db34537a057d --- /dev/null +++ b/node/node_modules/swiper/modules/zoom.css @@ -0,0 +1,21 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/node/node_modules/swiper/modules/zoom.less b/node/node_modules/swiper/modules/zoom.less new file mode 100644 index 0000000000000000000000000000000000000000..d226ae9399baa199fe2bb6d6f439d17f31609bd8 --- /dev/null +++ b/node/node_modules/swiper/modules/zoom.less @@ -0,0 +1,23 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/node/node_modules/swiper/modules/zoom.min.css b/node/node_modules/swiper/modules/zoom.min.css new file mode 100644 index 0000000000000000000000000000000000000000..e55cd9af02b852bd68decdc85f16359c271e314d --- /dev/null +++ b/node/node_modules/swiper/modules/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/zoom.min.mjs b/node/node_modules/swiper/modules/zoom.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..57b40c7817fe71697a81422cacae883a1a2c3a84 --- /dev/null +++ b/node/node_modules/swiper/modules/zoom.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren,a as elementParents,b as elementOffset,j as getTranslate}from"../shared/utils.min.mjs";function Zoom(e){let{swiper:t,extendParams:i,on:a,emit:r}=e;const s=getWindow();i({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let o,n,l=1,m=!1;const c=[],d={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},u={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},p={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let g=1;function h(){if(c.length<2)return 1;const e=c[0].pageX,t=c[0].pageY,i=c[1].pageX,a=c[1].pageY;return Math.sqrt((i-e)**2+(a-t)**2)}function E(){const e=t.params.zoom,i=d.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&d.imageEl&&d.imageEl.naturalWidth){const e=d.imageEl.naturalWidth/d.imageEl.offsetWidth;return Math.min(e,i)}return i}function v(e){const i=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(i)||t.slides.filter((t=>t.contains(e.target))).length>0}function f(e){if("mouse"===e.pointerType&&c.splice(0,c.length),!v(e))return;const i=t.params.zoom;if(o=!1,n=!1,c.push(e),!(c.length<2)){if(o=!0,d.scaleStart=h(),!d.slideEl){d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),d.slideEl||(d.slideEl=t.slides[t.activeIndex]);let a=d.slideEl.querySelector(`.${i.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=a,d.imageWrapEl=a?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0,!d.imageWrapEl)return void(d.imageEl=void 0);d.maxRatio=E()}if(d.imageEl){const[e,t]=function(){if(c.length<2)return{x:null,y:null};const e=d.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-e.x-s.scrollX)/l,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-e.y-s.scrollY)/l]}();d.originX=e,d.originY=t,d.imageEl.style.transitionDuration="0ms"}m=!0}}function x(e){if(!v(e))return;const i=t.params.zoom,a=t.zoom,r=c.findIndex((t=>t.pointerId===e.pointerId));r>=0&&(c[r]=e),c.length<2||(n=!0,d.scaleMove=h(),d.imageEl&&(a.scale=d.scaleMove/d.scaleStart*l,a.scale>d.maxRatio&&(a.scale=d.maxRatio-1+(a.scale-d.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));r>=0&&c.splice(r,1),o&&n&&(o=!1,n=!1,d.imageEl&&(a.scale=Math.max(Math.min(a.scale,d.maxRatio),i.minRatio),d.imageEl.style.transitionDuration=`${t.params.speed}ms`,d.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,l=a.scale,m=!1,a.scale>1&&d.slideEl?d.slideEl.classList.add(`${i.zoomedSlideClass}`):a.scale<=1&&d.slideEl&&d.slideEl.classList.remove(`${i.zoomedSlideClass}`),1===a.scale&&(d.originX=0,d.originY=0,d.slideEl=void 0)))}function Y(e){if(!v(e)||!function(e){const i=`.${t.params.zoom.containerClass}`;return!!e.target.matches(i)||[...t.hostEl.querySelectorAll(i)].filter((t=>t.contains(e.target))).length>0}(e))return;const i=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!d.slideEl)return;u.isMoved||(u.width=d.imageEl.offsetWidth,u.height=d.imageEl.offsetHeight,u.startX=getTranslate(d.imageWrapEl,"x")||0,u.startY=getTranslate(d.imageWrapEl,"y")||0,d.slideWidth=d.slideEl.offsetWidth,d.slideHeight=d.slideEl.offsetHeight,d.imageWrapEl.style.transitionDuration="0ms");const a=u.width*i.scale,r=u.height*i.scale;if(a0?c[0].pageX:e.pageX,u.touchesCurrent.y=c.length>0?c[0].pageY:e.pageY;if(Math.max(Math.abs(u.touchesCurrent.x-u.touchesStart.x),Math.abs(u.touchesCurrent.y-u.touchesStart.y))>5&&(t.allowClick=!1),!u.isMoved&&!m){if(t.isHorizontal()&&(Math.floor(u.minX)===Math.floor(u.startX)&&u.touchesCurrent.xu.touchesStart.x))return void(u.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(u.minY)===Math.floor(u.startY)&&u.touchesCurrent.yu.touchesStart.y))return void(u.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),u.isMoved=!0;const s=(i.scale-l)/(d.maxRatio-t.params.zoom.minRatio),{originX:o,originY:n}=d;u.currentX=u.touchesCurrent.x-u.touchesStart.x+u.startX+s*(u.width-2*o),u.currentY=u.touchesCurrent.y-u.touchesStart.y+u.startY+s*(u.height-2*n),u.currentXu.maxX&&(u.currentX=u.maxX-1+(u.currentX-u.maxX+1)**.8),u.currentYu.maxY&&(u.currentY=u.maxY-1+(u.currentY-u.maxY+1)**.8),p.prevPositionX||(p.prevPositionX=u.touchesCurrent.x),p.prevPositionY||(p.prevPositionY=u.touchesCurrent.y),p.prevTime||(p.prevTime=Date.now()),p.x=(u.touchesCurrent.x-p.prevPositionX)/(Date.now()-p.prevTime)/2,p.y=(u.touchesCurrent.y-p.prevPositionY)/(Date.now()-p.prevTime)/2,Math.abs(u.touchesCurrent.x-p.prevPositionX)<2&&(p.x=0),Math.abs(u.touchesCurrent.y-p.prevPositionY)<2&&(p.y=0),p.prevPositionX=u.touchesCurrent.x,p.prevPositionY=u.touchesCurrent.y,p.prevTime=Date.now(),d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}function y(){const e=t.zoom;d.slideEl&&t.activeIndex!==t.slides.indexOf(d.slideEl)&&(d.imageEl&&(d.imageEl.style.transform="translate3d(0,0,0) scale(1)"),d.imageWrapEl&&(d.imageWrapEl.style.transform="translate3d(0,0,0)"),d.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,l=1,d.slideEl=void 0,d.imageEl=void 0,d.imageWrapEl=void 0,d.originX=0,d.originY=0)}function z(e){const i=t.zoom,a=t.params.zoom;if(!d.slideEl){e&&e.target&&(d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),d.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex]);let i=d.slideEl.querySelector(`.${a.containerClass}`);i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=i,d.imageWrapEl=i?elementParents(d.imageEl,`.${a.containerClass}`)[0]:void 0}if(!d.imageEl||!d.imageWrapEl)return;let r,o,n,m,c,p,g,h,v,f,x,X,Y,y,z,C,M,w;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),d.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===u.touchesStart.x&&e?(r=e.pageX,o=e.pageY):(r=u.touchesStart.x,o=u.touchesStart.y);const W="number"==typeof e?e:null;1===l&&W&&(r=void 0,o=void 0);const b=E();i.scale=W||b,l=W||b,!e||1===l&&W?(g=0,h=0):(M=d.slideEl.offsetWidth,w=d.slideEl.offsetHeight,n=elementOffset(d.slideEl).left+s.scrollX,m=elementOffset(d.slideEl).top+s.scrollY,c=n+M/2-r,p=m+w/2-o,v=d.imageEl.offsetWidth,f=d.imageEl.offsetHeight,x=v*i.scale,X=f*i.scale,Y=Math.min(M/2-x/2,0),y=Math.min(w/2-X/2,0),z=-Y,C=-y,g=c*i.scale,h=p*i.scale,gz&&(g=z),hC&&(h=C)),W&&1===i.scale&&(d.originX=0,d.originY=0),d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform=`translate3d(${g}px, ${h}px,0)`,d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`}function C(){const e=t.zoom,i=t.params.zoom;if(!d.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex];let e=d.slideEl.querySelector(`.${i.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=e,d.imageWrapEl=e?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0}d.imageEl&&d.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,l=1,d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform="translate3d(0,0,0)",d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform="translate3d(0,0,0) scale(1)",d.slideEl.classList.remove(`${i.zoomedSlideClass}`),d.slideEl=void 0,d.originX=0,d.originY=0)}function M(e){const i=t.zoom;i.scale&&1!==i.scale?C():z(e)}function w(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function W(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:i,activeListenerWithCapture:a}=w();t.wrapperEl.addEventListener("pointerdown",f,i),t.wrapperEl.addEventListener("pointermove",x,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,X,i)})),t.wrapperEl.addEventListener("pointermove",Y,a)}function b(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:i,activeListenerWithCapture:a}=w();t.wrapperEl.removeEventListener("pointerdown",f,i),t.wrapperEl.removeEventListener("pointermove",x,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,X,i)})),t.wrapperEl.removeEventListener("pointermove",Y,a)}Object.defineProperty(t.zoom,"scale",{get:()=>g,set(e){if(g!==e){const t=d.imageEl,i=d.slideEl;r("zoomChange",e,t,i)}g=e}}),a("init",(()=>{t.params.zoom.enabled&&W()})),a("destroy",(()=>{b()})),a("touchStart",((e,i)=>{t.zoom.enabled&&function(e){const i=t.device;if(!d.imageEl)return;if(u.isTouched)return;i.android&&e.cancelable&&e.preventDefault(),u.isTouched=!0;const a=c.length>0?c[0]:e;u.touchesStart.x=a.pageX,u.touchesStart.y=a.pageY}(i)})),a("touchEnd",((e,i)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!u.isMoved)return u.isTouched=!1,void(u.isMoved=!1);u.isTouched=!1,u.isMoved=!1;let i=300,a=300;const r=p.x*i,s=u.currentX+r,o=p.y*a,n=u.currentY+o;0!==p.x&&(i=Math.abs((s-u.currentX)/p.x)),0!==p.y&&(a=Math.abs((n-u.currentY)/p.y));const l=Math.max(i,a);u.currentX=s,u.currentY=n;const m=u.width*e.scale,c=u.height*e.scale;u.minX=Math.min(d.slideWidth/2-m/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-c/2,0),u.maxY=-u.minY,u.currentX=Math.max(Math.min(u.currentX,u.maxX),u.minX),u.currentY=Math.max(Math.min(u.currentY,u.maxY),u.minY),d.imageWrapEl.style.transitionDuration=`${l}ms`,d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}()})),a("doubleTap",((e,i)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&M(i)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&y()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&y()})),Object.assign(t.zoom,{enable:W,disable:b,in:z,out:C,toggle:M})}export{Zoom as default}; +//# sourceMappingURL=zoom.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/modules/zoom.min.mjs.map b/node/node_modules/swiper/modules/zoom.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..9ffcfe031313a3cb3d1501eaf7b23827e765459e --- /dev/null +++ b/node/node_modules/swiper/modules/zoom.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"zoom.mjs.mjs","names":["getWindow","elementChildren","elementParents","elementOffset","getTranslate","Zoom","_ref","swiper","extendParams","on","emit","window","zoom","enabled","limitToOriginalSize","maxRatio","minRatio","toggle","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","undefined","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","width","height","startX","startY","touchesStart","touchesCurrent","velocity","x","y","prevPositionX","prevPositionY","prevTime","scale","getDistanceBetweenTouches","length","x1","pageX","y1","pageY","x2","y2","Math","sqrt","getMaxRatio","params","getAttribute","naturalWidth","imageMaxRatio","offsetWidth","min","eventWithinSlide","e","slideSelector","isElement","slideClass","target","matches","slides","filter","contains","onGestureStart","pointerType","splice","push","scaleStart","closest","activeIndex","querySelector","querySelectorAll","box","getBoundingClientRect","scrollX","scrollY","getScaleOrigin","style","transitionDuration","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","transform","onGestureEnd","type","max","speed","classList","add","remove","onTouchMove","selector","hostEl","containerEl","eventWithinZoomContainer","offsetHeight","scaledWidth","scaledHeight","abs","allowClick","isHorizontal","floor","cancelable","preventDefault","stopPropagation","scaleRatio","Date","now","onTransitionEnd","indexOf","zoomIn","virtual","slidesEl","slideActiveClass","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","left","top","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","enable","addEventListener","forEach","eventName","disable","removeEventListener","Object","defineProperty","get","set","value","_s","device","android","event","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","assign","in","out"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/modules/zoom.mjs b/node/node_modules/swiper/modules/zoom.mjs new file mode 100644 index 0000000000000000000000000000000000000000..dd9939dd2b791e72586e6d7967b4b198098de750 --- /dev/null +++ b/node/node_modules/swiper/modules/zoom.mjs @@ -0,0 +1,602 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs'; + +function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +export { Zoom as default }; diff --git a/node/node_modules/swiper/modules/zoom.scss b/node/node_modules/swiper/modules/zoom.scss new file mode 100644 index 0000000000000000000000000000000000000000..1f564496bc9ca0865c39b8928b1810e066be1a2d --- /dev/null +++ b/node/node_modules/swiper/modules/zoom.scss @@ -0,0 +1,21 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/node/node_modules/swiper/package.json b/node/node_modules/swiper/package.json new file mode 100644 index 0000000000000000000000000000000000000000..737fce990b20983004be1546031c3661eadb099f --- /dev/null +++ b/node/node_modules/swiper/package.json @@ -0,0 +1,212 @@ +{ + "name": "swiper", + "version": "11.0.7", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "typings": "swiper.d.ts", + "type": "module", + "main": "./swiper.mjs", + "module": "./swiper.mjs", + "exports": { + ".": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./effect-utils": { + "types": "./swiper-effect-utils.d.ts", + "default": "./swiper-effect-utils.mjs" + }, + "./core": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./bundle": { + "types": "./swiper.d.ts", + "default": "./swiper-bundle.mjs" + }, + "./css": "./swiper.css", + "./css/bundle": "./swiper-bundle.css", + "./swiper-bundle.css": "./swiper-bundle.css", + "./css/a11y": "./modules/a11y.css", + "./css/autoplay": "./modules/autoplay.css", + "./css/controller": "./modules/controller.css", + "./css/effect-coverflow": "./modules/effect-coverflow.css", + "./css/effect-cube": "./modules/effect-cube.css", + "./css/effect-fade": "./modules/effect-fade.css", + "./css/effect-flip": "./modules/effect-flip.css", + "./css/effect-creative": "./modules/effect-creative.css", + "./css/effect-cards": "./modules/effect-cards.css", + "./css/free-mode": "./modules/free-mode.css", + "./css/grid": "./modules/grid.css", + "./css/hash-navigation": "./modules/hash-navigation.css", + "./css/history": "./modules/history.css", + "./css/keyboard": "./modules/keyboard.css", + "./css/manipulation": "./modules/manipulation.css", + "./css/mousewheel": "./modules/mousewheel.css", + "./css/navigation": "./modules/navigation.css", + "./css/pagination": "./modules/pagination.css", + "./css/parallax": "./modules/parallax.css", + "./css/scrollbar": "./modules/scrollbar.css", + "./css/thumbs": "./modules/thumbs.css", + "./css/virtual": "./modules/virtual.css", + "./css/zoom": "./modules/zoom.css", + "./less": "./swiper.less", + "./less/a11y": "./modules/a11y.less", + "./less/autoplay": "./modules/autoplay.less", + "./less/controller": "./modules/controller.less", + "./less/effect-coverflow": "./modules/effect-coverflow.less", + "./less/effect-cube": "./modules/effect-cube.less", + "./less/effect-fade": "./modules/effect-fade.less", + "./less/effect-flip": "./modules/effect-flip.less", + "./less/effect-creative": "./modules/effect-creative.less", + "./less/effect-cards": "./modules/effect-cards.less", + "./less/free-mode": "./modules/free-mode.less", + "./less/grid": "./modules/grid.less", + "./less/hash-navigation": "./modules/hash-navigation.less", + "./less/history": "./modules/history.less", + "./less/keyboard": "./modules/keyboard.less", + "./less/manipulation": "./modules/manipulation.less", + "./less/mousewheel": "./modules/mousewheel.less", + "./less/navigation": "./modules/navigation.less", + "./less/pagination": "./modules/pagination.less", + "./less/parallax": "./modules/parallax.less", + "./less/scrollbar": "./modules/scrollbar.less", + "./less/thumbs": "./modules/thumbs.less", + "./less/virtual": "./modules/virtual.less", + "./less/zoom": "./modules/zoom.less", + "./scss": "./swiper.scss", + "./scss/a11y": "./modules/a11y.scss", + "./scss/autoplay": "./modules/autoplay.scss", + "./scss/controller": "./modules/controller.scss", + "./scss/effect-coverflow": "./modules/effect-coverflow.scss", + "./scss/effect-cube": "./modules/effect-cube.scss", + "./scss/effect-fade": "./modules/effect-fade.scss", + "./scss/effect-flip": "./modules/effect-flip.scss", + "./scss/effect-creative": "./modules/effect-creative.scss", + "./scss/effect-cards": "./modules/effect-cards.scss", + "./scss/free-mode": "./modules/free-mode.scss", + "./scss/grid": "./modules/grid.scss", + "./scss/hash-navigation": "./modules/hash-navigation.scss", + "./scss/history": "./modules/history.scss", + "./scss/keyboard": "./modules/keyboard.scss", + "./scss/manipulation": "./modules/manipulation.scss", + "./scss/mousewheel": "./modules/mousewheel.scss", + "./scss/navigation": "./modules/navigation.scss", + "./scss/pagination": "./modules/pagination.scss", + "./scss/parallax": "./modules/parallax.scss", + "./scss/scrollbar": "./modules/scrollbar.scss", + "./scss/thumbs": "./modules/thumbs.scss", + "./scss/virtual": "./modules/virtual.scss", + "./scss/zoom": "./modules/zoom.scss", + "./element": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element.mjs" + }, + "./element/bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element-bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element/css/a11y": "./modules/a11y-element.css", + "./element/css/autoplay": "./modules/autoplay-element.css", + "./element/css/controller": "./modules/controller-element.css", + "./element/css/effect-coverflow": "./modules/effect-coverflow-element.css", + "./element/css/effect-cube": "./modules/effect-cube-element.css", + "./element/css/effect-fade": "./modules/effect-fade-element.css", + "./element/css/effect-flip": "./modules/effect-flip-element.css", + "./element/css/effect-creative": "./modules/effect-creative-element.css", + "./element/css/effect-cards": "./modules/effect-cards-element.css", + "./element/css/free-mode": "./modules/free-mode-element.css", + "./element/css/grid": "./modules/grid-element.css", + "./element/css/hash-navigation": "./modules/hash-navigation-element.css", + "./element/css/history": "./modules/history-element.css", + "./element/css/keyboard": "./modules/keyboard-element.css", + "./element/css/manipulation": "./modules/manipulation-element.css", + "./element/css/mousewheel": "./modules/mousewheel-element.css", + "./element/css/navigation": "./modules/navigation-element.css", + "./element/css/pagination": "./modules/pagination-element.css", + "./element/css/parallax": "./modules/parallax-element.css", + "./element/css/scrollbar": "./modules/scrollbar-element.css", + "./element/css/thumbs": "./modules/thumbs-element.css", + "./element/css/virtual": "./modules/virtual-element.css", + "./element/css/zoom": "./modules/zoom-element.css", + "./react": { + "types": "./swiper-react.d.ts", + "default": "./swiper-react.mjs" + }, + "./vue": { + "types": "./swiper-vue.d.ts", + "default": "./swiper-vue.mjs" + }, + "./modules": { + "types": "./types/modules/index.d.ts", + "default": "./modules/index.mjs" + }, + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "modules": [ + "./types/modules/index.d.ts" + ], + "element": [ + "./swiper-element.d.ts" + ], + "element/bundle": [ + "./swiper-element.d.ts" + ], + "react": [ + "./swiper-react.d.ts" + ], + "vue": [ + "./swiper-vue.d.ts" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "vue", + "slideshow" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + }, + "releaseDate": "February 27, 2024" +} diff --git a/node/node_modules/swiper/shared/classes-to-selector.min.mjs b/node/node_modules/swiper/shared/classes-to-selector.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..f177f5b38fd761a3bde848f01ce6e3bb0762699f --- /dev/null +++ b/node/node_modules/swiper/shared/classes-to-selector.min.mjs @@ -0,0 +1,2 @@ +function classesToSelector(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}export{classesToSelector as c}; +//# sourceMappingURL=classes-to-selector.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/classes-to-selector.min.mjs.map b/node/node_modules/swiper/shared/classes-to-selector.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..d817369abc3ad857b1e659d47a050bc0abd84573 --- /dev/null +++ b/node/node_modules/swiper/shared/classes-to-selector.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"classes-to-selector.mjs.mjs","names":["classesToSelector","classes","trim","replace"],"sources":["0"],"mappings":"AAAA,SAASA,kBAAkBC,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOC,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,QAESH"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/classes-to-selector.mjs b/node/node_modules/swiper/shared/classes-to-selector.mjs new file mode 100644 index 0000000000000000000000000000000000000000..dd142d55270f6a1f2efc836ebdb9fca2817634bf --- /dev/null +++ b/node/node_modules/swiper/shared/classes-to-selector.mjs @@ -0,0 +1,9 @@ +function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +export { classesToSelector as c }; diff --git a/node/node_modules/swiper/shared/create-element-if-not-defined.min.mjs b/node/node_modules/swiper/shared/create-element-if-not-defined.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..f92d40d0864adb66c823cc832faed55f91667e88 --- /dev/null +++ b/node/node_modules/swiper/shared/create-element-if-not-defined.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren,c as createElement}from"./utils.min.mjs";function createElementIfNotDefined(e,t,n,a){return e.params.createElements&&Object.keys(a).forEach((l=>{if(!n[l]&&!0===n.auto){let r=elementChildren(e.el,`.${a[l]}`)[0];r||(r=createElement("div",a[l]),r.className=a[l],e.el.append(r)),n[l]=r,t[l]=r}})),n}export{createElementIfNotDefined as c}; +//# sourceMappingURL=create-element-if-not-defined.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/create-element-if-not-defined.min.mjs.map b/node/node_modules/swiper/shared/create-element-if-not-defined.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..85a319bd142dc611feb69b1184720370840bc42a --- /dev/null +++ b/node/node_modules/swiper/shared/create-element-if-not-defined.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-element-if-not-defined.mjs.mjs","names":["elementChildren","createElement","createElementIfNotDefined","swiper","originalParams","params","checkProps","createElements","Object","keys","forEach","key","auto","element","el","className","append"],"sources":["0"],"mappings":"YAAcA,qBAAsBC,kBAAqB,kBAEzD,SAASC,0BAA0BC,EAAQC,EAAgBC,EAAQC,GAejE,OAdIH,EAAOE,OAAOE,gBAChBC,OAAOC,KAAKH,GAAYI,SAAQC,IAC9B,IAAKN,EAAOM,KAAwB,IAAhBN,EAAOO,KAAe,CACxC,IAAIC,EAAUb,gBAAgBG,EAAOW,GAAI,IAAIR,EAAWK,MAAQ,GAC3DE,IACHA,EAAUZ,cAAc,MAAOK,EAAWK,IAC1CE,EAAQE,UAAYT,EAAWK,GAC/BR,EAAOW,GAAGE,OAAOH,IAEnBR,EAAOM,GAAOE,EACdT,EAAeO,GAAOE,CACxB,KAGGR,CACT,QAESH"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/create-element-if-not-defined.mjs b/node/node_modules/swiper/shared/create-element-if-not-defined.mjs new file mode 100644 index 0000000000000000000000000000000000000000..10b283f39bf8366b03a475d2338f0cee07e82164 --- /dev/null +++ b/node/node_modules/swiper/shared/create-element-if-not-defined.mjs @@ -0,0 +1,21 @@ +import { e as elementChildren, c as createElement } from './utils.mjs'; + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; +} + +export { createElementIfNotDefined as c }; diff --git a/node/node_modules/swiper/shared/create-shadow.min.mjs b/node/node_modules/swiper/shared/create-shadow.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..ee6b7a74a865bd500f8bb27c0f7366f2a41d3828 --- /dev/null +++ b/node/node_modules/swiper/shared/create-shadow.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl,c as createElement}from"./utils.min.mjs";function createShadow(e,t,r){const s=`swiper-slide-shadow${r?`-${r}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=getSlideTransformEl(t);let i=a.querySelector(`.${s.split(" ").join(".")}`);return i||(i=createElement("div",s.split(" ")),a.append(i)),i}export{createShadow as c}; +//# sourceMappingURL=create-shadow.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/create-shadow.min.mjs.map b/node/node_modules/swiper/shared/create-shadow.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..45055562b6ecfc5b4d294a660695e6dd7c8c85b4 --- /dev/null +++ b/node/node_modules/swiper/shared/create-shadow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-shadow.mjs.mjs","names":["getSlideTransformEl","createElement","createShadow","suffix","slideEl","side","shadowClass","shadowContainer","shadowEl","querySelector","split","join","append"],"sources":["0"],"mappings":"YAAcA,yBAA0BC,kBAAqB,kBAE7D,SAASC,aAAaC,EAAQC,EAASC,GACrC,MAAMC,EAAc,sBAAsBD,EAAO,IAAIA,IAAS,KAAKF,EAAS,wBAAwBA,IAAW,KACzGI,EAAkBP,oBAAoBI,GAC5C,IAAII,EAAWD,EAAgBE,cAAc,IAAIH,EAAYI,MAAM,KAAKC,KAAK,QAK7E,OAJKH,IACHA,EAAWP,cAAc,MAAOK,EAAYI,MAAM,MAClDH,EAAgBK,OAAOJ,IAElBA,CACT,QAESN"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/create-shadow.mjs b/node/node_modules/swiper/shared/create-shadow.mjs new file mode 100644 index 0000000000000000000000000000000000000000..2767e701d3a905089bcd6bb19cfa5fb8d95b5e48 --- /dev/null +++ b/node/node_modules/swiper/shared/create-shadow.mjs @@ -0,0 +1,14 @@ +import { g as getSlideTransformEl, c as createElement } from './utils.mjs'; + +function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; +} + +export { createShadow as c }; diff --git a/node/node_modules/swiper/shared/effect-init.min.mjs b/node/node_modules/swiper/shared/effect-init.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..feed86e8c753f71a96f3ac8ea0e7c81e6ca829f1 --- /dev/null +++ b/node/node_modules/swiper/shared/effect-init.min.mjs @@ -0,0 +1,2 @@ +function effectInit(e){const{effect:s,swiper:a,on:t,setTranslate:r,setTransition:i,overwriteParams:n,perspective:o,recreateShadows:f,getEffectParams:l}=e;let c;t("beforeInit",(()=>{if(a.params.effect!==s)return;a.classNames.push(`${a.params.containerModifierClass}${s}`),o&&o()&&a.classNames.push(`${a.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(a.params,e),Object.assign(a.originalParams,e)})),t("setTranslate",(()=>{a.params.effect===s&&r()})),t("setTransition",((e,t)=>{a.params.effect===s&&i(t)})),t("transitionEnd",(()=>{if(a.params.effect===s&&f){if(!l||!l().slideShadows)return;a.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),f()}})),t("virtualUpdate",(()=>{a.params.effect===s&&(a.slides.length||(c=!0),requestAnimationFrame((()=>{c&&a.slides&&a.slides.length&&(r(),c=!1)})))}))}export{effectInit as e}; +//# sourceMappingURL=effect-init.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/effect-init.min.mjs.map b/node/node_modules/swiper/shared/effect-init.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..7250e5b954735552229d72e8f7258b44fa7c7731 --- /dev/null +++ b/node/node_modules/swiper/shared/effect-init.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-init.mjs.mjs","names":["effectInit","params","effect","swiper","on","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","Object","assign","originalParams","_s","duration","slideShadows","slides","forEach","slideEl","querySelectorAll","shadowEl","remove","length","requestAnimationFrame"],"sources":["0"],"mappings":"AAAA,SAASA,WAAWC,GAClB,MAAMC,OACJA,EAAMC,OACNA,EAAMC,GACNA,EAAEC,aACFA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACET,EA+BJ,IAAIU,EA9BJP,EAAG,cAAc,KACf,GAAID,EAAOF,OAAOC,SAAWA,EAAQ,OACrCC,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,yBAAyBZ,KAC7DM,GAAeA,KACjBL,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,4BAE1C,MAAMC,EAAwBR,EAAkBA,IAAoB,CAAC,EACrES,OAAOC,OAAOd,EAAOF,OAAQc,GAC7BC,OAAOC,OAAOd,EAAOe,eAAgBH,EAAsB,IAE7DX,EAAG,gBAAgB,KACbD,EAAOF,OAAOC,SAAWA,GAC7BG,GAAc,IAEhBD,EAAG,iBAAiB,CAACe,EAAIC,KACnBjB,EAAOF,OAAOC,SAAWA,GAC7BI,EAAcc,EAAS,IAEzBhB,EAAG,iBAAiB,KAClB,GAAID,EAAOF,OAAOC,SAAWA,GACzBO,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBW,aAAc,OAEzDlB,EAAOmB,OAAOC,SAAQC,IACpBA,EAAQC,iBAAiB,gHAAgHF,SAAQG,GAAYA,EAASC,UAAS,IAGjLlB,GACF,KAGFL,EAAG,iBAAiB,KACdD,EAAOF,OAAOC,SAAWA,IACxBC,EAAOmB,OAAOM,SACjBjB,GAAyB,GAE3BkB,uBAAsB,KAChBlB,GAA0BR,EAAOmB,QAAUnB,EAAOmB,OAAOM,SAC3DvB,IACAM,GAAyB,EAC3B,IACA,GAEN,QAESX"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/effect-init.mjs b/node/node_modules/swiper/shared/effect-init.mjs new file mode 100644 index 0000000000000000000000000000000000000000..d41868789209885d133855fb50751e7b75f6b879 --- /dev/null +++ b/node/node_modules/swiper/shared/effect-init.mjs @@ -0,0 +1,58 @@ +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +export { effectInit as e }; diff --git a/node/node_modules/swiper/shared/effect-target.min.mjs b/node/node_modules/swiper/shared/effect-target.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..9829053f7fbbbccbdfa0f0de507899a3bf9d4c46 --- /dev/null +++ b/node/node_modules/swiper/shared/effect-target.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl}from"./utils.min.mjs";function effectTarget(e,i){const t=getSlideTransformEl(i);return t!==i&&(t.style.backfaceVisibility="hidden",t.style["-webkit-backface-visibility"]="hidden"),t}export{effectTarget as e}; +//# sourceMappingURL=effect-target.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/effect-target.min.mjs.map b/node/node_modules/swiper/shared/effect-target.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..9d0c540500746d1fa1d484594099da2aa82fd9cf --- /dev/null +++ b/node/node_modules/swiper/shared/effect-target.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-target.mjs.mjs","names":["getSlideTransformEl","effectTarget","effectParams","slideEl","transformEl","style","backfaceVisibility"],"sources":["0"],"mappings":"YAAcA,wBAA2B,kBAEzC,SAASC,aAAaC,EAAcC,GAClC,MAAMC,EAAcJ,oBAAoBG,GAKxC,OAJIC,IAAgBD,IAClBC,EAAYC,MAAMC,mBAAqB,SACvCF,EAAYC,MAAM,+BAAiC,UAE9CD,CACT,QAESH"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/effect-target.mjs b/node/node_modules/swiper/shared/effect-target.mjs new file mode 100644 index 0000000000000000000000000000000000000000..b1a7b3badf30d7a90b3dff997c7e9b8aba5ecc5b --- /dev/null +++ b/node/node_modules/swiper/shared/effect-target.mjs @@ -0,0 +1,12 @@ +import { g as getSlideTransformEl } from './utils.mjs'; + +function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; +} + +export { effectTarget as e }; diff --git a/node/node_modules/swiper/shared/effect-virtual-transition-end.min.mjs b/node/node_modules/swiper/shared/effect-virtual-transition-end.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..6071178fd7b590c3750d22105623c7604b138e77 --- /dev/null +++ b/node/node_modules/swiper/shared/effect-virtual-transition-end.min.mjs @@ -0,0 +1,2 @@ +import{k as elementTransitionEnd}from"./utils.min.mjs";function effectVirtualTransitionEnd(e){let{swiper:t,duration:n,transformElements:r,allSlides:i}=e;const{activeIndex:a}=t;if(t.params.virtualTranslate&&0!==n){let e,n=!1;e=i?r:r.filter((e=>{const n=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(n)===a})),e.forEach((e=>{elementTransitionEnd(e,(()=>{if(n)return;if(!t||t.destroyed)return;n=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}export{effectVirtualTransitionEnd as e}; +//# sourceMappingURL=effect-virtual-transition-end.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/effect-virtual-transition-end.min.mjs.map b/node/node_modules/swiper/shared/effect-virtual-transition-end.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..da4e095c8eb7e4daa70c1345dead42d05d2de836 --- /dev/null +++ b/node/node_modules/swiper/shared/effect-virtual-transition-end.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-virtual-transition-end.mjs.mjs","names":["elementTransitionEnd","effectVirtualTransitionEnd","_ref","swiper","duration","transformElements","allSlides","activeIndex","params","virtualTranslate","transitionEndTarget","eventTriggered","filter","transformEl","el","classList","contains","parentElement","slides","slideEl","shadowRoot","parentNode","getSlide","getSlideIndex","forEach","destroyed","animating","evt","window","CustomEvent","bubbles","cancelable","wrapperEl","dispatchEvent"],"sources":["0"],"mappings":"YAAcA,yBAA4B,kBAE1C,SAASC,2BAA2BC,GAClC,IAAIC,OACFA,EAAMC,SACNA,EAAQC,kBACRA,EAAiBC,UACjBA,GACEJ,EACJ,MAAMK,YACJA,GACEJ,EASJ,GAAIA,EAAOK,OAAOC,kBAAiC,IAAbL,EAAgB,CACpD,IACIM,EADAC,GAAiB,EAGnBD,EADEJ,EACoBD,EAEAA,EAAkBO,QAAOC,IAC7C,MAAMC,EAAKD,EAAYE,UAAUC,SAAS,0BAf/BF,KACf,IAAKA,EAAGG,cAGN,OADcd,EAAOe,OAAON,QAAOO,GAAWA,EAAQC,YAAcD,EAAQC,aAAeN,EAAGO,aAAY,GAG5G,OAAOP,EAAGG,aAAa,EASmDK,CAAST,GAAeA,EAC9F,OAAOV,EAAOoB,cAAcT,KAAQP,CAAW,IAGnDG,EAAoBc,SAAQV,IAC1Bd,qBAAqBc,GAAI,KACvB,GAAIH,EAAgB,OACpB,IAAKR,GAAUA,EAAOsB,UAAW,OACjCd,GAAiB,EACjBR,EAAOuB,WAAY,EACnB,MAAMC,EAAM,IAAIC,OAAOC,YAAY,gBAAiB,CAClDC,SAAS,EACTC,YAAY,IAEd5B,EAAO6B,UAAUC,cAAcN,EAAI,GACnC,GAEN,CACF,QAES1B"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/effect-virtual-transition-end.mjs b/node/node_modules/swiper/shared/effect-virtual-transition-end.mjs new file mode 100644 index 0000000000000000000000000000000000000000..540615e1006dce5fcda7b7855862ce7403e01d9a --- /dev/null +++ b/node/node_modules/swiper/shared/effect-virtual-transition-end.mjs @@ -0,0 +1,48 @@ +import { k as elementTransitionEnd } from './utils.mjs'; + +function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } +} + +export { effectVirtualTransitionEnd as e }; diff --git a/node/node_modules/swiper/shared/get-element-params.min.mjs b/node/node_modules/swiper/shared/get-element-params.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..8a456d33105b96030f4aee900f6b044d19e9f1c3 --- /dev/null +++ b/node/node_modules/swiper/shared/get-element-params.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,i as isObject,c as attrToProp,p as paramsList}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";const formatValue=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let a;try{a=JSON.parse(e)}catch(t){a=e}return a}return e}},modulesParamsList=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function getParams(e,a,t){const r={},n={};extend(r,defaults);const i=[...paramsList,"on"],o=i.map((e=>e.replace(/_/,"")));i.forEach((a=>{a=a.replace("_",""),void 0!==e[a]&&(n[a]=e[a])}));const s=[...e.attributes];return"string"==typeof a&&void 0!==t&&s.push({name:a,value:isObject(t)?{...t}:t}),s.forEach((e=>{const a=modulesParamsList.filter((a=>0===e.name.indexOf(`${a}-`)))[0];if(a){const t=attrToProp(a),r=attrToProp(e.name.split(`${a}-`)[1]);void 0===n[t]&&(n[t]={}),!0===n[t]&&(n[t]={enabled:!0}),n[t][r]=formatValue(e.value)}else{const a=attrToProp(e.name);if(!o.includes(a))return;const t=formatValue(e.value);n[a]&&modulesParamsList.includes(e.name)&&!isObject(t)?(n[a].constructor!==Object&&(n[a]={}),n[a].enabled=!!t):n[a]=t}})),extend(r,n),r.navigation?r.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==r.navigation?r.navigation:{}}:!1===r.navigation&&delete r.navigation,r.scrollbar?r.scrollbar={el:".swiper-scrollbar",...!0!==r.scrollbar?r.scrollbar:{}}:!1===r.scrollbar&&delete r.scrollbar,r.pagination?r.pagination={el:".swiper-pagination",...!0!==r.pagination?r.pagination:{}}:!1===r.pagination&&delete r.pagination,{params:r,passedParams:n}}export{getParams as g}; +//# sourceMappingURL=get-element-params.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/get-element-params.min.mjs.map b/node/node_modules/swiper/shared/get-element-params.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..883b6990fed7f6c65a736fb16295903f844772c3 --- /dev/null +++ b/node/node_modules/swiper/shared/get-element-params.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"get-element-params.mjs.mjs","names":["extend","isObject","attrToProp","paramsList","defaults","formatValue","val","parseFloat","Number","includes","v","JSON","parse","err","modulesParamsList","getParams","element","propName","propValue","params","passedParams","localParamsList","allowedParams","map","key","replace","forEach","paramName","attrsList","attributes","push","name","value","attr","moduleParam","filter","mParam","indexOf","parentObjName","subObjName","split","enabled","constructor","Object","navigation","prevEl","nextEl","scrollbar","el","pagination"],"sources":["0"],"mappings":"YAAcA,YAAaC,cAAeC,gBAAiBC,eAAkB,sCAC/DC,aAAgB,wBAE9B,MAAMC,YAAcC,IAClB,GAAIC,WAAWD,KAASE,OAAOF,GAAM,OAAOE,OAAOF,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIG,SAAS,MAAQH,EAAIG,SAAS,MAAQH,EAAIG,SAAS,KAAM,CAC1F,IAAIC,EACJ,IACEA,EAAIC,KAAKC,MAAMN,EACjB,CAAE,MAAOO,GACPH,EAAIJ,CACN,CACA,OAAOI,CACT,CACA,OAAOJ,CAVkC,CAU/B,EAENQ,kBAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,UAAUC,EAASC,EAAUC,GACpC,MAAMC,EAAS,CAAC,EACVC,EAAe,CAAC,EACtBpB,OAAOmB,EAAQf,UACf,MAAMiB,EAAkB,IAAIlB,WAAY,MAClCmB,EAAgBD,EAAgBE,KAAIC,GAAOA,EAAIC,QAAQ,IAAK,MAGlEJ,EAAgBK,SAAQC,IACtBA,EAAYA,EAAUF,QAAQ,IAAK,SACD,IAAvBT,EAAQW,KACjBP,EAAaO,GAAaX,EAAQW,GACpC,IAIF,MAAMC,EAAY,IAAIZ,EAAQa,YA6D9B,MA5DwB,iBAAbZ,QAA8C,IAAdC,GACzCU,EAAUE,KAAK,CACbC,KAAMd,EACNe,MAAO/B,SAASiB,GAAa,IACxBA,GACDA,IAGRU,EAAUF,SAAQO,IAChB,MAAMC,EAAcpB,kBAAkBqB,QAAOC,GAA8C,IAApCH,EAAKF,KAAKM,QAAQ,GAAGD,QAAkB,GAC9F,GAAIF,EAAa,CACf,MAAMI,EAAgBpC,WAAWgC,GAC3BK,EAAarC,WAAW+B,EAAKF,KAAKS,MAAM,GAAGN,MAAgB,SACtB,IAAhCd,EAAakB,KAAgClB,EAAakB,GAAiB,CAAC,IACnD,IAAhClB,EAAakB,KACflB,EAAakB,GAAiB,CAC5BG,SAAS,IAGbrB,EAAakB,GAAeC,GAAclC,YAAY4B,EAAKD,MAC7D,KAAO,CACL,MAAMD,EAAO7B,WAAW+B,EAAKF,MAC7B,IAAKT,EAAcb,SAASsB,GAAO,OACnC,MAAMC,EAAQ3B,YAAY4B,EAAKD,OAC3BZ,EAAaW,IAASjB,kBAAkBL,SAASwB,EAAKF,QAAU9B,SAAS+B,IACvEZ,EAAaW,GAAMW,cAAgBC,SACrCvB,EAAaW,GAAQ,CAAC,GAExBX,EAAaW,GAAMU,UAAYT,GAE/BZ,EAAaW,GAAQC,CAEzB,KAEFhC,OAAOmB,EAAQC,GACXD,EAAOyB,WACTzB,EAAOyB,WAAa,CAClBC,OAAQ,sBACRC,OAAQ,0BACkB,IAAtB3B,EAAOyB,WAAsBzB,EAAOyB,WAAa,CAAC,IAEzB,IAAtBzB,EAAOyB,mBACTzB,EAAOyB,WAEZzB,EAAO4B,UACT5B,EAAO4B,UAAY,CACjBC,GAAI,wBACqB,IAArB7B,EAAO4B,UAAqB5B,EAAO4B,UAAY,CAAC,IAExB,IAArB5B,EAAO4B,kBACT5B,EAAO4B,UAEZ5B,EAAO8B,WACT9B,EAAO8B,WAAa,CAClBD,GAAI,yBACsB,IAAtB7B,EAAO8B,WAAsB9B,EAAO8B,WAAa,CAAC,IAEzB,IAAtB9B,EAAO8B,mBACT9B,EAAO8B,WAET,CACL9B,SACAC,eAEJ,QAESL"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/get-element-params.mjs b/node/node_modules/swiper/shared/get-element-params.mjs new file mode 100644 index 0000000000000000000000000000000000000000..eb00b03209f1985c89dcf0e9f75fc0013577dae9 --- /dev/null +++ b/node/node_modules/swiper/shared/get-element-params.mjs @@ -0,0 +1,106 @@ +import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; +}; +const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; +function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; +} + +export { getParams as g }; diff --git a/node/node_modules/swiper/shared/ssr-window.esm.min.mjs b/node/node_modules/swiper/shared/ssr-window.esm.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..4ee44c8e0fbd8d84a7468f937955c97771611046 --- /dev/null +++ b/node/node_modules/swiper/shared/ssr-window.esm.min.mjs @@ -0,0 +1,2 @@ +function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((n=>{void 0===e[n]?e[n]=t[n]:isObject(t[n])&&isObject(e[n])&&Object.keys(t[n]).length>0&&extend(e[n],t[n])}))}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}export{getWindow as a,getDocument as g}; +//# sourceMappingURL=ssr-window.esm.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/ssr-window.esm.min.mjs.map b/node/node_modules/swiper/shared/ssr-window.esm.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..2a3d64686e78a5656d656bb77b38cbb277db461d --- /dev/null +++ b/node/node_modules/swiper/shared/ssr-window.esm.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.esm.mjs.mjs","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window"],"sources":["0"],"mappings":"AAYA,SAASA,SAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,OAAOC,EAAQC,QACP,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,SAASM,EAAIG,KAAST,SAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACpJN,OAAOC,EAAOI,GAAMH,EAAIG,GAC1B,GAEJ,CACA,MAAME,YAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,cACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,OAAOqC,EAAK9B,aACL8B,CACT,CACA,MAAME,UAAY,CAChBD,SAAU/B,YACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,YACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,OAAO8D,EAAKvB,WACLuB,CACT,QAESD,eAAgBzB"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/ssr-window.esm.mjs b/node/node_modules/swiper/shared/ssr-window.esm.mjs new file mode 100644 index 0000000000000000000000000000000000000000..874f0e91d5dff4dca45c674f98e9f11b7086a60d --- /dev/null +++ b/node/node_modules/swiper/shared/ssr-window.esm.mjs @@ -0,0 +1,145 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} +function extend(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} +const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { getWindow as a, getDocument as g }; diff --git a/node/node_modules/swiper/shared/swiper-core.min.mjs b/node/node_modules/swiper/shared/swiper-core.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..22364ef107846c7c814143237cd4712991839e87 --- /dev/null +++ b/node/node_modules/swiper/shared/swiper-core.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";import{a as elementParents,o as elementStyle,e as elementChildren,s as setCSSProperty,f as elementOuterSize,p as elementNextAll,q as elementPrevAll,j as getTranslate,r as animateCSSModeScroll,n as nextTick,t as showWarning,c as createElement,d as now,u as extend,h as elementIndex,v as deleteProps}from"./utils.min.mjs";let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){let{userAgent:t}=void 0===e?{}:e;const s=getSupport(),i=getWindow(),r=i.navigator.platform,n=t||i.navigator.userAgent,a={ios:!1,android:!1},l=i.screen.width,o=i.screen.height,d=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const p=n.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!c&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),d&&!h&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}function getDevice(e){return void 0===e&&(e={}),deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow(),t=getDevice();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||r&&t.ios,isWebView:r}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize(e){let{swiper:t,on:s,emit:i}=e;const r=getWindow();let n=null,a=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},o=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{a=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),n.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",o))})),s("destroy",(()=>{a&&r.cancelAnimationFrame(a),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",o)}))}function Observer(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=[],a=getWindow(),l=function(e,s){void 0===s&&(s={});const i=new(a.MutationObserver||a.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=elementParents(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||0,10)-parseInt(elementStyle(i,"padding-right")||0,10),s=s-parseInt(elementStyle(i,"padding-top")||0,10)-parseInt(elementStyle(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:r,size:n,rtlTranslate:a,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=s.slidesOffsetBefore;"function"==typeof f&&(f=s.slidesOffsetBefore.call(e));let v=s.slidesOffsetAfter;"function"==typeof v&&(v=s.slidesOffsetAfter.call(e));const g=e.snapGrid.length,w=e.slidesGrid.length;let S=s.spaceBetween,T=-f,b=0,x=0;if(void 0===n)return;"string"==typeof S&&S.indexOf("%")>=0?S=parseFloat(S.replace("%",""))/100*n:"string"==typeof S&&(S=parseFloat(S)),e.virtualSize=-S,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after",""));const y=s.grid&&s.grid.rows>1&&e.grid;let E;y?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const C="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-n)}if(o&&s.loop){const t=m[0]+S;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${S}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=e-n;u=u.map((e=>e<=0?-f:e>t?t+v:e))}if(s.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(S||0)})),e-=S,e{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){setCSSProperty(i,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)}function updateSlidesOffset(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),m&&i[e].classList.add(s.slideFullyVisibleClass),o.progress=r?-c:c,o.originalProgress=r?-p:p}}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:l}=t;const o=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/a:(o+a-n)/a,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!o&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(o&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)}function updateSlidesClasses(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,l=e=>elementChildren(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else a?(o=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):o=t[r];o&&(o.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=elementNextAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=elementPrevAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&unlazy(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===n&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;eo?o:i&&ea?"next":n=o.length&&(v=o.length-1);const g=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?g>n.translate&&g>n.minTranslate():gn.translate&&g>n.maxTranslate()&&(p||0)!==a)return!1}let w;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(g),w=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return animateCSSModeScroll({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(g),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,w),0===t?n.transitionEnd(s,w):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,w))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r}function slideNext(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)}function slidePrev(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),h=n.map((e=>p(e)));let m=n[h.indexOf(u)-1];if(void 0===m&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(m=n[e>0?e-1:e])}let f=0;if(void 0!==m&&(f=a.indexOf(m),f<0&&(f=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)}function slideReset(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this;if(!i.destroyed)return i.slideTo(i.activeIndex,e,t,s)}function slideToClosest(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),l=a+Math.floor((n-a)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const a=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{elementChildren(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),l=t.slides.length%a!=0,o=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):b=n;const x="next"===i||!i,y="prev"===i||!i;let E=0,C=0;const M=w?Math.ceil(d.length/h.grid.rows):d.length,P=(w?d[n].column:n)+(m&&void 0===r?-f/2+.5:0);if(P=0;t-=1)d[t].column===e&&S.push(t)}else S.push(M-t-1)}}else if(P+f>M-g){C=Math.max(P-(M-2*g),v);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),y&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===h.slidesPerView?o.updateSlides():w&&(S.length>0&&y||T.length>0&&x)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),h.watchSlidesProgress&&o.updateSlidesOffset(),s)if(S.length>0&&y){if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b+Math.ceil(E),0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(r){const e=w?S.length/h.grid.rows:S.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(T.length>0&&x)if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b-C,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=w?T.length/h.grid.rows:T.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===h.slidesPerView&&s})}o.emit("loopFix")}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}function preventEdgeSwipe(e,t,s){const i=getWindow(),{params:r}=e,n=r.edgeSwipeDetection,a=r.edgeSwipeThreshold;return!n||!(s<=a||s>=i.innerWidth-a)||"prevent"===n&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this,s=getDocument();let i=e;i.originalEvent&&(i=i.originalEvent);const r=t.touchEventsData;if("pointerdown"===i.type){if(null!==r.pointerId&&r.pointerId!==i.pointerId)return;r.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void preventEdgeSwipe(t,i,i.targetTouches[0].pageX);const{params:n,touches:a,enabled:l}=t;if(!l)return;if(!n.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&n.preventInteractionOnTransition)return;!t.animating&&n.cssMode&&n.loop&&t.loopFix();let o=i.target;if("wrapper"===n.touchEventsTarget&&!t.wrapperEl.contains(o))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(r.isTouched&&r.isMoved)return;const d=!!n.noSwipingClass&&""!==n.noSwipingClass,c=i.composedPath?i.composedPath():i.path;d&&i.target&&i.target.shadowRoot&&c&&(o=c[0]);const p=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,u=!(!i.target||!i.target.shadowRoot);if(n.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(n.swipeHandler&&!o.closest(n.swipeHandler))return;a.currentX=i.pageX,a.currentY=i.pageY;const h=a.currentX,m=a.currentY;if(!preventEdgeSwipe(t,i,h))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=h,a.startY=m,r.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,n.threshold>0&&(r.allowThresholdMove=!1);let f=!0;o.matches(r.focusableElements)&&(f=!1,"SELECT"===o.nodeName&&(r.isTouched=!1)),s.activeElement&&s.activeElement.matches(r.focusableElements)&&s.activeElement!==o&&s.activeElement.blur();const v=f&&t.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!v||o.isContentEditable||i.preventDefault(),n.freeMode&&n.freeMode.enabled&&t.freeMode&&t.animating&&!n.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function onTouchMove(e){const t=getDocument(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:a,enabled:l}=s;if(!l)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let o,d=e;if(d.originalEvent&&(d=d.originalEvent),"pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}if("touchmove"===d.type){if(o=[...d.changedTouches].filter((e=>e.identifier===i.touchId))[0],!o||o.identifier!==i.touchId)return}else o=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const c=o.pageX,p=o.pageY;if(d.preventedByNestedSwiper)return n.startX=c,void(n.startY=p);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p}),i.touchStartTime=now()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(pn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(cn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&d.target===t.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=c,n.currentY=p;const u=n.currentX-n.startX,h=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?u:h,f=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(m=Math.abs(m)*(a?1:-1),f=Math.abs(f)*(a?1:-1)),n.diff=m,m*=r.touchRatio,a&&(m=-m,f=-f);const v=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=f>0?"prev":"next";const g=s.params.loop&&!r.cssMode,w="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(g&&w&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&v!==s.touchesDirection&&g&&w&&Math.abs(m)>=1)return Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0,i.currentTranslate=m+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),m>0?(g&&w&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+m)**T))):m<0&&(g&&w&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:a,rtlTranslate:l,slidesGrid:o,enabled:d}=t;if(!d)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=now(),p=c-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),p<300&&c-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let u;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,u=n.followFinger?l?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:u});const h=u>=-t.maxTranslate()&&!t.params.loop;let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=o[e]&&u=o[e])&&(m=e,f=o[o.length-1]-o[o.length-2])}let v=null,g=null;n.rewind&&(t.isBeginning?g=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const w=(u-o[m])/f,S=mn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?v:m+S):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-n.longSwipesRatio?t.slideTo(m+S):null!==g&&w<0&&Math.abs(w)>n.longSwipesRatio?t.slideTo(g):t.slideTo(m))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(m+S):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==v?v:m+S),"prev"===t.swipeDirection&&t.slideTo(null!==g?g:m))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onLoad(e){const t=this;processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function onDocumentTouchStart(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const events=(e,t)=>{const s=getDocument(),{params:i,el:r,wrapperEl:n,device:a}=e,l=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",d=t;s[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),r[o]("touchstart",e.onTouchStart,{passive:!1}),r[o]("pointerdown",e.onTouchStart,{passive:!1}),s[o]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[o]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[o]("touchend",e.onTouchEnd,{passive:!0}),s[o]("pointerup",e.onTouchEnd,{passive:!0}),s[o]("pointercancel",e.onTouchEnd,{passive:!0}),s[o]("touchcancel",e.onTouchEnd,{passive:!0}),s[o]("pointerout",e.onTouchEnd,{passive:!0}),s[o]("pointerleave",e.onTouchEnd,{passive:!0}),s[o]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[o]("click",e.onClick,!0),i.cssMode&&n[o]("scroll",e.onScroll),i.updateOnWindowResize?e[d](a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[d]("observerUpdate",onResize,!0),r[o]("load",e.onLoad,{capture:!0})};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const l=(a in n?n[a]:void 0)||e.originalParams,o=isGridEnabled(e,i),d=isGridEnabled(e,l),c=i.enabled;o&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,r=l[t]&&l[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const p=l.direction&&l.direction!==i.direction,u=i.loop&&(l.slidesPerView!==i.slidesPerView||p),h=i.loop;p&&s&&e.changeDirection(),extend(e.params,l);const m=e.params.enabled,f=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),c&&!m?e.disable():!c&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",l),s&&(u?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&f?(e.loopCreate(t),e.updateSlides()):h&&!f&&e.loopDestroy()),e.emit("breakpoint",l)}function getBreakpoint(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=getWindow(),n="window"===t?r.innerHeight:s.clientHeight,a=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));a.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=prepareClasses(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}var classes={addClasses:addClasses,removeClasses:removeClasses};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes},extendedDefaults={};class Swiper{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=extend({},t,{el:s});e.push(new Swiper(i))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:t.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],t.modules&&Array.isArray(t.modules)&&a.modules.push(...t.modules);const l={};a.modules.forEach((e=>{e({params:t,swiper:a,extendParams:moduleExtendParams(t,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const o=extend({},defaults,l);return a.params=extend({},o,extendedDefaults,t),a.originalParams=extend({},a.params),a.passedParams=extend({},t),a.params&&a.params.on&&Object.keys(a.params.on).forEach((e=>{a.on(e,a.params.on[e])})),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===a.params.direction,isVertical:()=>"vertical"===a.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=elementChildren(t,`.${s.slideClass}, swiper-slide`),r=elementIndex(i[0]);return elementIndex(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=elementChildren(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sa&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>a&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&processLazyPreloader(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return elementChildren(s,i())[0]})();return!r&&t.params.createElements&&(r=createElement("div",t.params.wrapperClass),s.append(r),elementChildren(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction")),wrongRTL:"-webkit-box"===elementStyle(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?processLazyPreloader(t,e):e.addEventListener("load",(e=>{processLazyPreloader(t,e.target)}))})),preload(t),t.initialized=!0,preload(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Swiper.installModule(e))),Swiper):(Swiper.installModule(e),Swiper)}}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);export{Swiper as S,defaults as d}; +//# sourceMappingURL=swiper-core.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/swiper-core.min.mjs.map b/node/node_modules/swiper/shared/swiper-core.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..1f41bc08991dc18e8174f0d2a308ed82642d28fa --- /dev/null +++ b/node/node_modules/swiper/shared/swiper-core.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-core.mjs.mjs","names":["getWindow","getDocument","elementParents","elementStyle","elementChildren","setCSSProperty","elementOuterSize","elementNextAll","elementPrevAll","getTranslate","animateCSSModeScroll","nextTick","showWarning","createElement","now","extend","elementIndex","deleteProps","support","deviceCached","browser","calcSupport","window","document","smoothScroll","documentElement","style","touch","DocumentTouch","getSupport","calcDevice","_temp","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","split","map","num","Number","isWebView","test","isSafariBrowser","need3dFix","getBrowser","Resize","_ref","swiper","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","params","resizeObserver","ResizeObserver","entries","requestAnimationFrame","newWidth","newHeight","forEach","_ref2","contentBoxSize","contentRect","target","el","inlineSize","blockSize","observe","addEventListener","cancelAnimationFrame","unobserve","removeEventListener","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","length","observerUpdate","setTimeout","attributes","childList","characterData","push","observeParents","observeSlideChildren","containerParents","hostEl","i","wrapperEl","disconnect","splice","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","arguments","args","Array","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","isArray","slice","unshift","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","Object","assign","size","updateSlides","getDirectionPropertyValue","node","label","parseFloat","getPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","keys","filter","key","slide","updateSlide","slideStyles","getComputedStyle","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","offsetWidth","Math","floor","swiperSlideSize","abs","slidesPerGroup","min","slidesPerGroupSkip","max","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","classList","contains","maxBackfaceHiddenSlides","add","remove","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","isElement","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","progress","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","selector","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","column","emitSlidesClasses","processLazyPreloader","imageEl","closest","lazyEl","querySelector","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","len","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","matches","slideFound","clickedSlide","undefined","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","axis","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","targetPosition","side","scrollTo","behavior","onTranslateToWrapperTransitionEnd","e","duration","transitionDuration","transitionDelay","transitionEmit","direction","step","dir","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","setAttribute","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","c","constructor","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","host","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","PI","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","CustomEvent","bubbles","dispatchEvent","allowMomentumBounce","Date","getTime","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","clearTimeout","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","a","b","matchMedia","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","classes","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","init","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","prototype","toString","querySelectorAll","swipers","newParams","__swiper__","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","current","cls","className","join","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","element","mounted","parentNode","toUpperCase","getWrapperSelector","trim","getWrapper","slideSlots","lazyElements","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/swiper-core.mjs b/node/node_modules/swiper/shared/swiper-core.mjs new file mode 100644 index 0000000000000000000000000000000000000000..cfb6346cfcb26293e913bf814be4386e4bea8f84 --- /dev/null +++ b/node/node_modules/swiper/shared/swiper-core.mjs @@ -0,0 +1,3890 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; +import { a as elementParents, o as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, p as elementNextAll, q as elementPrevAll, j as getTranslate, r as animateCSSModeScroll, n as nextTick, t as showWarning, c as createElement, d as now, u as extend, h as elementIndex, v as deleteProps } from './utils.mjs'; + +let support; +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; +} +function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; +} + +let deviceCached; +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; +} +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; +} + +let browser; +function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; +} +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; +} + +function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ + +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } +} + +function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } +} + +function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); +} + +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); +} + +const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } +}; +const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); +}; +const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } +}; + +function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; +} +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; +} + +function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); +} + +function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); +} +function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; +} +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); +} + +function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); +} + +function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } +} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); +}; +function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); +} +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; +function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes +}; +const extendedDefaults = {}; +class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } +} +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +export { Swiper as S, defaults as d }; diff --git a/node/node_modules/swiper/shared/update-on-virtual-data.min.mjs b/node/node_modules/swiper/shared/update-on-virtual-data.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..54c8e04575a0167f951850d0c4d333986855a1d2 --- /dev/null +++ b/node/node_modules/swiper/shared/update-on-virtual-data.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,p as paramsList,i as isObject,n as needsNavigation,a as needsPagination,b as needsScrollbar}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";function getParams(a,e){void 0===a&&(a={}),void 0===e&&(e=!0);const s={on:{}},n={},t={};extend(s,defaults),s._emitClasses=!0,s.init=!1;const r={},i=paramsList.map((a=>a.replace(/_/,""))),l=Object.assign({},a);return Object.keys(l).forEach((l=>{void 0!==a[l]&&(i.indexOf(l)>=0?isObject(a[l])?(s[l]={},t[l]={},extend(s[l],a[l]),extend(t[l],a[l])):(s[l]=a[l],t[l]=a[l]):0===l.search(/on[A-Z]/)&&"function"==typeof a[l]?e?n[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:s.on[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:r[l]=a[l])})),["navigation","pagination","scrollbar"].forEach((a=>{!0===s[a]&&(s[a]={}),!1===s[a]&&delete s[a]})),{params:s,passedParams:t,rest:r,events:n}}function mountSwiper(a,e){let{el:s,nextEl:n,prevEl:t,paginationEl:r,scrollbarEl:i,swiper:l}=a;needsNavigation(e)&&n&&t&&(l.params.navigation.nextEl=n,l.originalParams.navigation.nextEl=n,l.params.navigation.prevEl=t,l.originalParams.navigation.prevEl=t),needsPagination(e)&&r&&(l.params.pagination.el=r,l.originalParams.pagination.el=r),needsScrollbar(e)&&i&&(l.params.scrollbar.el=i,l.originalParams.scrollbar.el=i),l.init(s)}function getChangedParams(a,e,s,n,t){const r=[];if(!e)return r;const i=a=>{r.indexOf(a)<0&&r.push(a)};if(s&&n){const a=n.map(t),e=s.map(t);a.join("")!==e.join("")&&i("children"),n.length!==s.length&&i("children")}return paramsList.filter((a=>"_"===a[0])).map((a=>a.replace(/_/,""))).forEach((s=>{if(s in a&&s in e)if(isObject(a[s])&&isObject(e[s])){const n=Object.keys(a[s]),t=Object.keys(e[s]);n.length!==t.length?i(s):(n.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})),t.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})))}else a[s]!==e[s]&&i(s)})),r}const updateOnVirtualData=a=>{!a||a.destroyed||!a.params.virtual||a.params.virtual&&!a.params.virtual.enabled||(a.updateSlides(),a.updateProgress(),a.updateSlidesClasses(),a.parallax&&a.params.parallax&&a.params.parallax.enabled&&a.parallax.setTranslate())};export{getChangedParams as a,getParams as g,mountSwiper as m,updateOnVirtualData as u}; +//# sourceMappingURL=update-on-virtual-data.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/update-on-virtual-data.min.mjs.map b/node/node_modules/swiper/shared/update-on-virtual-data.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..88b07d2f4e2c67ca81547395ab5d35c024d7af92 --- /dev/null +++ b/node/node_modules/swiper/shared/update-on-virtual-data.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-on-virtual-data.mjs.mjs","names":["extend","paramsList","isObject","needsNavigation","needsPagination","needsScrollbar","defaults","getParams","obj","splitEvents","params","on","events","passedParams","_emitClasses","init","rest","allowedParams","map","key","replace","plainObj","Object","assign","keys","forEach","indexOf","search","toLowerCase","substr","mountSwiper","_ref","swiperParams","el","nextEl","prevEl","paginationEl","scrollbarEl","swiper","navigation","originalParams","pagination","scrollbar","getChangedParams","oldParams","children","oldChildren","getKey","addKey","push","oldChildrenKeys","childrenKeys","join","length","filter","newKeys","oldKeys","newKey","oldKey","updateOnVirtualData","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","parallax","setTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/update-on-virtual-data.mjs b/node/node_modules/swiper/shared/update-on-virtual-data.mjs new file mode 100644 index 0000000000000000000000000000000000000000..0fc30506dd7cdd1cb6cbc0aa8d8107b5b2f9e987 --- /dev/null +++ b/node/node_modules/swiper/shared/update-on-virtual-data.mjs @@ -0,0 +1,130 @@ +import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +function getParams(obj, splitEvents) { + if (obj === void 0) { + obj = {}; + } + if (splitEvents === void 0) { + splitEvents = true; + } + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, defaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +function mountSwiper(_ref, swiperParams) { + let { + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper + } = _ref; + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + swiper.init(el); +} + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; + +export { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u }; diff --git a/node/node_modules/swiper/shared/update-swiper.min.mjs b/node/node_modules/swiper/shared/update-swiper.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..d2d6f64eccdd874a5741d7112ac8c9ddaada19dd --- /dev/null +++ b/node/node_modules/swiper/shared/update-swiper.min.mjs @@ -0,0 +1,2 @@ +const 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","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function extend(e,t){const i=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>i.indexOf(e)<0)).forEach((i=>{void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0?t[i].__swiper__?e[i]=t[i]:extend(e[i],t[i]):e[i]=t[i]}))}function needsNavigation(e){return void 0===e&&(e={}),e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function needsPagination(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}function needsScrollbar(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}function uniqueClasses(e){void 0===e&&(e="");const t=e.split(" ").map((e=>e.trim())).filter((e=>!!e)),i=[];return t.forEach((e=>{i.indexOf(e)<0&&i.push(e)})),i.join(" ")}function attrToProp(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}function wrapperClass(e){return void 0===e&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function updateSwiper(e){let{swiper:t,slides:i,passedParams:l,changedParams:n,nextEl:o,prevEl:r,scrollbarEl:a,paginationEl:s}=e;const d=n.filter((e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:v,virtual:g,thumbs:b}=t;let f,_,w,h,S,E,m,C;n.includes("thumbs")&&l.thumbs&&l.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(f=!0),n.includes("controller")&&l.controller&&l.controller.control&&c.controller&&!c.controller.control&&(_=!0),n.includes("pagination")&&l.pagination&&(l.pagination.el||s)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),n.includes("scrollbar")&&l.scrollbar&&(l.scrollbar.el||a)&&(c.scrollbar||!1===c.scrollbar)&&v&&!v.el&&(h=!0),n.includes("navigation")&&l.navigation&&(l.navigation.prevEl||r)&&(l.navigation.nextEl||o)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const x=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};if(n.includes("loop")&&t.isElement&&(c.loop&&!l.loop?E=!0:!c.loop&&l.loop?m=!0:C=!0),d.forEach((e=>{if(isObject(c[e])&&isObject(l[e]))Object.assign(c[e],l[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in l[e])||l[e].enabled||x(e);else{const t=l[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=l[e]:!1===t&&x(e)}})),d.includes("controller")&&!_&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),n.includes("children")&&i&&g&&c.virtual.enabled?(g.slides=i,g.update(!0)):n.includes("virtual")&&g&&c.virtual.enabled&&(i&&(g.slides=i),g.update(!0)),n.includes("children")&&i&&c.loop&&(C=!0),f){b.init()&&b.update(!0)}_&&(t.controller.control=c.controller.control),w&&(!t.isElement||s&&"string"!=typeof s||(s=document.createElement("div"),s.classList.add("swiper-pagination"),s.part.add("pagination"),t.el.appendChild(s)),s&&(c.pagination.el=s),p.init(),p.render(),p.update()),h&&(!t.isElement||a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(c.scrollbar.el=a),v.init(),v.updateSize(),v.setTranslate()),S&&(t.isElement&&(o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-button-next"),o.innerHTML=t.hostEl.constructor.nextButtonSvg,o.part.add("button-next"),t.el.appendChild(o)),r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-prev"),r.innerHTML=t.hostEl.constructor.prevButtonSvg,r.part.add("button-prev"),t.el.appendChild(r))),o&&(c.navigation.nextEl=o),r&&(c.navigation.prevEl=r),u.init(),u.update()),n.includes("allowSlideNext")&&(t.allowSlideNext=l.allowSlideNext),n.includes("allowSlidePrev")&&(t.allowSlidePrev=l.allowSlidePrev),n.includes("direction")&&t.changeDirection(l.direction,!1),(E||C)&&t.loopDestroy(),(m||C)&&t.loopCreate(),t.update()}export{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}; +//# sourceMappingURL=update-swiper.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/update-swiper.min.mjs.map b/node/node_modules/swiper/shared/update-swiper.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..01b898600cf3f607f537a4756cfd5a76d9701141 --- /dev/null +++ b/node/node_modules/swiper/shared/update-swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-swiper.mjs.mjs","names":["paramsList","isObject","o","constructor","Object","prototype","toString","call","slice","__swiper__","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","attrToProp","attrName","replace","l","toUpperCase","wrapperClass","className","includes","updateSwiper","_ref","swiper","slides","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","controller","control","destroyModule","mod","destroy","isElement","remove","undefined","loop","assign","enabled","newValue","update","init","document","createElement","classList","add","part","appendChild","render","updateSize","setTranslate","innerHTML","hostEl","nextButtonSvg","prevButtonSvg","allowSlideNext","allowSlidePrev","changeDirection","direction","loopDestroy","loopCreate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/update-swiper.mjs b/node/node_modules/swiper/shared/update-swiper.mjs new file mode 100644 index 0000000000000000000000000000000000000000..851604f23e53840f1c0e46e130bfb9bb22659a80 --- /dev/null +++ b/node/node_modules/swiper/shared/update-swiper.mjs @@ -0,0 +1,236 @@ +/* underscore in name -> watch for changes */ +const 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', +// modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} +function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} +function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; +} +function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} +function uniqueClasses(classNames) { + if (classNames === void 0) { + classNames = ''; + } + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} +function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); +} +function wrapperClass(className) { + if (className === void 0) { + className = ''; + } + if (!className) return 'swiper-wrapper'; + if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`; + return className; +} + +function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); +} + +export { 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 }; diff --git a/node/node_modules/swiper/shared/utils.min.mjs b/node/node_modules/swiper/shared/utils.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..a7081ee8a9c22e45d52740be273844d451229a5d --- /dev/null +++ b/node/node_modules/swiper/shared/utils.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";function classesToTokens(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function deleteProps(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle(e){const t=getWindow();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function getTranslate(e,t){void 0===t&&(t="x");const n=getWindow();let r,o,l;const s=getComputedStyle(e);return n.WebKitCSSMatrix?(o=s.transform||s.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map((e=>e.replace(",","."))).join(", ")),l=new n.WebKitCSSMatrix("none"===o?"":o)):(l=s.MozTransform||s.OTransform||s.MsTransform||s.msTransform||s.transform||s.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=l.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?l.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?l.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let n=1;nt.indexOf(e)<0));for(let t=0,o=n.length;tl?"next":"prev",m=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{s=(new Date).getTime(),null===i&&(i=s);const e=Math.max(Math.min((s-i)/a,1),0),c=.5-Math.cos(e*Math.PI)/2;let p=l+c*(n-l);if(m(p,n)&&(p=n),t.wrapperEl.scrollTo({[r]:p}),m(p,n))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:p})})),void o.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=o.requestAnimationFrame(u)};u()}function getSlideTransformEl(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function elementChildren(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function showWarning(e){try{return void console.warn(e)}catch(e){}}function createElement(e,t){void 0===t&&(t=[]);const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:classesToTokens(t)),n}function elementOffset(e){const t=getWindow(),n=getDocument(),r=e.getBoundingClientRect(),o=n.body,l=e.clientTop||o.clientTop||0,s=e.clientLeft||o.clientLeft||0,i=e===t?t.scrollY:e.scrollTop,a=e===t?t.scrollX:e.scrollLeft;return{top:r.top+i-l,left:r.left+a-s}}function elementPrevAll(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementNextAll(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementStyle(e,t){return getWindow().getComputedStyle(e,null).getPropertyValue(t)}function elementIndex(e){let t,n=e;if(n){for(t=0;null!==(n=n.previousSibling);)1===n.nodeType&&(t+=1);return t}}function elementParents(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function elementTransitionEnd(e,t){t&&e.addEventListener("transitionend",(function n(r){r.target===e&&(t.call(e,r),e.removeEventListener("transitionend",n))}))}function elementOuterSize(e,t,n){const r=getWindow();return n?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function makeElementsArray(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}export{elementParents as a,elementOffset as b,createElement as c,now as d,elementChildren as e,elementOuterSize as f,getSlideTransformEl as g,elementIndex as h,classesToTokens as i,getTranslate as j,elementTransitionEnd as k,isObject as l,makeElementsArray as m,nextTick as n,elementStyle as o,elementNextAll as p,elementPrevAll as q,animateCSSModeScroll as r,setCSSProperty as s,showWarning as t,extend as u,deleteProps as v}; +//# sourceMappingURL=utils.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/shared/utils.min.mjs.map b/node/node_modules/swiper/shared/utils.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..5bd496cb641b2fc4e2fa04671ee31313e0ff20e2 --- /dev/null +++ b/node/node_modules/swiper/shared/utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.mjs.mjs","names":["getWindow","getDocument","classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getComputedStyle","el","window","style","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","to","arguments","undefined","noExtend","i","nextSource","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","matches","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","push","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray"],"sources":["0"],"mappings":"YAAcA,eAAgBC,gBAAmB,2BAEjD,SAASC,gBAAgBC,GAIvB,YAHgB,IAAZA,IACFA,EAAU,IAELA,EAAQC,OAAOC,MAAM,KAAKC,QAAOC,KAAOA,EAAEH,QACnD,CAEA,SAASI,YAAYC,GACnB,MAAMC,EAASD,EACfE,OAAOC,KAAKF,GAAQG,SAAQC,IAC1B,IACEJ,EAAOI,GAAO,IAChB,CAAE,MAAOC,GAET,CACA,WACSL,EAAOI,EAChB,CAAE,MAAOC,GAET,IAEJ,CACA,SAASC,SAASC,EAAUC,GAI1B,YAHc,IAAVA,IACFA,EAAQ,GAEHC,WAAWF,EAAUC,EAC9B,CACA,SAASE,MACP,OAAOC,KAAKD,KACd,CACA,SAASE,iBAAiBC,GACxB,MAAMC,EAASxB,YACf,IAAIyB,EAUJ,OATID,EAAOF,mBACTG,EAAQD,EAAOF,iBAAiBC,EAAI,QAEjCE,GAASF,EAAGG,eACfD,EAAQF,EAAGG,cAERD,IACHA,EAAQF,EAAGE,OAENA,CACT,CACA,SAASE,aAAaJ,EAAIK,QACX,IAATA,IACFA,EAAO,KAET,MAAMJ,EAASxB,YACf,IAAI6B,EACAC,EACAC,EACJ,MAAMC,EAAWV,iBAAiBC,GA6BlC,OA5BIC,EAAOS,iBACTH,EAAeE,EAASE,WAAaF,EAASG,gBAC1CL,EAAazB,MAAM,KAAK+B,OAAS,IACnCN,EAAeA,EAAazB,MAAM,MAAMgC,KAAIC,GAAKA,EAAEC,QAAQ,IAAK,OAAMC,KAAK,OAI7ET,EAAkB,IAAIP,EAAOS,gBAAiC,SAAjBH,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASS,cAAgBT,EAASU,YAAcV,EAASW,aAAeX,EAASY,aAAeZ,EAASE,WAAaF,EAASa,iBAAiB,aAAaN,QAAQ,aAAc,sBACrMV,EAASE,EAAgBe,WAAWzC,MAAM,MAE/B,MAATuB,IAE0BE,EAAxBN,EAAOS,gBAAgCF,EAAgBgB,IAEhC,KAAlBlB,EAAOO,OAA8BY,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAE3B,MAATD,IAE0BE,EAAxBN,EAAOS,gBAAgCF,EAAgBkB,IAEhC,KAAlBpB,EAAOO,OAA8BY,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAEjCC,GAAgB,CACzB,CACA,SAASoB,SAASC,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEC,aAAkE,WAAnDzC,OAAO0C,UAAUP,SAASQ,KAAKH,GAAGI,MAAM,GAAI,EAC7G,CACA,SAASC,OAAOC,GAEd,MAAsB,oBAAXjC,aAAwD,IAAvBA,OAAOkC,YAC1CD,aAAgBC,YAElBD,IAA2B,IAAlBA,EAAKE,UAAoC,KAAlBF,EAAKE,SAC9C,CACA,SAASC,SACP,MAAMC,EAAKlD,OAAOmD,UAAU1B,QAAU,OAAI2B,EAAYD,UAAU,IAC1DE,EAAW,CAAC,YAAa,cAAe,aAC9C,IAAK,IAAIC,EAAI,EAAGA,EAAIH,UAAU1B,OAAQ6B,GAAK,EAAG,CAC5C,MAAMC,EAAaD,EAAI,GAAKH,UAAU1B,QAAU6B,OAAIF,EAAYD,UAAUG,GAC1E,GAAIC,UAAoDV,OAAOU,GAAa,CAC1E,MAAMC,EAAYxD,OAAOC,KAAKD,OAAOuD,IAAa5D,QAAOQ,GAAOkD,EAASI,QAAQtD,GAAO,IACxF,IAAK,IAAIuD,EAAY,EAAGC,EAAMH,EAAU/B,OAAQiC,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUJ,EAAUE,GACpBG,EAAO7D,OAAO8D,yBAAyBP,EAAYK,QAC5CR,IAATS,GAAsBA,EAAKE,aACzBxB,SAASW,EAAGU,KAAarB,SAASgB,EAAWK,IAC3CL,EAAWK,GAASI,WACtBd,EAAGU,GAAWL,EAAWK,GAEzBX,OAAOC,EAAGU,GAAUL,EAAWK,KAEvBrB,SAASW,EAAGU,KAAarB,SAASgB,EAAWK,KACvDV,EAAGU,GAAW,CAAC,EACXL,EAAWK,GAASI,WACtBd,EAAGU,GAAWL,EAAWK,GAEzBX,OAAOC,EAAGU,GAAUL,EAAWK,KAGjCV,EAAGU,GAAWL,EAAWK,GAG/B,CACF,CACF,CACA,OAAOV,CACT,CACA,SAASe,eAAerD,EAAIsD,EAASC,GACnCvD,EAAGE,MAAMsD,YAAYF,EAASC,EAChC,CACA,SAASE,qBAAqBC,GAC5B,IAAIC,OACFA,EAAMC,eACNA,EAAcC,KACdA,GACEH,EACJ,MAAMzD,EAASxB,YACTqF,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAMC,EAAWP,EAAOQ,OAAOC,MAC/BT,EAAOU,UAAUnE,MAAMoE,eAAiB,OACxCrE,EAAOsE,qBAAqBZ,EAAOa,gBACnC,MAAMC,EAAMb,EAAiBE,EAAgB,OAAS,OAChDY,EAAe,CAACC,EAASC,IACd,SAARH,GAAkBE,GAAWC,GAAkB,SAARH,GAAkBE,GAAWC,EAEvEC,EAAU,KACdb,GAAO,IAAIlE,MAAOgF,UACA,OAAdb,IACFA,EAAYD,GAEd,MAAMe,EAAWC,KAAKC,IAAID,KAAKE,KAAKlB,EAAOC,GAAaC,EAAU,GAAI,GAChEiB,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBxB,EAAgBqB,GAAgBvB,EAAiBE,GAOvE,GANIY,EAAaY,EAAiB1B,KAChC0B,EAAkB1B,GAEpBD,EAAOU,UAAUkB,SAAS,CACxB1B,CAACA,GAAOyB,IAENZ,EAAaY,EAAiB1B,GAUhC,OATAD,EAAOU,UAAUnE,MAAMsF,SAAW,SAClC7B,EAAOU,UAAUnE,MAAMoE,eAAiB,GACxC1E,YAAW,KACT+D,EAAOU,UAAUnE,MAAMsF,SAAW,GAClC7B,EAAOU,UAAUkB,SAAS,CACxB1B,CAACA,GAAOyB,GACR,SAEJrF,EAAOsE,qBAAqBZ,EAAOa,gBAGrCb,EAAOa,eAAiBvE,EAAOwF,sBAAsBZ,EAAQ,EAE/DA,GACF,CACA,SAASa,oBAAoBC,GAC3B,OAAOA,EAAQC,cAAc,4BAA8BD,EAAQE,YAAcF,EAAQE,WAAWD,cAAc,4BAA8BD,CAClJ,CACA,SAASG,gBAAgBC,EAASC,GAIhC,YAHiB,IAAbA,IACFA,EAAW,IAEN,IAAID,EAAQE,UAAUlH,QAAOiB,GAAMA,EAAGkG,QAAQF,IACvD,CACA,SAASG,YAAYC,GACnB,IAEE,YADAC,QAAQC,KAAKF,EAEf,CAAE,MAAOG,GAET,CACF,CACA,SAASC,cAAcC,EAAK7H,QACV,IAAZA,IACFA,EAAU,IAEZ,MAAMoB,EAAK0G,SAASF,cAAcC,GAElC,OADAzG,EAAG2G,UAAUC,OAAQC,MAAMC,QAAQlI,GAAWA,EAAUD,gBAAgBC,IACjEoB,CACT,CACA,SAAS+G,cAAc/G,GACrB,MAAMC,EAASxB,YACTiI,EAAWhI,cACXsI,EAAMhH,EAAGiH,wBACTC,EAAOR,EAASQ,KAChBC,EAAYnH,EAAGmH,WAAaD,EAAKC,WAAa,EAC9CC,EAAapH,EAAGoH,YAAcF,EAAKE,YAAc,EACjDC,EAAYrH,IAAOC,EAASA,EAAOqH,QAAUtH,EAAGqH,UAChDE,EAAavH,IAAOC,EAASA,EAAOuH,QAAUxH,EAAGuH,WACvD,MAAO,CACLE,IAAKT,EAAIS,IAAMJ,EAAYF,EAC3BO,KAAMV,EAAIU,KAAOH,EAAaH,EAElC,CACA,SAASO,eAAe3H,EAAIgG,GAC1B,MAAM4B,EAAU,GAChB,KAAO5H,EAAG6H,wBAAwB,CAChC,MAAMC,EAAO9H,EAAG6H,uBACZ7B,EACE8B,EAAK5B,QAAQF,IAAW4B,EAAQG,KAAKD,GACpCF,EAAQG,KAAKD,GACpB9H,EAAK8H,CACP,CACA,OAAOF,CACT,CACA,SAASI,eAAehI,EAAIgG,GAC1B,MAAMiC,EAAU,GAChB,KAAOjI,EAAGkI,oBAAoB,CAC5B,MAAMC,EAAOnI,EAAGkI,mBACZlC,EACEmC,EAAKjC,QAAQF,IAAWiC,EAAQF,KAAKI,GACpCF,EAAQF,KAAKI,GACpBnI,EAAKmI,CACP,CACA,OAAOF,CACT,CACA,SAASG,aAAapI,EAAIqI,GAExB,OADe5J,YACDsB,iBAAiBC,EAAI,MAAMsB,iBAAiB+G,EAC5D,CACA,SAASC,aAAatI,GACpB,IACI0C,EADA6F,EAAQvI,EAEZ,GAAIuI,EAAO,CAGT,IAFA7F,EAAI,EAEuC,QAAnC6F,EAAQA,EAAMC,kBACG,IAAnBD,EAAMnG,WAAgBM,GAAK,GAEjC,OAAOA,CACT,CAEF,CACA,SAAS+F,eAAezI,EAAIgG,GAC1B,MAAM0C,EAAU,GAChB,IAAIC,EAAS3I,EAAG4I,cAChB,KAAOD,GACD3C,EACE2C,EAAOzC,QAAQF,IAAW0C,EAAQX,KAAKY,GAE3CD,EAAQX,KAAKY,GAEfA,EAASA,EAAOC,cAElB,OAAOF,CACT,CACA,SAASG,qBAAqB7I,EAAIN,GAM5BA,GACFM,EAAG8I,iBAAiB,iBANtB,SAASC,EAAavJ,GAChBA,EAAEoF,SAAW5E,IACjBN,EAASqC,KAAK/B,EAAIR,GAClBQ,EAAGgJ,oBAAoB,gBAAiBD,GAC1C,GAIF,CACA,SAASE,iBAAiBjJ,EAAIkJ,EAAMC,GAClC,MAAMlJ,EAASxB,YACf,OAAI0K,EACKnJ,EAAY,UAATkJ,EAAmB,cAAgB,gBAAkBzH,WAAWxB,EAAOF,iBAAiBC,EAAI,MAAMsB,iBAA0B,UAAT4H,EAAmB,eAAiB,eAAiBzH,WAAWxB,EAAOF,iBAAiBC,EAAI,MAAMsB,iBAA0B,UAAT4H,EAAmB,cAAgB,kBAE9QlJ,EAAGoJ,WACZ,CACA,SAASC,kBAAkBrJ,GACzB,OAAQ6G,MAAMC,QAAQ9G,GAAMA,EAAK,CAACA,IAAKjB,QAAOS,KAAOA,GACvD,QAESiJ,oBAAqB1B,mBAAoBP,mBAAoB3G,SAAUiG,qBAAsBmD,sBAAuBvD,yBAA0B4C,kBAAmB3J,qBAAsByB,kBAAmByI,0BAA2BlH,cAAe0H,uBAAwB5J,cAAe2I,kBAAmBJ,oBAAqBL,oBAAqBlE,0BAA2BJ,oBAAqB8C,iBAAkB9D,YAAapD"} \ No newline at end of file diff --git a/node/node_modules/swiper/shared/utils.mjs b/node/node_modules/swiper/shared/utils.mjs new file mode 100644 index 0000000000000000000000000000000000000000..e46a7210d7fc043f8c812b43fc2c6bc039acf940 --- /dev/null +++ b/node/node_modules/swiper/shared/utils.mjs @@ -0,0 +1,292 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; + +function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); +} + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); +} +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); +} +function now() { + return Date.now(); +} +function getComputedStyle(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; +} +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; +} +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); +} +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; +} +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); +} +function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; +} +function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); +} +function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } +} +function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; +} +function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +} +function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; +} +function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; +} +function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); +} +function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; +} +function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } +} +function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + 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')); + } + return el.offsetWidth; +} +function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); +} + +export { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, elementStyle as o, elementNextAll as p, elementPrevAll as q, animateCSSModeScroll as r, setCSSProperty as s, showWarning as t, extend as u, deleteProps as v }; diff --git a/node/node_modules/swiper/swiper-bundle.css b/node/node_modules/swiper/swiper-bundle.css new file mode 100644 index 0000000000000000000000000000000000000000..e2026043ea913a306573db44b4c39d3c086bab29 --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.css @@ -0,0 +1,735 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/node/node_modules/swiper/swiper-bundle.js b/node/node_modules/swiper/swiper-bundle.js new file mode 100644 index 0000000000000000000000000000000000000000..9642deba79b4b1a1c2f39f92d8675c4d510c7b3f --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.js @@ -0,0 +1,9571 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + 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')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + 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(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + 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; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.need3dFix) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.need3dFix) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})(); diff --git a/node/node_modules/swiper/swiper-bundle.min.css b/node/node_modules/swiper/swiper-bundle.min.css new file mode 100644 index 0000000000000000000000000000000000000000..9db22859fe1485450d6fa0a705c70f6cbe9d8603 --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-bundle.min.js b/node/node_modules/swiper/swiper-bundle.min.js new file mode 100644 index 0000000000000000000000000000000000000000..6dac048c2180fa9f1fcbf6996c40dcf24a9c4417 --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function x(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}let M,C,P;function L(){return M||(M=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),M}function I(e){return void 0===e&&(e={}),C||(C=function(e){let{userAgent:t}=void 0===e?{}:e;const s=L(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),C}function z(){return P||(P=function(){const e=r(),t=I();let s=!1;function a(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(a()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,a]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&a<2}}const i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=a();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||i&&t.ios,isWebView:i}}()),P}var A={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const $=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},k=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},O=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&k(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&k(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*r:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(a,"--swiper-centered-offset-before",""),u(a,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const I="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let a=0;a1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(x||0)})),e-=x,e{m[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(a,"--swiper-centered-offset-before",-m[0]+"px"),u(a,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==E&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),a[e].classList.add(s.slideVisibleClass)),h&&a[e].classList.add(s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.filter((e=>e.column===i))[0],c=t.filter((e=>e.column===i+1))[0],d=t.filter((e=>e.column===i-1))[0]):o=t[i];o&&(o.classList.add(s.slideActiveClass),n?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled&&i.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&O(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this;if(i.destroyed)return;const r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s}=i.params;let a=i.params.slidesPerView;"auto"===a?a=i.slidesPerViewDynamic():(a=Math.ceil(parseFloat(i.params.slidesPerView,10)),s&&a%2==0&&(a+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame((()=>{i.slideTo(n,t,s,a)})),i},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i||a.destroyed)return a;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o||a.destroyed)return a;const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this;if(!a.destroyed)return a.slideTo(a.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;if(i.destroyed)return;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var X={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let a=0;a1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):x=r;const S="next"===a||!a,T="prev"===a||!a;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===i?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&E.push(s)})):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&E.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||E.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x+Math.ceil(M),0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&S)if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x-C,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?E.length/m.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function Y(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function B(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void Y(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!Y(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function R(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===i.touchId))[0],!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function q(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].filter((e=>e.identifier===s.touchId))[0],!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function F(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function V(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function _(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function W(e){const t=this;$(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const U=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",F,!0):e[c]("observerUpdate",F,!0),r[d]("load",e.onLoad,{capture:!0})};const K=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var Z={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Q(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const J={eventsEmitter:A,update:D,translate:G,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),N({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),N({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:H,loop:X,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=B.bind(e),e.onTouchMove=R.bind(e),e.onTouchEnd=q.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=_.bind(e)),e.onClick=V.bind(e),e.onLoad=W.bind(e),U(e,"on")},detachEvents:function(){U(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=K(e,a),d=K(e,l),c=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const u=l.direction&&l.direction!==a.direction,m=a.loop&&(l.slidesPerView!==a.slidesPerView||u),h=a.loop;u&&s&&e.changeDirection(),p(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),c&&!f?e.disable():!c&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},ee={};class te{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new te(a))})),e}const l=this;l.__swiper__=!0,l.support=L(),l.device=I({userAgent:t.userAgent}),l.browser=z(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:Q(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},Z,o);return l.params=p({},d,ee,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?Math.ceil(a[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&$(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=v("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?$(t,e):e.addEventListener("load",(e=>{$(t,e.target)}))})),O(t),t.initialized=!0,O(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(ee,e)}static get extendedDefaults(){return ee}static get defaults(){return Z}static installModule(e){te.prototype.__modules__||(te.prototype.__modules__=[]);const t=te.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>te.installModule(e))),te):(te.installModule(e),te)}}function se(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=v("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function ae(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function ie(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function ce(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function pe(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{x(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function ue(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=h(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=v("div",a.split(" ")),i.append(r)),r}Object.keys(J).forEach((e=>{Object.keys(J[e]).forEach((t=>{te.prototype[t]=J[e][t]}))})),te.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=E(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const me=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:c,to:p,slides:u,slidesGrid:m,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(w=Math.floor(t/2)+a+o,b=Math.floor(t/2)+a+l):(w=t+(a-1)+o,b=(r?t:a)+l);let y=g-b,E=g+w;r||(y=Math.max(y,0),E=Math.min(E,u.length-1));let x=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,i||(x+=s.slidesGrid[0])):r&&g{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:y,to:E,slides:function(){const e=[];for(let t=y;t<=E;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=c;e<=p;e+=1)if(eE){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=E){const s=C(t);void 0===p||e?M.push(s):(t>p&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===E(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new n.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const p=n&&n.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function n(e,s){const a=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=se(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),a=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=T(s),a=T(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function p(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?u():(c(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{p()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:r}=t.navigation;a=T(a),r=T(r);const n=s.target;if(t.params.navigation.hideOnClick&&!r.includes(n)&&!a.includes(n)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),l()},disable:u,update:l,init:c,destroy:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function c(e){const s=e.target.closest(ae(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;t.slideToLoop(a)}else t.slideTo(a)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;let a,r,c=t.pagination.el;c=T(c);const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=S(i[0],t.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),p=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(p+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),c.length>1)i.forEach((e=>{const i=y(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=p&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&d(e,"prev"),i===p&&d(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[p];for(let e=o;e<=p;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}c.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ae(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(ae(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/u;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(ae(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,u),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let a=t.pagination.el;a=T(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ae(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function m(){t.params.pagination=se(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>E(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),p())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&p()})),a("snapIndexChange",(()=>{p()})),a("snapGridLengthChange",(()=>{u(),p()})),a("destroy",(()=>{h()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),p()},disable:f,render:u,update:p,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const o=a();let d,c,p,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=c,o=(p-c)*n;s?(o=-o,o>0?(l=c-o,o=0):-o+c>p&&(l=p+o)):o<0?(l=c+o,o=0):o+c>p&&(l=p-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(h),i.style.opacity=1,h=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",p=t.isHorizontal()?a.offsetWidth:a.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),c="auto"===t.params.scrollbar.dragSize?p*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${c}px`:s.style.height=`${c}px`,a.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function E(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(y(e)-w(i)[t.isHorizontal()?"left":"top"]-(null!==d?d:c/2))/(p-c),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",E(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;m&&(e.preventDefault?e.preventDefault():e.returnValue=!1,E(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n}=a;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},l=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",x,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=se(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;if("string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=o.querySelectorAll(a.el),!i.length)return;t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(ae(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.scrollbar.enabled?I():(P(),b(),g())})),i("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),i("destroy",(()=>{L()}));const I=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:I,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=f(e,i);t.isElement&&o.push(...f(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function b(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function y(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function x(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function S(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!x(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=b(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?E(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=y()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function T(e){if(!x(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(o=!0,m.scaleMove=b(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&o&&(l=!1,o=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function C(e){if(!x(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth,h.height=m.imageEl.offsetHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;if(a0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return void(h.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return void(h.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function P(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function L(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?E(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,v,b,x,S,T,M,C,P,L,I;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const z="number"==typeof e?e:null;1===c&&z&&(i=void 0,r=void 0);const A=y();s.scale=z||A,c=z||A,!e||1===c&&z?(u=0,g=0):(L=m.slideEl.offsetWidth,I=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-i,p=o+I/2-r,v=m.imageEl.offsetWidth,b=m.imageEl.offsetHeight,x=v*s.scale,S=b*s.scale,T=Math.min(L/2-x/2,0),M=Math.min(I/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=p*s.scale,uC&&(u=C),gP&&(g=P)),z&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function I(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?E(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function z(e){const s=t.zoom;s.scale&&1!==s.scale?I():L(e)}function A(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function $(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=A();t.wrapperEl.addEventListener("pointerdown",S,s),t.wrapperEl.addEventListener("pointermove",T,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,M,s)})),t.wrapperEl.addEventListener("pointermove",C,a)}function k(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=A();t.wrapperEl.removeEventListener("pointerdown",S,s),t.wrapperEl.removeEventListener("pointermove",T,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,M,s)})),t.wrapperEl.removeEventListener("pointermove",C,a)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&$()})),a("destroy",(()=>{k()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&z(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&P()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&P()})),Object.assign(t.zoom,{enable:$,disable:k,in:L,out:I,toggle:z})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=a=>{t.controller.control=a.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),x(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r{e.setAttribute("tabIndex","0")}))}function l(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function o(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function d(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function c(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function p(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function u(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function m(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;t.pagination&&t.pagination.el&&(a===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(ae(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&a===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&a===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.matches(ae(t.params.pagination.bulletClass))&&a.click())}function h(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function f(){return h()&&t.params.pagination.clickable}const g=(e,t,s)=>{n(e),"BUTTON"!==e.tagName&&(o(e,"button"),e.addEventListener("keydown",m)),c(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},w=()=>{t.a11y.clicked=!0},b=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},E=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},x=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&d(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&o(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;c(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},S=()=>{const e=t.params.a11y;t.el.append(i);const s=t.el;e.containerRoleDescriptionMessage&&d(s,e.containerRoleDescriptionMessage),e.containerMessage&&c(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;o=r,T(a).forEach((e=>{e.setAttribute("id",o)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,l),x();let{nextEl:p,prevEl:u}=t.navigation?t.navigation:{};if(p=T(p),u=T(u),p&&p.forEach((t=>g(t,r,e.nextSlideMessage))),u&&u.forEach((t=>g(t,r,e.prevSlideMessage))),f()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",m)}))}t.el.addEventListener("focus",E,!0),t.el.addEventListener("pointerdown",w,!0),t.el.addEventListener("pointerup",b,!0)};a("beforeInit",(()=>{i=v("span",t.params.a11y.notificationClass),i.setAttribute("aria-live","assertive"),i.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&S()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&x()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(p(s),l(s)):(u(s),n(s))),e&&(t.isEnd?(p(e),l(e)):(u(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;h()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(n(s),t.params.pagination.renderBullet||(o(s,"button"),c(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ae(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){i&&i.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",m))),s&&s.forEach((e=>e.removeEventListener("keydown",m))),f()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",m)}));t.el.removeEventListener("focus",E,!0),t.el.removeEventListener("pointerdown",w,!0),t.el.removeEventListener("pointerup",b,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",y),g||C())}const E=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=i.autoplay.paused?d:b+w-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{E()}))},x=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),E();let a=void 0===e?i.params.autoplay.delay:e;v=i.params.autoplay.delay,w=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,v=r,w=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{x()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},S=()=>{b=(new Date).getTime(),i.autoplay.running=!0,x(),l("autoplayStart")},T=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",y):C()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-b),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},C=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(b=(new Date).getTime(),f?(f=!1,x(d)):x(),i.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,i.animating||i.autoplay.paused||M(!0))},I=e=>{"mouse"===e.pointerType&&(g=!1,i.autoplay.paused&&C())};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",L),i.el.addEventListener("pointerleave",I)),a().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{i.el.removeEventListener("pointerenter",L),i.el.removeEventListener("pointerleave",I),a().removeEventListener("visibilitychange",P),i.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{i.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?T():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&C(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(c(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),d(!0);else if(a){const s=i=>{e.swiper=i.detail[0],a.removeEventListener("init",s),o(),d(!0),e.swiper.update(),t.update()};a.addEventListener("init",s)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),i("slideChange update resize observerUpdate",(()=>{d()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:c}=t,p=o()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;l&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(a("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;a=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,i,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:c,fill:p}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===p&&l>1){const s=Math.floor(e/(l*c)),a=e-c*l*s,r=0===s?l:Math.min(Math.ceil((u-s*c*l)/c),l);f=Math.floor(a/r),h=a-f*r+s*l,m=h+f*t/c,i.style.order=m}else"column"===p?(h=Math.floor(e/c),f=e-h*c,(h>a||h===a&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,i.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",i.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:a,roundLengths:i}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),a){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),pe({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};de({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=t.params.cubeEffect,p=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;c.shadow&&(p?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*r+90*m,l&&(h=90*-r-90*m),t.browser&&t.browser.need3dFix&&Math.abs(h)/90%2==1&&(h+=.001)),s.style.transform=w,c.slideShadows&&i(s,m,p)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(p)m.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,i=c.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const f=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=ue("flip",e,t.isHorizontal()?"left":"top")),i||(i=ue("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};de({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),de({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,s=a.length;e0?u:0),t&&(t.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;de({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,s)=>{let a=f.rotate[s]*Math.abs(d*n);t.browser&&t.browser.need3dFix&&Math.abs(a)/90%2==1&&(a+=.001),m[s]=a})),a.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=a.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=ue("creative",a)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=ce(0,a);E.style.transform=y,E.style.opacity=b,f.origin&&(E.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),de({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=ue("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;ce(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),pe({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return te.use(me),te}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-bundle.min.js.map b/node/node_modules/swiper/swiper-bundle.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..c411601aa8fe52c7aa41b4bece384a4a1ba17b9c --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-bundle.min.mjs b/node/node_modules/swiper/swiper-bundle.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..f3283e546d2c2a9606714db0859ea95bf78821c8 --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-bundle.min.mjs.map b/node/node_modules/swiper/swiper-bundle.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..00ccec7ee572acd6aa7b3bab950288106ffe8984 --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.mjs.mjs","names":["Swiper","Virtual","Keyboard","Mousewheel","Navigation","Pagination","Scrollbar","Parallax","Zoom","Controller","A11y","History","HashNavigation","Autoplay","Thumb","freeMode","Grid","Manipulation","EffectFade","EffectCube","EffectFlip","EffectCoverflow","EffectCreative","EffectCards","modules","use"],"sources":["0"],"mappings":";;;;;;;;;;;;YAYcA,WAAc,sCACrBC,YAAa,mCACbC,aAAc,oCACdC,eAAgB,sCAChBC,eAAgB,sCAChBC,eAAgB,sCAChBC,cAAe,qCACfC,aAAc,oCACdC,SAAU,gCACVC,eAAgB,sCAChBC,SAAU,gCACVC,YAAa,mCACbC,mBAAoB,2CACpBC,aAAc,oCACdC,UAAW,kCACXC,aAAc,qCACdC,SAAU,gCACVC,iBAAkB,wCAClBC,eAAgB,uCAChBC,eAAgB,uCAChBC,eAAgB,uCAChBC,oBAAqB,4CACrBC,mBAAoB,2CACpBC,gBAAiB,iCAGxB,MAAMC,QAAU,CAACvB,QAASC,SAAUC,WAAYC,WAAYC,WAAYC,UAAWC,SAAUC,KAAMC,WAAYC,KAAMC,QAASC,eAAgBC,SAAUC,MAAOC,SAAUC,KAAMC,aAAcC,WAAYC,WAAYC,WAAYC,gBAAiBC,eAAgBC,aAClQvB,OAAOyB,IAAID,gBAEFxB,OAAQA"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-bundle.mjs b/node/node_modules/swiper/swiper-bundle.mjs new file mode 100644 index 0000000000000000000000000000000000000000..eaaa96b16dea5714428f58d02a719e768abeb1d2 --- /dev/null +++ b/node/node_modules/swiper/swiper-bundle.mjs @@ -0,0 +1,42 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import Virtual from './modules/virtual.mjs'; +import Keyboard from './modules/keyboard.mjs'; +import Mousewheel from './modules/mousewheel.mjs'; +import Navigation from './modules/navigation.mjs'; +import Pagination from './modules/pagination.mjs'; +import Scrollbar from './modules/scrollbar.mjs'; +import Parallax from './modules/parallax.mjs'; +import Zoom from './modules/zoom.mjs'; +import Controller from './modules/controller.mjs'; +import A11y from './modules/a11y.mjs'; +import History from './modules/history.mjs'; +import HashNavigation from './modules/hash-navigation.mjs'; +import Autoplay from './modules/autoplay.mjs'; +import Thumb from './modules/thumbs.mjs'; +import freeMode from './modules/free-mode.mjs'; +import Grid from './modules/grid.mjs'; +import Manipulation from './modules/manipulation.mjs'; +import EffectFade from './modules/effect-fade.mjs'; +import EffectCube from './modules/effect-cube.mjs'; +import EffectFlip from './modules/effect-flip.mjs'; +import EffectCoverflow from './modules/effect-coverflow.mjs'; +import EffectCreative from './modules/effect-creative.mjs'; +import EffectCards from './modules/effect-cards.mjs'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; diff --git a/node/node_modules/swiper/swiper-effect-utils.d.ts b/node/node_modules/swiper/swiper-effect-utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..97f31c2edc445d5dd2d520c5591e02731e8d414c --- /dev/null +++ b/node/node_modules/swiper/swiper-effect-utils.d.ts @@ -0,0 +1,28 @@ +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const createShadow: (suffix?: string, slideEl: HTMLElement, side?: string) => HTMLElement; + +declare const effectInit: (params: { + effect: string; + swiper: Swiper; + on?: () => void; + setTranslate?: () => void; + setTransition?: () => void; + overwriteParams?: () => SwiperOptions; + perspective?: boolean; + recreateShadows?: () => void; + getEffectParams?: () => any; +}) => void; + +declare const effectTarget: (effectParams: any, slideEl: HTMLElement) => void; + +declare const effectVirtualTransitionEnd: (params: { + swiper: Swiper; + duration: number; + transformElements: HTMLElement[]; + allSlides?: boolean; +}) => void; + +declare const getSlideTransformEl: (slideEl: HTMLElement) => void; + +export { createShadow, effectInit, effectTarget, effectVirtualTransitionEnd, getSlideTransformEl }; diff --git a/node/node_modules/swiper/swiper-effect-utils.min.mjs b/node/node_modules/swiper/swiper-effect-utils.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..16e05d1871cb7dcf23155dfc885bd419376bf976 --- /dev/null +++ b/node/node_modules/swiper/swiper-effect-utils.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +export{c as createShadow}from"./shared/create-shadow.min.mjs";export{e as effectInit}from"./shared/effect-init.min.mjs";export{e as effectTarget}from"./shared/effect-target.min.mjs";export{e as effectVirtualTransitionEnd}from"./shared/effect-virtual-transition-end.min.mjs";export{g as getSlideTransformEl}from"./shared/utils.min.mjs"; +//# sourceMappingURL=swiper-effect-utils.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-effect-utils.min.mjs.map b/node/node_modules/swiper/swiper-effect-utils.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..538571bbc3b4004241ad6cbd607e1db1bd918f0d --- /dev/null +++ b/node/node_modules/swiper/swiper-effect-utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-effect-utils.mjs.mjs","names":["c","e","g"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,sBAAyB,wCACzBC,oBAAuB,sCACvBA,sBAAyB,wCACzBA,oCAAuC,wDACvCC,6BAAgC"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-effect-utils.mjs b/node/node_modules/swiper/swiper-effect-utils.mjs new file mode 100644 index 0000000000000000000000000000000000000000..39b204575b8467c4228cb72140597381e5e5b326 --- /dev/null +++ b/node/node_modules/swiper/swiper-effect-utils.mjs @@ -0,0 +1,17 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +export { c as createShadow } from './shared/create-shadow.mjs'; +export { e as effectInit } from './shared/effect-init.mjs'; +export { e as effectTarget } from './shared/effect-target.mjs'; +export { e as effectVirtualTransitionEnd } from './shared/effect-virtual-transition-end.mjs'; +export { g as getSlideTransformEl } from './shared/utils.mjs'; diff --git a/node/node_modules/swiper/swiper-element-bundle.js b/node/node_modules/swiper/swiper-element-bundle.js new file mode 100644 index 0000000000000000000000000000000000000000..d91d8c7636cb7dbf765146c4ce95b87e3ebd2261 --- /dev/null +++ b/node/node_modules/swiper/swiper-element-bundle.js @@ -0,0 +1,10171 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + 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')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop + } = swiper.params; + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + 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(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + 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; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !gesture.slideEl) return; + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth; + image.height = gesture.imageEl.offsetHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth; + imageHeight = gesture.imageEl.offsetHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElement = document.querySelector(swiper.params.controller.control); + if (controlElement && controlElement.swiper) { + swiper.controller.control = controlElement.swiper; + } else if (controlElement) { + const onControllerSwiper = e => { + swiper.controller.control = e.detail[0]; + swiper.update(); + controlElement.removeEventListener('init', onControllerSwiper); + }; + controlElement.addEventListener('init', onControllerSwiper); + } + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = () => { + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const handleFocus = e => { + if (swiper.a11y.clicked) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject$1(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener('init', onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener('init', onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + if (swiper.browser && swiper.browser.need3dFix && Math.abs(wrapperRotate) / 90 % 2 === 1) { + wrapperRotate += 0.001; + } + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + if (swiper.browser && swiper.browser.need3dFix) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + if (swiper.browser && swiper.browser.need3dFix) { + if (Math.abs(rotateY) / 90 % 2 === 1) { + rotateY += 0.001; + } + if (Math.abs(rotateX) / 90 % 2 === 1) { + rotateX += 0.001; + } + } + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + if (swiper.browser && swiper.browser.need3dFix && Math.abs(val) / 90 % 2 === 1) { + val += 0.001; + } + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + /* underscore in name -> watch for changes */ + const 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', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/node/node_modules/swiper/swiper-element-bundle.min.js b/node/node_modules/swiper/swiper-element-bundle.min.js new file mode 100644 index 0000000000000000000000000000000000000000..feb31eef9df37cc1b200e0185ed1656f5eeb04e3 --- /dev/null +++ b/node/node_modules/swiper/swiper-element-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}function p(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",c=(e,t)=>"next"===p&&e>=t||"prev"===p&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let p=n+r*(s-n);if(c(p,s)&&(p=s),t.wrapperEl.scrollTo({[i]:p}),c(p,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:p})})),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=i(),a=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,p=e===t?t.scrollX:e.scrollLeft;return{top:a.top+d-l,left:a.left+p-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function x(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function E(e,t){t&&e.addEventListener("transitionend",(function s(i){i.target===e&&(t.call(e,i),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}let M,C,P;function L(){return M||(M=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),M}function z(e){return void 0===e&&(e={}),C||(C=function(e){let{userAgent:t}=void 0===e?{}:e;const s=L(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,p=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!c&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),p&&!h&&(l.os="android",l.android=!0),(c||m||u)&&(l.os="ios",l.ios=!0),l}(e)),C}function k(){return P||(P=function(){const e=r(),t=z();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const a=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||a&&t.ios,isWebView:a}}()),P}var A={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const $=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},I=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},O=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&I(e,s)}))}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(tr)&&I(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,p.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(p):e.grid&&e.grid.unsetSlides();const z="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==p.length-1)).forEach((e=>{e.style[t]=`${E}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(E||0)})),e-=E,e{m[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:p,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-m[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(c!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(a=0;at.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;ar?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),h&&i[e].classList.add(s.slideFullyVisibleClass),o.progress=a?-p:p,o.originalProgress=a?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,p;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.filter((e=>e.column===a))[0],p=t.filter((e=>e.column===a+1))[0],d=t.filter((e=>e.column===a-1))[0]):o=t[a];o&&(o.classList.add(s.slideActiveClass),n?(p&&p.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(p=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!p&&(p=t[0]),p&&p.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const p=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=p(d);else if(c){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&O(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)}));let r,n=!1;if(a)for(let e=0;eo?o:i&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==c){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(c||0)!==n)return!1}let b;if(n!==(p||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>c?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const a=this;if(a.destroyed)return;const r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let i=a.params.slidesPerView;"auto"===i?i=a.slidesPerViewDynamic():(i=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame((()=>{a.slideTo(n,t,s,i)})),a},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a||i.destroyed)return i;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;const p=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!p&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(l?i.translate:-i.translate),m=r.map((e=>c(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&a.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this;if(!i.destroyed)return i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;if(a.destroyed)return;let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+i/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-i?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var B={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const a=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):E=r;const S="next"===i||!i,T="prev"===i||!i;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===a?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&x.push(s)})):x.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&x.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||x.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E+Math.ceil(M),0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(a){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(x.length>0&&S)if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E-C,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?x.length/m.grid.rows:x.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=p,o.allowSlideNext=c,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function H(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function R(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void H(t,a,a.targetTouches[0].pageX);const{params:l,touches:d,enabled:p}=t;if(!p)return;if(!l.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let c=a.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(c))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(c=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,c):c.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!c.closest(l.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!H(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;c.matches(n.focusableElements)&&(w=!1,"SELECT"===c.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==c&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||c.isContentEditable||a.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function X(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==a.touchId)return;if(c.pointerId!==a.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].filter((e=>e.identifier===a.touchId))[0],!p||p.identifier!==a.touchId)return}else p=c;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",c));const u=p.pageX,m=p.pageY;if(c.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return c.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",c),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",c),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}if((new Date).getTime(),a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",c),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let x=!0,E=r.resistanceRatio;if(r.touchReleaseOnEdges&&(E=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(x=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**E))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function Y(e){const t=this,s=t.touchEventsData;let i,a=e;a.originalEvent&&(a=a.originalEvent);if("touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)){if(!(["pointercancel","contextmenu"].includes(a.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:p,enabled:c}=t;if(!c)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=p[e]&&h=p[e])&&(g=e,v=p[p.length-1]-p[p.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-p[g])/v,x=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+x):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+x):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(a.target===t.navigation.nextEl||a.target===t.navigation.prevEl)?a.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+x),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function q(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function V(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function j(e){const t=this;$(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function W(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const U=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",q,!0):e[p]("observerUpdate",q,!0),r[d]("load",e.onLoad,{capture:!0})};const K=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var Z={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Q(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const J={eventsEmitter:A,update:D,translate:_,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),G({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),G({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:N,loop:B,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=R.bind(e),e.onTouchMove=X.bind(e),e.onTouchEnd=Y.bind(e),e.onDocumentTouchStart=W.bind(e),t.cssMode&&(e.onScroll=V.bind(e)),e.onClick=F.bind(e),e.onLoad=j.bind(e),U(e,"on")},detachEvents:function(){U(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:a}=e,r=i.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=K(e,i),d=K(e,l),p=i.enabled;o&&!d?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(a.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&a.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,a=l[t]&&l[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=l.direction&&l.direction!==i.direction,m=i.loop&&(l.slidesPerView!==i.slidesPerView||u),h=i.loop;u&&s&&e.changeDirection(),c(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!f?e.disable():!p&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},ee={};class te{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new te(i))})),e}const l=this;l.__swiper__=!0,l.support=L(),l.device=z({userAgent:t.userAgent}),l.browser=k(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:Q(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},Z,o);return l.params=c({},d,ee,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){a[l]-a[e]{t.complete&&$(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!a&&t.params.createElements&&(a=v("div",t.params.wrapperClass),s.append(a),f(s,`.${t.params.slideClass}`).forEach((e=>{a.append(e)}))),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?$(t,e):e.addEventListener("load",(e=>{$(t,e.target)}))})),O(t),t.initialized=!0,O(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(ee,e)}static get extendedDefaults(){return ee}static get defaults(){return Z}static installModule(e){te.prototype.__modules__||(te.prototype.__modules__=[]);const t=te.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>te.installModule(e))),te):(te.installModule(e),te)}}function se(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let r=f(e.el,`.${i[a]}`)[0];r||(r=v("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}})),s}function ie(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function ae(e){const t=this,{params:s,slidesEl:i}=t;s.loop&&t.loopDestroy();const a=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.append(t.children[0]),t.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.prepend(t.children[0]),t.innerHTML=""}else a.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),i("setTranslate",(()=>{s.params.effect===t&&a()})),i("setTransition",((e,i)=>{s.params.effect===t&&r(i)})),i("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),i("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(p=!0),requestAnimationFrame((()=>{p&&s.slides&&s.slides.length&&(a(),p=!1)})))}))}function pe(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function ce(e){let{swiper:t,duration:s,transformElements:i,allSlides:a}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=a?i:i.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{E(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function ue(e,t,s){const i=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=h(t);let r=a.querySelector(`.${i.split(" ").join(".")}`);return r||(r=v("div",i.split(" ")),a.append(r)),r}Object.keys(J).forEach((e=>{Object.keys(J[e]).forEach((t=>{te.prototype[t]=J[e][t]}))})),te.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=a.requestAnimationFrame((()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)})),a===s&&r===i||o()}))})),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=x(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const me=[function(e){let t,{swiper:s,extendParams:a,on:r,emit:n}=e;a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=i();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];let a;return i.renderSlide?(a=i.renderSlide.call(s,e,t),"string"==typeof a&&(o.innerHTML=a,a=o.children[0])):a=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),a.setAttribute("data-swiper-slide-index",t),i.renderSlide||(a.innerHTML=e),i.cache&&(s.virtual.cache[t]=a),a}function p(e){const{slidesPerView:t,slidesPerGroup:i,centeredSlides:a,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:p,to:c,slides:u,slidesGrid:m,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",a?(w=Math.floor(t/2)+i+o,b=Math.floor(t/2)+i+l):(w=t+(i-1)+o,b=(r?t:i)+l);let y=g-b,x=g+w;r||(y=Math.max(y,0),x=Math.min(x,u.length-1));let E=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,a||(E+=s.slidesGrid[0])):r&&g{e.style[v]=E-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:E,from:y,to:x,slides:function(){const e=[];for(let t=y;t<=x;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=p;e<=c;e+=1)if(ex){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=x){const s=C(t);void 0===c||e?M.push(s):(t>c&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=E-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,p()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{p()}),100)):p())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const i=e[s],r=i.getAttribute("data-swiper-slide-index");r&&i.setAttribute("data-swiper-slide-index",parseInt(r,10)+a),t[parseInt(s,10)+a]=i})),s.virtual.cache=t}p(!0),s.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[i]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[i],1),e[i]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===x(t.el,`.${t.params.slideActiveClass}`).length)return;const i=t.el,a=i.clientWidth,r=i.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(i);s&&(d.left-=i.scrollLeft);const p=[[d.left,d.top],[d.left+a,d.top],[d.left,d.top+r],[d.left+a,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||p||c||u)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),((p||u)&&!s||(d||c)&&s)&&t.slideNext(),((d||c)&&!s||(p||u)&&s)&&t.slidePrev()):((d||p||m||h)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),(p||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",a)}}function p(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function c(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&p()})),a("destroy",(()=>{t.keyboard.enabled&&c()})),Object.assign(t.keyboard,{enable:p,disable:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let p,c=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),a("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),a("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function g(e){let s=e,i=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const c=n&&n.contains(s.target);if(!t.mouseEntered&&!c&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),i=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),i&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},i=p&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!c&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,i=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-i.time<500&&i.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;p=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{p=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const i=u.length?u[u.length-1]:void 0;if(u.push(s),i?(s.direction!==i.direction||s.delta>i.delta||s.time>i.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}i("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),i("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function n(e,s){const i=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=se(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),i=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=T(s),i=T(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>a(e,"next"))),i.forEach((e=>a(e,"prev")))}function c(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>i(e,"next"))),s.forEach((e=>i(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===t.params.navigation.enabled?u():(p(),l())})),i("toEdge fromEdge lock unlock",(()=>{l()})),i("destroy",(()=>{c()})),i("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),i("click",((e,s)=>{let{nextEl:i,prevEl:r}=t.navigation;i=T(i),r=T(r);const n=s.target;if(t.params.navigation.hideOnClick&&!r.includes(n)&&!i.includes(n)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),l()},disable:u,update:l,init:p,destroy:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function p(e){const s=e.target.closest(ie(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;t.slideToLoop(i)}else t.slideTo(i)}function c(){const e=t.rtl,s=t.params.pagination;if(o())return;let i,r,p=t.pagination.el;p=T(p);const c=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(c/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,c,u;if(s.dynamicBullets&&(n=S(a[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),c=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(c+o)/2),a.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)a.forEach((e=>{const a=y(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=c&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&d(e,"prev"),a===c&&d(e,"next"))}));else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach(((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")})),s.dynamicBullets){const e=a[o],t=a[c];for(let e=o;e<=c;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ie(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(i+1)})),e.querySelectorAll(ie(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/u;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(ie(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,i+1,u),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=T(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],i.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ie(e.bulletClass)))})),"custom"!==e.type&&a("paginationRender",i[0])}function m(){t.params.pagination=se(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>x(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}i("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),c())})),i("activeIndexChange",(()=>{void 0===t.snapIndex&&c()})),i("snapIndexChange",(()=>{c()})),i("snapGridLengthChange",(()=>{u(),c()})),i("destroy",(()=>{h()})),i("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),i("lock unlock",(()=>{c()})),i("click",((e,s)=>{const i=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),c()},disable:f,render:u,update:c,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:a,emit:r}=e;const o=i();let d,p,c,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:i,el:a}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=p,o=(c-p)*n;s?(o=-o,o>0?(l=p-o,o=0):-o+p>c&&(l=c+o)):o<0?(l=p+o,o=0):o+p>c&&(l=c-o),t.isHorizontal()?(i.style.transform=`translate3d(${o}px, 0, 0)`,i.style.width=`${l}px`):(i.style.transform=`translate3d(0px, ${o}px, 0)`,i.style.height=`${l}px`),r.hide&&(clearTimeout(h),a.style.opacity=1,h=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:i}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?i.offsetWidth:i.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),p="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${p}px`:s.style.height=`${p}px`,i.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(i.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function x(e){const{scrollbar:s,rtlTranslate:i}=t,{el:a}=s;let r;r=(y(e)-w(a)[t.isHorizontal()?"left":"top"]-(null!==d?d:p/2))/(c-p),r=Math.max(Math.min(r,1),0),i&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n,dragEl:l}=i;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.style.transitionDuration="100ms",l.style.transitionDuration="100ms",x(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:i}=t,{el:a,dragEl:n}=s;m&&(e.preventDefault?e.preventDefault():e.returnValue=!1,x(e),i.style.transitionDuration="0ms",a.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n}=i;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",a.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:i}=t,a=s.el;if(!a)return;const r=a,n=!!i.passiveListeners&&{passive:!1,capture:!1},l=!!i.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=se(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const i=t.params.scrollbar;if(!i.el)return;let a,r;if("string"==typeof i.el&&t.isElement&&(a=t.el.querySelector(i.el)),a||"string"!=typeof i.el)a||(a=i.el);else if(a=o.querySelectorAll(i.el),!a.length)return;t.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.querySelectorAll(i.el).length&&(a=s.querySelector(i.el)),a.length>0&&(a=a[0]),a.classList.add(t.isHorizontal()?i.horizontalClass:i.verticalClass),a&&(r=a.querySelector(ie(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),a.append(r))),Object.assign(e,{el:a,dragEl:r}),i.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),a&&a.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.scrollbar.enabled?z():(P(),b(),g())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),a("setTranslate",(()=>{g()})),a("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),a("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),a("destroy",(()=>{L()}));const z=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:z,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({parallax:{enabled:!1}});const a="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:i}=t,a=i?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),p=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*a+"%":n*s*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let c=`translate3d(${n}, ${l}, 0px)`;if(null!=o){c+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(p&&null!=p){c+=` rotate(${p*s*-1}deg)`}e.style.transform=c},n=()=>{const{el:e,slides:s,progress:i,snapGrid:n,isElement:l}=t,o=f(e,a);t.isElement&&o.push(...f(t.hostEl,a)),o.forEach((e=>{r(e,i)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-i*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${a}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};i("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),i("init",(()=>{t.params.parallax.enabled&&n()})),i("setTranslate",(()=>{t.params.parallax.enabled&&n()})),i("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:i}=t,r=[...s.querySelectorAll(a)];t.isElement&&r.push(...i.querySelectorAll(a)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,p=1,c=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function b(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,i=u[1].pageY;return Math.sqrt((s-e)**2+(i-t)**2)}function y(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function E(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function S(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!E(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=b(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let i=m.slideEl.querySelector(`.${s.containerClass}`);if(i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=i,m.imageWrapEl=i?x(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=y()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/p,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/p]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}c=!0}}function T(e){if(!E(e))return;const s=t.params.zoom,i=t.zoom,a=u.findIndex((t=>t.pointerId===e.pointerId));a>=0&&(u[a]=e),u.length<2||(o=!0,m.scaleMove=b(),m.imageEl&&(i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalet.pointerId===e.pointerId));a>=0&&u.splice(a,1),l&&o&&(l=!1,o=!1,m.imageEl&&(i.scale=Math.max(Math.min(i.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`,p=i.scale,c=!1,i.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):i.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===i.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function C(e){if(!E(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth,h.height=m.imageEl.offsetHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const i=h.width*s.scale,a=h.height*s.scale;if(i0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!c){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return void(h.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return void(h.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),h.isMoved=!0;const r=(s.scale-p)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function P(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,p=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function L(e){const s=t.zoom,i=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${i.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?x(m.imageEl,`.${i.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let a,r,l,o,d,c,u,g,v,b,E,S,T,M,C,P,L,z;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${i.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(a=e.pageX,r=e.pageY):(a=h.touchesStart.x,r=h.touchesStart.y);const k="number"==typeof e?e:null;1===p&&k&&(a=void 0,r=void 0);const A=y();s.scale=k||A,p=k||A,!e||1===p&&k?(u=0,g=0):(L=m.slideEl.offsetWidth,z=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-a,c=o+z/2-r,v=m.imageEl.offsetWidth,b=m.imageEl.offsetHeight,E=v*s.scale,S=b*s.scale,T=Math.min(L/2-E/2,0),M=Math.min(z/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=c*s.scale,uC&&(u=C),gP&&(g=P)),k&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function z(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?x(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function k(e){const s=t.zoom;s.scale&&1!==s.scale?z():L(e)}function A(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function $(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:i}=A();t.wrapperEl.addEventListener("pointerdown",S,s),t.wrapperEl.addEventListener("pointermove",T,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,M,s)})),t.wrapperEl.addEventListener("pointermove",C,i)}function I(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=A();t.wrapperEl.removeEventListener("pointerdown",S,s),t.wrapperEl.removeEventListener("pointermove",T,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,M,s)})),t.wrapperEl.removeEventListener("pointermove",C,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.imageEl,s=m.slideEl;a("zoomChange",e,t,s)}v=e}}),i("init",(()=>{t.params.zoom.enabled&&$()})),i("destroy",(()=>{I()})),i("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const i=u.length>0?u[0]:e;h.touchesStart.x=i.pageX,h.touchesStart.y=i.pageY}(s)})),i("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,i=300;const a=g.x*s,r=h.currentX+a,n=g.y*i,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(i=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,i);h.currentX=r,h.currentY=l;const d=h.width*e.scale,p=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-p/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),i("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&k(s)})),i("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&P()})),i("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&P()})),Object.assign(t.zoom,{enable:$,disable:I,in:L,out:z,toggle:k})},function(e){let{swiper:t,extendParams:s,on:i}=e;function a(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},i("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=i=>{t.controller.control=i.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),i("update",(()=>{r()})),i("resize",(()=>{r()})),i("observerUpdate",(()=>{r()})),i("setTranslate",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,i)})),i("setTransition",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,i)})),Object.assign(t.controller,{setTranslate:function(e,s){const i=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new a(t.slidesGrid,e.slidesGrid):new a(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{s.updateAutoHeight()})),E(s.wrapperEl,(()=>{a&&s.transitionEnd()}))))}if(Array.isArray(a))for(r=0;r{e.setAttribute("tabIndex","0")}))}function l(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function o(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function d(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function p(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function c(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function u(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function m(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,i=e.target;t.pagination&&t.pagination.el&&(i===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(ie(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&i===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&i===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&i.matches(ie(t.params.pagination.bulletClass))&&i.click())}function h(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function f(){return h()&&t.params.pagination.clickable}const g=(e,t,s)=>{n(e),"BUTTON"!==e.tagName&&(o(e,"button"),e.addEventListener("keydown",m)),p(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},w=()=>{t.a11y.clicked=!0},b=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},x=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const i=t.slides.indexOf(s)===t.activeIndex,a=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);i||a||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},E=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&d(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&o(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((i,a)=>{const r=t.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):a;p(i,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},S=()=>{const e=t.params.a11y;t.el.append(a);const s=t.el;e.containerRoleDescriptionMessage&&d(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const i=t.wrapperEl,r=e.id||i.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;o=r,T(i).forEach((e=>{e.setAttribute("id",o)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(i,l),E();let{nextEl:c,prevEl:u}=t.navigation?t.navigation:{};if(c=T(c),u=T(u),c&&c.forEach((t=>g(t,r,e.nextSlideMessage))),u&&u.forEach((t=>g(t,r,e.prevSlideMessage))),f()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",m)}))}t.el.addEventListener("focus",x,!0),t.el.addEventListener("pointerdown",w,!0),t.el.addEventListener("pointerup",b,!0)};i("beforeInit",(()=>{a=v("span",t.params.a11y.notificationClass),a.setAttribute("aria-live","assertive"),a.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{t.params.a11y.enabled&&S()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&E()})),i("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(c(s),l(s)):(u(s),n(s))),e&&(t.isEnd?(c(e),l(e)):(u(e),n(e)))}()})),i("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;h()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(n(s),t.params.pagination.renderBullet||(o(s,"button"),p(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ie(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{t.params.a11y.enabled&&function(){a&&a.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",m))),s&&s.forEach((e=>e.removeEventListener("keydown",m))),f()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",m)}));t.el.removeEventListener("focus",x,!0),t.el.removeEventListener("pointerdown",w,!0),t.el.removeEventListener("pointerup",b,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:i}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let a=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const i=s.pathname.slice(1).split("/").filter((e=>""!==e)),a=i.length;return{key:i[a-2],value:i[a-1]}},d=(e,s)=>{const i=r();if(!a||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):i.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const p=i.history.state;p&&p.value===d||(t.params.history.replaceState?i.history.replaceState({value:d},null,d):i.history.pushState({value:d},null,d))},p=(e,s,i)=>{if(s)for(let a=0,r=t.slides.length;a{n=o(t.params.url),p(t.params.speed,n.value,!1)};i("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);a=!0,n=o(t.params.url),n.key||n.value?(p(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",c)):t.params.history.replaceState||e.addEventListener("popstate",c)}})()})),i("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",c)})()})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&d(t.params.history.key,t.activeIndex)})),i("slideChange",(()=>{a&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:a,on:n}=e,l=!1;const o=i(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const p=()=>{a("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},c=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),a("hashSet")):(o.location.hash=s||"",a("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,i=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(i||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&c()})),n("slideChange",(()=>{l&&t.params.cssMode&&c()}))},function(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,p,c,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||C())}const x=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?p=!0:p&&(w=d,p=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{x()}))},E=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),x();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:a.slides[a.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(t),t=setTimeout((()=>{o()}),i)):requestAnimationFrame((()=>{o()})),i},S=()=>{b=(new Date).getTime(),a.autoplay.running=!0,E(),l("autoplayStart")},T=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):C()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},C=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,E(d)):E(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||M(!0))},z=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&C())};n("init",(()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",z)),i().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",z),i().removeEventListener("visibilitychange",P),a.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{a.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?T():(c=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!a.destroyed&&a.autoplay.running&&c){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(c=!1);u&&a.params.cssMode&&C(),u=!1,c=!1}})),n("slideChange",(()=>{!a.destroyed&&a.autoplay.running&&(h=!0)})),Object.assign(a.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,i=e.clickedSlide;if(i&&i.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;a=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(a):t.slideTo(a)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(p(e.swiper)){const i=Object.assign({},e.swiper);Object.assign(i,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(i),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const i="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let a=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(a=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(a=1),a=Math.floor(a),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>a?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>a&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=i(),a=()=>{const i="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(i&&i.swiper)e.swiper=i.swiper,o(),d(!0);else if(i){const s=a=>{e.swiper=a.detail[0],i.removeEventListener("init",s),o(),d(!0),e.swiper.update(),t.update()};i.addEventListener("init",s)}return i},r=()=>{if(t.destroyed)return;a()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),a("slideChange update resize observerUpdate",(()=>{d()})),a("setTransition",((e,s)=>{const i=t.thumbs.swiper;i&&!i.destroyed&&i.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:i,once:a}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:p}=t,c=o()-p.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=p.velocities.pop(),s=p.velocities.pop(),i=e.position-s.position,a=e.time-s.time;t.velocity=i/a,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,p.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>h&&(c=t.minTranslate()+h),u=t.minTranslate(),m=!0,p.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(d[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),i=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&p.allowMomentumBounce&&(i("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(i("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&i("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(i("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,i,a,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{a=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;a&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),i=1,r.emitContainerClasses()):!a&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),a=s})),r.grid={initSlides:e=>{const{slidesPerView:a}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;i=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==a&&"row"===l&&(t=Math.max(t,a*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,a,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:p,fill:c}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===c&&l>1){const s=Math.floor(e/(l*p)),i=e-p*l*s,r=0===s?l:Math.min(Math.ceil((u-s*p*l)/p),l);f=Math.floor(i/r),h=i-f*r+s*l,m=h+f*t/p,a.style.order=m}else"column"===c?(h=Math.floor(e/p),f=e-h*p,(h>i||h===i&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);a.row=f,a.column=h,a.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,a.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",a.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:i,roundLengths:a}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),ce({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let i=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(i)),a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(a)),i&&(i.style.opacity=Math.max(-t,0)),a&&(a.style.opacity=Math.max(t,0))};de({effect:"cube",swiper:t,on:i,setTranslate:()=>{const{el:e,wrapperEl:s,slides:i,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,p=t.params.cubeEffect,c=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;p.shadow&&(c?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=v("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*r+90*m,l&&(h=90*-r-90*m),t.browser&&t.browser.need3dFix&&Math.abs(h)/90%2==1&&(h+=.001)),s.style.transform=w,p.slideShadows&&a(s,m,c)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(c)m.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,i=p.shadowScale/t,a=p.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${i}) translate3d(0px, ${n/2+a}px, ${-n/2/i}px) rotateX(-89.99deg)`}const f=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{el:s,slides:i}=t;if(i.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);a(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=ue("flip",e,t.isHorizontal()?"left":"top")),a||(a=ue("flip",e,t.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};de({effect:"flip",swiper:t,on:i,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,i=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),de({effect:"coverflow",swiper:t,on:i,setTranslate:()=>{const{width:e,height:s,slides:i,slidesSizesGrid:a}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,p=r.depth;for(let e=0,s=i.length;e0?u:0),t&&(t.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;de({effect:"creative",swiper:t,on:i,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:i}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=i[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${a(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,s)=>{let i=f.rotate[s]*Math.abs(d*n);t.browser&&t.browser.need3dFix&&Math.abs(i)/90%2==1&&(i+=.001),m[s]=i})),i.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=p<0?`scale(${1+(1-f.scale)*p*n})`:`scale(${1-(1-f.scale)*p*n})`,b=p<0?1+(1-f.opacity)*p*n:1-(1-f.opacity)*p*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=i.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=ue("creative",i)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=pe(0,i);x.style.transform=y,x.style.opacity=b,f.origin&&(x.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),de({effect:"cards",swiper:t,on:i,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:i}=t,a=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=i?-t.translate:t.translate;for(let o=0;o0&&c<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;v+=-28*c*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(c)+"%"}if(m=c<0?`calc(${m}px ${i?"-":"+"} (${w*Math.abs(c)}%))`:c>0?`calc(${m}px ${i?"-":"+"} (-${w*Math.abs(c)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const E=c<0?""+(1+(1-g)*c):""+(1-(1-g)*c),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${a.rotate?i?-v:v:0}deg)\n scale(${E})\n `;if(a.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=ue("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(p))+e.length;pe(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),ce({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];te.use(me);const he=["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","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function fe(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function ge(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:fe(t[s])&&fe(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:ge(e[s],t[s]):e[s]=t[s]}))}function ve(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const we=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},be=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function ye(e,t,s){const i={},a={};ge(i,Z);const r=[...he,"on"],n=r.map((e=>e.replace(/_/,"")));r.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(a[t]=e[t])}));const l=[...e.attributes];return"string"==typeof t&&void 0!==s&&l.push({name:t,value:fe(s)?{...s}:s}),l.forEach((e=>{const t=be.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=ve(t),i=ve(e.name.split(`${t}-`)[1]);void 0===a[s]&&(a[s]={}),!0===a[s]&&(a[s]={enabled:!0}),a[s][i]=we(e.value)}else{const t=ve(e.name);if(!n.includes(t))return;const s=we(e.value);a[t]&&be.includes(e.name)&&!fe(s)?(a[t].constructor!==Object&&(a[t]={}),a[t].enabled=!!s):a[t]=s}})),ge(i,a),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:a}}const xe=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}";const Ee="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,Se='\n ',Te=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class Me extends Ee{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return Se}static get prevButtonSvg(){return Se.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[xe,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&Te(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=ye(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new te(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var a=arguments.length,r=new Array(a>1?a-1:0),n=1;n"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:p,pagination:c,navigation:u,scrollbar:m,virtual:h,thumbs:f}=t;let g,v,w,b,y,x,E,S;a.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&p.thumbs&&!p.thumbs.swiper&&(g=!0),a.includes("controller")&&i.controller&&i.controller.control&&p.controller&&!p.controller.control&&(v=!0),a.includes("pagination")&&i.pagination&&(i.pagination.el||o)&&(p.pagination||!1===p.pagination)&&c&&!c.el&&(w=!0),a.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||l)&&(p.scrollbar||!1===p.scrollbar)&&m&&!m.el&&(b=!0),a.includes("navigation")&&i.navigation&&(i.navigation.prevEl||n)&&(i.navigation.nextEl||r)&&(p.navigation||!1===p.navigation)&&u&&!u.prevEl&&!u.nextEl&&(y=!0);const T=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),p[e].prevEl=void 0,p[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),p[e].el=void 0,t[e].el=void 0))};a.includes("loop")&&t.isElement&&(p.loop&&!i.loop?x=!0:!p.loop&&i.loop?E=!0:S=!0),d.forEach((e=>{if(fe(p[e])&&fe(i[e]))Object.assign(p[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||T(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?p[e]=i[e]:!1===t&&T(e)}})),d.includes("controller")&&!v&&t.controller&&t.controller.control&&p.controller&&p.controller.control&&(t.controller.control=p.controller.control),a.includes("children")&&s&&h&&p.virtual.enabled?(h.slides=s,h.update(!0)):a.includes("virtual")&&h&&p.virtual.enabled&&(s&&(h.slides=s),h.update(!0)),a.includes("children")&&s&&p.loop&&(S=!0),g&&f.init()&&f.update(!0);v&&(t.controller.control=p.controller.control),w&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-pagination"),o.part.add("pagination"),t.el.appendChild(o)),o&&(p.pagination.el=o),c.init(),c.render(),c.update()),b&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-scrollbar"),l.part.add("scrollbar"),t.el.appendChild(l)),l&&(p.scrollbar.el=l),m.init(),m.updateSize(),m.setTranslate()),y&&(t.isElement&&(r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-next"),r.innerHTML=t.hostEl.constructor.nextButtonSvg,r.part.add("button-next"),t.el.appendChild(r)),n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-prev"),n.innerHTML=t.hostEl.constructor.prevButtonSvg,n.part.add("button-prev"),t.el.appendChild(n))),r&&(p.navigation.nextEl=r),n&&(p.navigation.prevEl=n),u.init(),u.update()),a.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),a.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),a.includes("direction")&&t.changeDirection(i.direction,!1),(x||S)&&t.loopDestroy(),(E||S)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[ve(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return he.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}he.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(Me.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class Ce extends Ee{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(Te(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{he.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",Me),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",Ce))}(); +//# sourceMappingURL=swiper-element-bundle.min.js.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element-bundle.min.js.map b/node/node_modules/swiper/swiper-element-bundle.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..f7a272276621055530083909a7e47de27fe8c323 --- /dev/null +++ b/node/node_modules/swiper/swiper-element-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","push","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","handleFocus","isActive","isVisible","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","onVisibilityChange","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","r","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element-bundle.min.mjs b/node/node_modules/swiper/swiper-element-bundle.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..9c203962ad4be186c9343305be1a57997669bc23 --- /dev/null +++ b/node/node_modules/swiper/swiper-element-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import"./swiper-bundle.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{S as Swiper}from"./shared/swiper-core.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,i)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(i),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=i,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,i=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=i.length?Math.max(...i)+1:0,this.rendered)if(this.slideSlots>e)for(let i=e;i=0;i-=1)i>this.slideSlots&&e[i].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=e,this.shadowRoot.appendChild(i)}));const i=document.createElement("div");i.classList.add("swiper"),i.part="container",i.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,i)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(i),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:i,passedParams:t}=getParams(this);this.swiperParams=i,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...i.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...i,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const s=i.eventsPrefix?`${i.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(i){this.passedParams||(this.passedParams={}),this.passedParams[e]=i,this.initialized&&this.updateSwiperOnPropChange(e,i)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element-bundle.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element-bundle.min.mjs.map b/node/node_modules/swiper/swiper-element-bundle.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..04551bb8a0e1c4aee19cfee22c94d1fe2908aaa6 --- /dev/null +++ b/node/node_modules/swiper/swiper-element-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.mjs.mjs","names":["paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","Swiper","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","observeSlideChildren","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element-bundle.mjs b/node/node_modules/swiper/swiper-element-bundle.mjs new file mode 100644 index 0000000000000000000000000000000000000000..eada2254a779473825c0a87e299af73149aac259 --- /dev/null +++ b/node/node_modules/swiper/swiper-element-bundle.mjs @@ -0,0 +1,287 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import './swiper-bundle.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { S as Swiper } from './shared/swiper-core.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/node/node_modules/swiper/swiper-element.d.ts b/node/node_modules/swiper/swiper-element.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cb018c8c7b8b2f93fffc52b066478760ded67116 --- /dev/null +++ b/node/node_modules/swiper/swiper-element.d.ts @@ -0,0 +1,444 @@ +// @ts-ignore +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const register: () => void; + +// prettier-ignore +interface SwiperContainerEventMap extends Omit { + /** + * Event will be fired in when autoplay started + */ + autoplaystart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when autoplay stopped + */ + autoplaystop: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay pause + */ + autoplaypause: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay resume + */ + autoplayresume: CustomEvent<[swiper: Swiper]>; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplaytimeleft: CustomEvent<[swiper: Swiper, timeLeft: number, percentage: number]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on window hash change + */ + hashchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper updates the hash + */ + hashset: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: Swiper, event: WheelEvent]>;/** + * Event will be fired on key press + */ + keypress: CustomEvent<[swiper: Swiper, keyCode: string]>;/** + * Event will be fired after pagination rendered + */ + paginationrender: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationupdate: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationhide: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on pagination show + */ + paginationshow: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbardragstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbardragmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbardragend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on navigation hide + */ + navigationhide: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation show + */ + navigationshow: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation prev button click + */ + navigationprev: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation next button click + */ + navigationnext: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on zoom change + */ + zoomchange: CustomEvent<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: CustomEvent<[false, + * // other parameters + * }]>; + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: CustomEvent<[{ + * init: function { + * // do something + * }, + * } + * })]>; + * ``` + */ + init: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforedestroy: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesupdated: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when currently active slide is changed + */ + slidechange: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slidechangetransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slidechangetransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slidenexttransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slidenexttransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slideprevtransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slideprevtransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after transition. + */ + transitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchmoveopposite: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + slidermove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubletap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: Swiper, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachbeginning: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + settranslate: CustomEvent<[swiper: Swiper, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + settransition: CustomEvent<[swiper: Swiper, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerupdate: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeloopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after "loop fix" + */ + loopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: Swiper, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + + + /** + * Event will fired on active index change + */ + activeindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on snap index change + */ + snapindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on real index change + */ + realindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right after initialization + */ + afterinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right before initialization + */ + beforeinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before resize handler + */ + beforeresize: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before slide change transition start + */ + beforeslidechangestart: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before transition start + */ + beforetransitionstart: CustomEvent<[swiper: Swiper, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changedirection: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleclick: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on momentum bounce + */ + momentumbounce: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideresettransitionstart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideresettransitionend: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired with first touch/drag move + */ + sliderfirstmove: CustomEvent<[swiper: Swiper, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slideslengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when slides grid has changed + */ + slidesgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when snap grid has changed + */ + snapgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: Swiper]>; + +} + +interface SwiperContainer extends HTMLElement {} +interface SwiperContainer extends SwiperOptions { + swiper: Swiper; + initialize: () => void; + injectStyles: string[]; + injectStylesUrls: string[]; + eventsPrefix: string; + addEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +interface SwiperSlide extends HTMLElement { + lazy: string | boolean; +} + +declare global { + interface HTMLElementTagNameMap { + 'swiper-container': SwiperContainer; + 'swiper-slide': SwiperSlide; + } +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/node/node_modules/swiper/swiper-element.js b/node/node_modules/swiper/swiper-element.js new file mode 100644 index 0000000000000000000000000000000000000000..44bfe4d7a78baa95b07de850cbe6df74731ed18b --- /dev/null +++ b/node/node_modules/swiper/swiper-element.js @@ -0,0 +1,4907 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + 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')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + /* underscore in name -> watch for changes */ + const 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', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/node/node_modules/swiper/swiper-element.min.js b/node/node_modules/swiper/swiper-element.min.js new file mode 100644 index 0000000000000000000000000000000000000000..3d6360e91544d067c0f803918ad150424c3d4563 --- /dev/null +++ b/node/node_modules/swiper/swiper-element.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let b,S,T;function y(){return b||(b=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),b}function x(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),S}function E(){return T||(T=function(){const e=n(),t=x();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),T}var C={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const P=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},M=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&M(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&M(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const M=s.grid&&s.grid.rows>1&&e.grid;let k;M?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+S:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(x||0)})),e-=x,e{f[s]=e-t})),m.forEach(((e,s)=>{m[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==T&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),f&&i[e].classList.add(s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(l.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let b;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),b=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,b),0===t?n.transitionEnd(s,b):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,b))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this;if(!i.destroyed)return i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var _={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let C=0,P=0;const M=b?Math.ceil(d.length/h.grid.rows):d.length,k=(b?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(k=0;t-=1)d[t].column===e&&S.push(t)}else S.push(M-t-1)}}else if(k+v>M-w){P=Math.max(k-(M-2*w),g);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():b&&(S.length>0&&E||T.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(S.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+Math.ceil(C),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=b?S.length/h.grid.rows:S.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(T.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-P]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-P,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=b?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function A(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function G(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void A(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!A(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function D(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const b=s.params.loop&&!n.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&S&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&b&&S&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let T=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(b&&S&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(T=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(b&&S&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function N(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,b=null;n.rewind&&(t.isBeginning?b=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const S=(f-c[v])/g,T=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(S>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+T):t.slideTo(v)),"prev"===t.swipeDirection&&(S>1-n.longSwipesRatio?t.slideTo(v+T):null!==b&&S<0&&Math.abs(S)>n.longSwipesRatio?t.slideTo(b):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+T):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+T),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:v))}}function V(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function B(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function $(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function F(e){const t=this;P(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const R=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",V,!0):e[c]("observerUpdate",V,!0),n[d]("load",e.onLoad,{capture:!0})};const H=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function q(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const Y={eventsEmitter:C,update:L,translate:z,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),I({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),I({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:O,loop:_,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=G.bind(e),e.onTouchMove=D.bind(e),e.onTouchEnd=N.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=$.bind(e)),e.onClick=B.bind(e),e.onLoad=F.bind(e),R(e,"on")},detachEvents:function(){R(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=H(e,i),d=H(e,o),p=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u),f=i.loop;u&&s&&e.changeDirection(),c(e.params,o);const m=e.params.enabled,v=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(h?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&v?(e.loopCreate(t),e.updateSlides()):f&&!v&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},X={};class U{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new U(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:q(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},W,l);return o.params=c({},d,X,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&P(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?P(t,e):e.addEventListener("load",(e=>{P(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(X,e)}static get extendedDefaults(){return X}static get defaults(){return W}static installModule(e){U.prototype.__modules__||(U.prototype.__modules__=[]);const t=U.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>U.installModule(e))),U):(U.installModule(e),U)}}Object.keys(Y).forEach((e=>{Object.keys(Y[e]).forEach((t=>{U.prototype[t]=Y[e][t]}))})),U.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]);const K=["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","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Z(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function J(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:Z(t[s])&&Z(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:J(e[s],t[s]):e[s]=t[s]}))}function Q(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const ee=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},te=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function se(e,t,s){const i={},r={};J(i,W);const n=[...K,"on"],a=n.map((e=>e.replace(/_/,"")));n.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])}));const o=[...e.attributes];return"string"==typeof t&&void 0!==s&&o.push({name:t,value:Z(s)?{...s}:s}),o.forEach((e=>{const t=te.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=Q(t),i=Q(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),r[s][i]=ee(e.value)}else{const t=Q(e.name);if(!a.includes(t))return;const s=ee(e.value);r[t]&&te.includes(e.name)&&!Z(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}})),J(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const ie=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}";const re="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,ne='\n ',ae=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class oe extends re{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return ne}static get prevButtonSvg(){return ne.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ie,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&ae(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=se(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new U(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:h,virtual:f,thumbs:m}=t;let v,g,w,b,S,T,y,x;r.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(v=!0),r.includes("controller")&&i.controller&&i.controller.control&&c.controller&&!c.controller.control&&(g=!0),r.includes("pagination")&&i.pagination&&(i.pagination.el||l)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),r.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||o)&&(c.scrollbar||!1===c.scrollbar)&&h&&!h.el&&(b=!0),r.includes("navigation")&&i.navigation&&(i.navigation.prevEl||a)&&(i.navigation.nextEl||n)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const E=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};r.includes("loop")&&t.isElement&&(c.loop&&!i.loop?T=!0:!c.loop&&i.loop?y=!0:x=!0),d.forEach((e=>{if(Z(c[e])&&Z(i[e]))Object.assign(c[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||E(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=i[e]:!1===t&&E(e)}})),d.includes("controller")&&!g&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),r.includes("children")&&s&&f&&c.virtual.enabled?(f.slides=s,f.update(!0)):r.includes("virtual")&&f&&c.virtual.enabled&&(s&&(f.slides=s),f.update(!0)),r.includes("children")&&s&&c.loop&&(x=!0),v&&m.init()&&m.update(!0);g&&(t.controller.control=c.controller.control),w&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(c.pagination.el=l),p.init(),p.render(),p.update()),b&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-scrollbar"),o.part.add("scrollbar"),t.el.appendChild(o)),o&&(c.scrollbar.el=o),h.init(),h.updateSize(),h.setTranslate()),S&&(t.isElement&&(n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-next"),n.innerHTML=t.hostEl.constructor.nextButtonSvg,n.part.add("button-next"),t.el.appendChild(n)),a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-button-prev"),a.innerHTML=t.hostEl.constructor.prevButtonSvg,a.part.add("button-prev"),t.el.appendChild(a))),n&&(c.navigation.nextEl=n),a&&(c.navigation.prevEl=a),u.init(),u.update()),r.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),r.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),r.includes("direction")&&t.changeDirection(i.direction,!1),(T||x)&&t.loopDestroy(),(y||x)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[Q(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return K.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}K.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(oe.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class le extends re{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(ae(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{K.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",oe),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",le))}(); +//# sourceMappingURL=swiper-element.min.js.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element.min.js.map b/node/node_modules/swiper/swiper-element.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..7fd99e4c73d990deb91eab8eb9437a3f8f0db722 --- /dev/null +++ b/node/node_modules/swiper/swiper-element.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","scrollbar","pagination","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","textContent","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","render","localStyles","linkEl","part","innerHTML","needsPagination","needsScrollbar","initialize","_this","detail","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","defineProperty","configurable","get","set","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element.min.mjs b/node/node_modules/swiper/swiper-element.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..aeba46394bba0eb890c2ad853bf92bcc3d9fedef --- /dev/null +++ b/node/node_modules/swiper/swiper-element.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,s)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(s),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=s,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,s=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=s.length?Math.max(...s)+1:0,this.rendered)if(this.slideSlots>e)for(let s=e;s=0;s-=1)s>this.slideSlots&&e[s].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const s=document.createElement("link");s.rel="stylesheet",s.href=e,this.shadowRoot.appendChild(s)}));const s=document.createElement("div");s.classList.add("swiper"),s.part="container",s.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,s)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(s),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:s,passedParams:t}=getParams(this);this.swiperParams=s,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...s.virtual?{}:{observer:!0,observeSlideChildren:this.slideSlots>0},...s,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const i=s.eventsPrefix?`${s.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(s){this.passedParams||(this.passedParams={}),this.passedParams[e]=s,this.initialized&&this.updateSwiperOnPropChange(e,s)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element.min.mjs.map b/node/node_modules/swiper/swiper-element.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..b4913bccb42f69f59409ef90f7036fdac8e6020e --- /dev/null +++ b/node/node_modules/swiper/swiper-element.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.mjs.mjs","names":["Swiper","paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","observeSlideChildren","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper-element.mjs b/node/node_modules/swiper/swiper-element.mjs new file mode 100644 index 0000000000000000000000000000000000000000..6308534376f982422aa6541c9e9c14cdb7e502f9 --- /dev/null +++ b/node/node_modules/swiper/swiper-element.mjs @@ -0,0 +1,286 @@ +/** + * Swiper Custom Element 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true, + observeSlideChildren: this.slideSlots > 0 + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/node/node_modules/swiper/swiper-react.d.ts b/node/node_modules/swiper/swiper-react.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..19739c9aff64fbf3f68c851fb76ab76c88518acf --- /dev/null +++ b/node/node_modules/swiper/swiper-react.d.ts @@ -0,0 +1,501 @@ +import * as React from 'react'; + +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +type SwiperProps = Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + | 'onResize' +> & + SwiperOptions & { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + onAutoplayTimeLeft?: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + onSlidesUpdated?: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + + }; + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +type SwiperSlideProps = Omit, 'children'> & { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Adds lazy preloader to the slide + * + * @default false + */ + lazy?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +}; + +interface SwiperRef extends React.HTMLAttributes { + swiper: SwiperClass; +} + +declare const Swiper: React.FunctionComponent< + React.RefAttributes & React.PropsWithChildren +>; +declare const SwiperSlide: React.FunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { + Swiper, + SwiperSlide, + SwiperProps, + SwiperSlideProps, + SwiperRef, + useSwiper, + useSwiperSlide, + SwiperClass, +}; diff --git a/node/node_modules/swiper/swiper-react.mjs b/node/node_modules/swiper/swiper-react.mjs new file mode 100644 index 0000000000000000000000000000000000000000..c3fc047f129159c8cc22adaa3ac514bf383fc39f --- /dev/null +++ b/node/node_modules/swiper/swiper-react.mjs @@ -0,0 +1,394 @@ +/** + * Swiper React 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs'; +import { 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'; + +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} + +function isChildSwiperSlide(child) { + return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); +} +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiper.params.loop ? -slides.length : 0; + const loopTo = swiper.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style, + key: child.props.virtualIndex || child.key || `slide-${index}` + }); + }); +} + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +const SwiperSlideContext = /*#__PURE__*/createContext(null); +const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +const SwiperContext = /*#__PURE__*/createContext(null); +const useSwiper = () => { + return useContext(SwiperContext); +}; + +const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) { + let { + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest + } = _temp === void 0 ? {} : _temp; + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + }); + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.current = new Swiper$1(passParams); + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + if (!swiperElRef.current) { + initSwiper(); + } + + // Listen for breakpoints change + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); + + // set initialized flag + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); + + // mount swiper + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + if (!swiperElRef.current) return; + if (swiperRef.current.destroyed) { + initSwiper(); + } + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current); + // eslint-disable-next-line + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); + + // watch for params change + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + return () => { + detachEvents(); + }; + }); + + // update on virtual update + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); + + // bypass swiper instance to slides + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + return slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current, + swiperSlideIndex: index + }); + }); + } + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: wrapperClass(swiperParams.wrapperClass) + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; + +const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) { + let { + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + lazy, + virtualIndex, + swiperSlideIndex, + ...rest + } = _temp === void 0 ? {} : _temp; + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + const [lazyLoaded, setLazyLoaded] = useState(false); + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + useIsomorphicLayoutEffect(() => { + if (typeof swiperSlideIndex !== 'undefined') { + slideElRef.current.swiperSlideIndex = swiperSlideIndex; + } + if (externalRef) { + externalRef.current = slideElRef.current; + } + if (!slideElRef.current || !swiper) { + return; + } + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + return; + } + swiper.on('_slideClass', updateClasses); + // eslint-disable-next-line + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 + }; + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + const onLoad = () => { + setLazyLoaded(true); + }; + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex, + onLoad: onLoad + }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))); +}); +SwiperSlide.displayName = 'SwiperSlide'; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/node/node_modules/swiper/swiper-vars.less b/node/node_modules/swiper/swiper-vars.less new file mode 100644 index 0000000000000000000000000000000000000000..a068f6d42eb01d8dea2eedd61b19d587475b4b08 --- /dev/null +++ b/node/node_modules/swiper/swiper-vars.less @@ -0,0 +1 @@ +@themeColor: #007aff; diff --git a/node/node_modules/swiper/swiper-vars.scss b/node/node_modules/swiper/swiper-vars.scss new file mode 100644 index 0000000000000000000000000000000000000000..819dec449a4fb2cf59db5ac8fb3c669baa0c450d --- /dev/null +++ b/node/node_modules/swiper/swiper-vars.scss @@ -0,0 +1 @@ +$themeColor: #007aff !default; diff --git a/node/node_modules/swiper/swiper-vue.d.ts b/node/node_modules/swiper/swiper-vue.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a42d418105a7fb4a1c622ba000ed68b33a884c10 --- /dev/null +++ b/node/node_modules/swiper/swiper-vue.d.ts @@ -0,0 +1,866 @@ +import type { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from './types/index.d.ts'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + oneWayMovement: { + type: PropType; + default: SwiperOptions['oneWayMovement']; + }; + swiperElementNodeName: { + type: PropType; + default: SwiperOptions['swiperElementNodeName']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: PropType; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAddBlankSlides: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopPreventsSliding: { type: BooleanConstructor; default: undefined }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideFullyVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloaderClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloadPrevNext: { + type: NumberConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + lazy: { type: BooleanConstructor; default: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/node/node_modules/swiper/swiper-vue.mjs b/node/node_modules/swiper/swiper-vue.mjs new file mode 100644 index 0000000000000000000000000000000000000000..ae77348507b0cdc82d33482d2571266389caae14 --- /dev/null +++ b/node/node_modules/swiper/swiper-vue.mjs @@ -0,0 +1,820 @@ +/** + * Swiper Vue 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +import { h, ref, onUpdated, provide, watch, nextTick, onMounted, onBeforeUnmount, onBeforeUpdate, computed, inject } from 'vue'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, a as getChangedParams, u as updateOnVirtualData, m as mountSwiper } from './shared/update-on-virtual-data.mjs'; +import { e as extend, u as updateSwiper, d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination } from './shared/update-swiper.mjs'; + +function getChildren(originalSlots, slidesRef, oldSlidesRef) { + if (originalSlots === void 0) { + originalSlots = {}; + } + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, slotName); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper')) { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; + const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + return h(slide.type, { + ...slide.props + }, slide.children); + }); +} + +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + oneWayMovement: { + type: Boolean, + default: undefined + }, + swiperElementNodeName: { + type: String, + default: 'SWIPER-CONTAINER' + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + spaceBetween: { + type: [Number, String], + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopPreventsSliding: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideFullyVisibleClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + lazyPreloaderClass: { + type: String, + default: undefined + }, + lazyPreloadPrevNext: { + type: Number, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'autoplayTimeLeft', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'breakpointsBase', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'init', 'keyPress', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slidesUpdated', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + setup(props, _ref) { + let { + slots: originalSlots, + emit + } = _ref; + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + swiperParams.onAny = function (event) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + emit(event, ...args); + }; + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + }); + + // init Swiper + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.value = new Swiper$1(passParams); + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } + // watch for params change + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); + + // update on virtual update + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); + + // mount swiper + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); + + // bypass swiper instance to slides + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + slides.forEach((slide, index) => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + slide.props.swiperSlideIndex = index; + }); + return slides; + } + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: wrapperClass(swiperParams.wrapperClass) + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } +}; + +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + swiperSlideIndex: { + type: Number, + default: undefined, + required: false + }, + zoom: { + type: Boolean, + default: undefined, + required: false + }, + lazy: { + type: Boolean, + default: false, + required: false + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + setup(props, _ref) { + let { + slots + } = _ref; + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + const lazyLoaded = ref(false); + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + onMounted(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + if (typeof props.swiperSlideIndex !== 'undefined') { + slideElRef.value.swiperSlideIndex = props.swiperSlideIndex; + } + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 + })); + provide('swiperSlide', slideData); + const onLoad = () => { + lazyLoaded.value = true; + }; + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': typeof props.virtualIndex === 'undefined' && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props.swiperSlideIndex : props.virtualIndex, + onLoadCapture: onLoad + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]) : [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]); + }; + } +}; + +const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +const useSwiper = () => { + return inject('swiper'); +}; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/node/node_modules/swiper/swiper.css b/node/node_modules/swiper/swiper.css new file mode 100644 index 0000000000000000000000000000000000000000..b7eaa0a02e82a7305af12c0ab63e793a7d499702 --- /dev/null +++ b/node/node_modules/swiper/swiper.css @@ -0,0 +1,228 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ diff --git a/node/node_modules/swiper/swiper.d.ts b/node/node_modules/swiper/swiper.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..07e4e502bba45c0634ebad42b88601ada1cc0115 --- /dev/null +++ b/node/node_modules/swiper/swiper.d.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import Swiper from './types/swiper-class.d.ts'; + +export default Swiper; +export { Swiper }; diff --git a/node/node_modules/swiper/swiper.js b/node/node_modules/swiper/swiper.js new file mode 100644 index 0000000000000000000000000000000000000000..a7134658129880896cabaf1d505bdd838edfb0d1 --- /dev/null +++ b/node/node_modules/swiper/swiper.js @@ -0,0 +1,4307 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + return [...element.children].filter(el => el.matches(selector)); + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + 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')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: typeof options.childList === 'undefined' ? true : options.childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + if (allSlidesSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + + // Visible Slides + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass); + }); + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + slides[i].classList.add(params.slideVisibleClass); + } + if (isFullyVisible) { + slides[i].classList.add(params.slideFullyVisibleClass); + } + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + }); + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + // Active classes + activeSlide.classList.add(params.slideActiveClass); + if (gridEnabled) { + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } else { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + if (nextSlide) { + nextSlide.classList.add(params.slideNextClass); + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + if (prevSlide) { + prevSlide.classList.add(params.slidePrevClass); + } + } + } + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial || swiper.destroyed) { + return false; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + 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)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!swiper.wrapperEl.contains(targetEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + el.removeAttribute('style'); + wrapperEl.removeAttribute('style'); + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + swiper.el.swiper = null; + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + return Swiper; + +})(); diff --git a/node/node_modules/swiper/swiper.less b/node/node_modules/swiper/swiper.less new file mode 100644 index 0000000000000000000000000000000000000000..32642248714855245d6162c60ca3246445e25130 --- /dev/null +++ b/node/node_modules/swiper/swiper.less @@ -0,0 +1,251 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +@themeColor: #007aff; + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ + +:root { + --swiper-theme-color: @themeColor; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/node/node_modules/swiper/swiper.min.css b/node/node_modules/swiper/swiper.min.css new file mode 100644 index 0000000000000000000000000000000000000000..94bcf7f9ac18ddd096fc5164df13b8441e34620d --- /dev/null +++ b/node/node_modules/swiper/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper.min.js b/node/node_modules/swiper/swiper.min.js new file mode 100644 index 0000000000000000000000000000000000000000..0dd98453ce69a038201bcdf08b8b6cae119efe6a --- /dev/null +++ b/node/node_modules/swiper/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,b;function x(){return S||(S=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function y(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=x(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),T}function E(){return b||(b=function(){const e=n(),t=y();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),b}var M={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const C=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},P=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},I=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&P(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&P(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?y=parseFloat(y.replace("%",""))/100*n:"string"==typeof y&&(y=parseFloat(y)),e.virtualSize=-y,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let I;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+y;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${y}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(y||0)})),e-=y;const t=e-n;f=f.map((e=>e<=0?-S:e>t?t+T:e))}if(s.centerInsufficientSlides){let e=0;if(g.forEach((t=>{e+=t+(y||0)})),e-=y,e{f[s]=e-t})),m.forEach(((e,s)=>{m[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{e.classList.remove(s.slideVisibleClass,s.slideFullyVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let o=s.spaceBetween;"string"==typeof o&&o.indexOf("%")>=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e];(u>=0&&u1&&h<=t.size||u<=0&&h>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),i[e].classList.add(s.slideVisibleClass)),f&&i[e].classList.add(s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(l.classList.add(s.slideActiveClass),a?(c&&c.classList.add(s.slideNextClass),d&&d.classList.add(s.slidePrevClass)):(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),c&&c.classList.add(s.slideNextClass),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]),d&&d.classList.add(s.slidePrevClass))),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&I(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let i=r.params.slidesPerView;"auto"===i?i=r.slidesPerViewDynamic():(i=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&i%2==0&&(i+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const i=this;if(!i.destroyed)return i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var z={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):x=n;const y="next"===i||!i,E="prev"===i||!i;let M=0,C=0;const P=S?Math.ceil(d.length/h.grid.rows):d.length,I=(S?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(I=0;t-=1)d[t].column===e&&T.push(t)}else T.push(P-t-1)}}else if(I+v>P-w){C=Math.max(I-(P-2*w),g);for(let e=0;e{e.column===t&&b.push(s)})):b.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),y&&b.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():S&&(T.length>0&&E||b.length>0&&y)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(T.length>0&&E){if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x+M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x+Math.ceil(M),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=S?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(b.length>0&&y)if(void 0===t){const e=l.slidesGrid[x],t=l.slidesGrid[x-C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(x-C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=S?b.length/h.grid.rows:b.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function G(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function D(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void G(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!t.wrapperEl.contains(p))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!G(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function _(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let b=!0,x=n.resistanceRatio;if(n.touchReleaseOnEdges&&(x=0),v>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**x))):v<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(f-c[v])/g,b=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+b):t.slideTo(v)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(v+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+b):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:v))}}function N(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function B(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function $(e){const t=this;C(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function H(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const R=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),n[d]("load",e.onLoad,{capture:!0})};const j=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function Y(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const q={eventsEmitter:M,update:L,translate:k,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),O({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),O({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:A,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=D.bind(e),e.onTouchMove=_.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=H.bind(e),t.cssMode&&(e.onScroll=B.bind(e)),e.onClick=F.bind(e),e.onLoad=$.bind(e),R(e,"on")},detachEvents:function(){R(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=j(e,i),d=j(e,o),p=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u),f=i.loop;u&&s&&e.changeDirection(),c(e.params,o);const m=e.params.enabled,v=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(h?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&v?(e.loopCreate(t),e.updateSlides()):f&&!v&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},X={};class U{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new U(i))})),e}const o=this;o.__swiper__=!0,o.support=x(),o.device=y({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:Y(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},W,l);return o.params=c({},d,X,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&C(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?C(t,e):e.addEventListener("load",(e=>{C(t,e.target)}))})),I(t),t.initialized=!0,I(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r.removeAttribute("style"),n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(X,e)}static get extendedDefaults(){return X}static get defaults(){return W}static installModule(e){U.prototype.__modules__||(U.prototype.__modules__=[]);const t=U.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>U.installModule(e))),U):(U.installModule(e),U)}}return Object.keys(q).forEach((e=>{Object.keys(q[e]).forEach((t=>{U.prototype[t]=q[e][t]}))})),U.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]),U}(); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper.min.js.map b/node/node_modules/swiper/swiper.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..33f2b9bac59ea96defa1f33f6c0f7b8d25b209c2 --- /dev/null +++ b/node/node_modules/swiper/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","processLazyPreloader","imageEl","slideEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","remove","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","push","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","contains","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","slideVisibleClass","slideFullyVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","slideActiveClass","slideNextClass","slidePrevClass","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","className","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parent","parentElement","elementParents","disconnect"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper.min.mjs b/node/node_modules/swiper/swiper.min.mjs new file mode 100644 index 0000000000000000000000000000000000000000..64c003bbb4b649e35991645a30e19fa00b46f772 --- /dev/null +++ b/node/node_modules/swiper/swiper.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +export{S as Swiper,S as default}from"./shared/swiper-core.min.mjs"; +//# sourceMappingURL=swiper.min.mjs.map \ No newline at end of file diff --git a/node/node_modules/swiper/swiper.min.mjs.map b/node/node_modules/swiper/swiper.min.mjs.map new file mode 100644 index 0000000000000000000000000000000000000000..6938270e5f0b22ceeaabc4d4401067603537f27f --- /dev/null +++ b/node/node_modules/swiper/swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.mjs.mjs","names":["S"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,YAAaA,iBAAoB"} \ No newline at end of file diff --git a/node/node_modules/swiper/swiper.mjs b/node/node_modules/swiper/swiper.mjs new file mode 100644 index 0000000000000000000000000000000000000000..fe886cae47d74ec792c19563e7ebc8d6e7dc5c72 --- /dev/null +++ b/node/node_modules/swiper/swiper.mjs @@ -0,0 +1,13 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +export { S as Swiper, S as default } from './shared/swiper-core.mjs'; diff --git a/node/node_modules/swiper/swiper.scss b/node/node_modules/swiper/swiper.scss new file mode 100644 index 0000000000000000000000000000000000000000..de5cb96b14e05eb4613910ac320fb7fc3321f3c7 --- /dev/null +++ b/node/node_modules/swiper/swiper.scss @@ -0,0 +1,252 @@ +/** + * Swiper 11.0.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: February 27, 2024 + */ + +@import 'swiper-vars.scss'; +@at-root { + @font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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') + format('woff'); + font-weight: 400; + font-style: normal; + } +} +@at-root { + :root { + --swiper-theme-color: #{$themeColor}; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ + } +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/node/node_modules/swiper/types/index.d.ts b/node/node_modules/swiper/types/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e6e0dc4dc0e53dd123db4379c1f76c6623b3d564 --- /dev/null +++ b/node/node_modules/swiper/types/index.d.ts @@ -0,0 +1,6 @@ +// @ts-nocheck +export * from './shared.d.ts'; +export { default as Swiper } from './swiper-class.d.ts'; +export * from './swiper-events.d.ts'; +export * from './swiper-options.d.ts'; +export * from './modules/public-api.d.ts'; diff --git a/node/node_modules/swiper/types/modules/a11y.d.ts b/node/node_modules/swiper/types/modules/a11y.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..134f158ff9dd77ed849c7d33ba390fdb7bfd0f00 --- /dev/null +++ b/node/node_modules/swiper/types/modules/a11y.d.ts @@ -0,0 +1,96 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; +} diff --git a/node/node_modules/swiper/types/modules/autoplay.d.ts b/node/node_modules/swiper/types/modules/autoplay.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4c87488bb5900deed352afbb10743925d39208e3 --- /dev/null +++ b/node/node_modules/swiper/types/modules/autoplay.d.ts @@ -0,0 +1,133 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Whether autoplay is paused + */ + paused: boolean; + + /** + * If autoplay is paused, it contains time left (in ms) before transition to next slide + */ + timeLeft: number; + + /** + * Pause autoplay + */ + pause(): void; + + /** + * Resume autoplay + */ + resume(): void; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: Swiper, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
+ * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on pointer (mouse) enter over Swiper container. + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/controller.d.ts b/node/node_modules/swiper/types/modules/controller.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cf61aef9b890a3f6871fb762341ccb8418ba1156 --- /dev/null +++ b/node/node_modules/swiper/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper. Also accepts string with CSS selector of Swiper element, or HTMLElement of Swiper element + */ + control?: Swiper | Swiper[] | string | HTMLElement | null; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/node/node_modules/swiper/types/modules/effect-cards.d.ts b/node/node_modules/swiper/types/modules/effect-cards.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9f688a4391e4ad7d4e8553d122f0a6b73fb1fe82 --- /dev/null +++ b/node/node_modules/swiper/types/modules/effect-cards.d.ts @@ -0,0 +1,33 @@ +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + + /** + * Rotate angle per slide (in degrees) + * + * @default 2 + */ + perSlideRotate?: number; + + /** + * Offset distance per slide (in px) + * + * @default 8 + */ + perSlideOffset?: number; +} diff --git a/node/node_modules/swiper/types/modules/effect-coverflow.d.ts b/node/node_modules/swiper/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..847201f7cd8787e6981a05213ab6adb48c608b14 --- /dev/null +++ b/node/node_modules/swiper/types/modules/effect-coverflow.d.ts @@ -0,0 +1,42 @@ +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides (in px) + * + * @default 0 + */ + stretch?: number; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; +} diff --git a/node/node_modules/swiper/types/modules/effect-creative.d.ts b/node/node_modules/swiper/types/modules/effect-creative.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..eba898731a1e424b2e01f5298961b3edcae5b379 --- /dev/null +++ b/node/node_modules/swiper/types/modules/effect-creative.d.ts @@ -0,0 +1,86 @@ +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/effect-cube.d.ts b/node/node_modules/swiper/types/modules/effect-cube.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c59535c5aa69182c55c2a3c3a722e96493b425d1 --- /dev/null +++ b/node/node_modules/swiper/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/node/node_modules/swiper/types/modules/effect-fade.d.ts b/node/node_modules/swiper/types/modules/effect-fade.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1d3123c2039449cd2d4910f7e83f1877535d36c0 --- /dev/null +++ b/node/node_modules/swiper/types/modules/effect-fade.d.ts @@ -0,0 +1,12 @@ +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/effect-flip.d.ts b/node/node_modules/swiper/types/modules/effect-flip.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..aa672c3515d078c603fbf54f6a3d94cfb5e23267 --- /dev/null +++ b/node/node_modules/swiper/types/modules/effect-flip.d.ts @@ -0,0 +1,18 @@ +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/free-mode.d.ts b/node/node_modules/swiper/types/modules/free-mode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9488642b4d116387cd2d3261086b0524769716b6 --- /dev/null +++ b/node/node_modules/swiper/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/grid.d.ts b/node/node_modules/swiper/types/modules/grid.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..070b14a2d879d1af8e4d25e7a01cb45e4f1fbc54 --- /dev/null +++ b/node/node_modules/swiper/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @note if used with loop mode make sure number of slides is even specified in loop mode requirements, or enable `loopAddBlankSlides` parameter + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/node/node_modules/swiper/types/modules/hash-navigation.d.ts b/node/node_modules/swiper/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8b6edfe3f2ff751976d97d4390b6a8c9ebe59f9a --- /dev/null +++ b/node/node_modules/swiper/types/modules/hash-navigation.d.ts @@ -0,0 +1,38 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Designed to be used with Virtual slides when it is impossible to find slide in DOM by hash (e.g. not yet rendered) + * + */ + getSlideIndex?: (swiper: Swiper, hash: string) => number; +} diff --git a/node/node_modules/swiper/types/modules/history.d.ts b/node/node_modules/swiper/types/modules/history.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3cea81edbd70b76ab5893320bc2252118982683 --- /dev/null +++ b/node/node_modules/swiper/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/index.d.ts b/node/node_modules/swiper/types/modules/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d0a1b9b42187d0e27921ce91886e9783a8f85fd3 --- /dev/null +++ b/node/node_modules/swiper/types/modules/index.d.ts @@ -0,0 +1,53 @@ +import type { SwiperModule } from '../shared.d.ts'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Lazy: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export { + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Lazy, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/node/node_modules/swiper/types/modules/keyboard.d.ts b/node/node_modules/swiper/types/modules/keyboard.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d38dd8d47687b7d733a2b6343b131a93950b5251 --- /dev/null +++ b/node/node_modules/swiper/types/modules/keyboard.d.ts @@ -0,0 +1,46 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/manipulation.d.ts b/node/node_modules/swiper/types/modules/manipulation.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3366eaf031b084b45b475cf1c802a9906fdabc43 --- /dev/null +++ b/node/node_modules/swiper/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
Slide 10"
') + * + * appendSlide([ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
Slide 0"
') + * + * prependSlide([ + * '
Slide 1"
', + * '
Slide 2"
' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
Slide 10"
') + * + * addSlide(1, [ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/node/node_modules/swiper/types/modules/mousewheel.d.ts b/node/node_modules/swiper/types/modules/mousewheel.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4f2bb8fa9740b4995e1f88b3eb9d367a5f2d0305 --- /dev/null +++ b/node/node_modules/swiper/types/modules/mousewheel.d.ts @@ -0,0 +1,86 @@ +import type Swiper from '../swiper-class.d.ts'; +import type { CSSSelector } from '../shared.d.ts'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to enable mousewheel control + * + * @default false + */ + enabled?: boolean; + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; + + /** + * Scrolling on elements with this class will be ignored + * + * @default 'swiper-no-mousewheel' + */ + noMousewheelClass?: string; +} diff --git a/node/node_modules/swiper/types/modules/navigation.d.ts b/node/node_modules/swiper/types/modules/navigation.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3d5c6e681afdc755669c22f3f07668e707748a36 --- /dev/null +++ b/node/node_modules/swiper/types/modules/navigation.d.ts @@ -0,0 +1,105 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/node/node_modules/swiper/types/modules/pagination.d.ts b/node/node_modules/swiper/types/modules/pagination.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5af6341fe4431f44dd13f682f774e0c091ba6f4a --- /dev/null +++ b/node/node_modules/swiper/types/modules/pagination.d.ts @@ -0,0 +1,295 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Array of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: HTMLElement[]; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * } + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => string; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * } + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => string; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * } + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => string; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * } + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => string; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/node/node_modules/swiper/types/modules/parallax.d.ts b/node/node_modules/swiper/types/modules/parallax.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..27e8e6fc6b78e3ed3260d856bbbca20433642f5d --- /dev/null +++ b/node/node_modules/swiper/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/public-api.d.ts b/node/node_modules/swiper/types/modules/public-api.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2553f467d33ab87e0a127de74872cb2e4e0377d4 --- /dev/null +++ b/node/node_modules/swiper/types/modules/public-api.d.ts @@ -0,0 +1,23 @@ +export type * from './a11y.d.ts'; +export type * from './autoplay.d.ts'; +export type * from './controller.d.ts'; +export type * from './effect-coverflow.d.ts'; +export type * from './effect-cube.d.ts'; +export type * from './effect-fade.d.ts'; +export type * from './effect-flip.d.ts'; +export type * from './effect-creative.d.ts'; +export type * from './effect-cards.d.ts'; +export type * from './hash-navigation.d.ts'; +export type * from './history.d.ts'; +export type * from './keyboard.d.ts'; +export type * from './mousewheel.d.ts'; +export type * from './navigation.d.ts'; +export type * from './pagination.d.ts'; +export type * from './parallax.d.ts'; +export type * from './scrollbar.d.ts'; +export type * from './thumbs.d.ts'; +export type * from './virtual.d.ts'; +export type * from './zoom.d.ts'; +export type * from './free-mode.d.ts'; +export type * from './grid.d.ts'; +export type * from './manipulation.d.ts'; diff --git a/node/node_modules/swiper/types/modules/scrollbar.d.ts b/node/node_modules/swiper/types/modules/scrollbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e04d952b55d6f6164ed9d091d06f580957ecd5c --- /dev/null +++ b/node/node_modules/swiper/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/node/node_modules/swiper/types/modules/thumbs.d.ts b/node/node_modules/swiper/types/modules/thumbs.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..19d5045529719cb3f6b4b62a8c27b5f985e447fc --- /dev/null +++ b/node/node_modules/swiper/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/node/node_modules/swiper/types/modules/virtual.d.ts b/node/node_modules/swiper/types/modules/virtual.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bcf27bd60e88edbf3dcfef4a09f978f4ac49c933 --- /dev/null +++ b/node/node_modules/swiper/types/modules/virtual.d.ts @@ -0,0 +1,135 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: T[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: T[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: T[]; + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outer HTML of the swiper slide or slide HTML element. + * + * @default null + */ + renderSlide?: (slide: T, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/node/node_modules/swiper/types/modules/zoom.d.ts b/node/node_modules/swiper/types/modules/zoom.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..658f5baef8044cb62a98058a13d0179fab16ac24 --- /dev/null +++ b/node/node_modules/swiper/types/modules/zoom.d.ts @@ -0,0 +1,85 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide. Optionally accepts custom zoom ratio + */ + in(ratio?: number): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(event?: MouseEvent | TouchEvent | PointerEvent): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * When set to true, the image will not be scaled past 100% of its original size + * + * @default false + */ + limitToOriginalSize?: boolean; + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/node/node_modules/swiper/types/shared.d.ts b/node/node_modules/swiper/types/shared.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4c28f9654a485671348b992eb79aacae21216ebd --- /dev/null +++ b/node/node_modules/swiper/types/shared.d.ts @@ -0,0 +1,5 @@ +export interface CSSSelector extends String {} + +export interface SwiperModule { + name: string; +} diff --git a/node/node_modules/swiper/types/swiper-class.d.ts b/node/node_modules/swiper/types/swiper-class.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..11e521834822962158dbef1f96ef1e38e68e5646 --- /dev/null +++ b/node/node_modules/swiper/types/swiper-class.d.ts @@ -0,0 +1,492 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +import type { A11yMethods } from './modules/a11y.d.ts'; +import type { AutoplayMethods } from './modules/autoplay.d.ts'; +import type { ControllerMethods } from './modules/controller.d.ts'; +import type { CoverflowEffectMethods } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectMethods } from './modules/effect-cube.d.ts'; +import type { FadeEffectMethods } from './modules/effect-fade.d.ts'; +import type { FlipEffectMethods } from './modules/effect-flip.d.ts'; +import type { CreativeEffectMethods } from './modules/effect-creative.d.ts'; +import type { CardsEffectMethods } from './modules/effect-cards.d.ts'; +import type { HashNavigationMethods } from './modules/hash-navigation.d.ts'; +import type { HistoryMethods } from './modules/history.d.ts'; +import type { KeyboardMethods } from './modules/keyboard.d.ts'; +import type { MousewheelMethods } from './modules/mousewheel.d.ts'; +import type { NavigationMethods } from './modules/navigation.d.ts'; +import type { PaginationMethods } from './modules/pagination.d.ts'; +import type { ParallaxMethods } from './modules/parallax.d.ts'; +import type { ScrollbarMethods } from './modules/scrollbar.d.ts'; +import type { ThumbsMethods } from './modules/thumbs.d.ts'; +import type { VirtualMethods } from './modules/virtual.d.ts'; +import type { ZoomMethods } from './modules/zoom.d.ts'; +import type { FreeModeMethods } from './modules/free-mode.d.ts'; +import type { ManipulationMethods } from './modules/manipulation.d.ts'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Array of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: HTMLElement[]; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering rearranged slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if slide is "locked" (by `watchOverflow`) and slides can not be, e.g. when amount of slides is less that slides per view + */ + isLocked: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * Direction of sliding + */ + swipeDirection: 'prev' | 'next'; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): void; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): void; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): void; + + /** + * Get dynamically calculated amount of slides per view, useful only when slidesPerView set to `auto` + * + */ + slidesPerViewDynamic(): number; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/node/node_modules/swiper/types/swiper-events.d.ts b/node/node_modules/swiper/types/swiper-events.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e6aaecfb4b20f9326d27a4c62c16932c2e56bcf --- /dev/null +++ b/node/node_modules/swiper/types/swiper-events.d.ts @@ -0,0 +1,359 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type Swiper from './swiper-class.d.ts'; + +import type { A11yEvents } from './modules/a11y.d.ts'; +import type { AutoplayEvents } from './modules/autoplay.d.ts'; +import type { ControllerEvents } from './modules/controller.d.ts'; +import type { CoverflowEffectEvents } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectEvents } from './modules/effect-cube.d.ts'; +import type { FadeEffectEvents } from './modules/effect-fade.d.ts'; +import type { FlipEffectEvents } from './modules/effect-flip.d.ts'; +import type { CreativeEffectEvents } from './modules/effect-creative.d.ts'; +import type { CardsEffectEvents } from './modules/effect-cards.d.ts'; +import type { HashNavigationEvents } from './modules/hash-navigation.d.ts'; +import type { HistoryEvents } from './modules/history.d.ts'; +import type { KeyboardEvents } from './modules/keyboard.d.ts'; +import type { MousewheelEvents } from './modules/mousewheel.d.ts'; +import type { NavigationEvents } from './modules/navigation.d.ts'; +import type { PaginationEvents } from './modules/pagination.d.ts'; +import type { ParallaxEvents } from './modules/parallax.d.ts'; +import type { ScrollbarEvents } from './modules/scrollbar.d.ts'; +import type { ThumbsEvents } from './modules/thumbs.d.ts'; +import type { VirtualEvents } from './modules/virtual.d.ts'; +import type { ZoomEvents } from './modules/zoom.d.ts'; +import type { FreeModeEvents } from './modules/free-mode.d.ts'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: Swiper) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/node/node_modules/swiper/types/swiper-options.d.ts b/node/node_modules/swiper/types/swiper-options.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d1a2655a3909405f112f2995f38f5509549da15f --- /dev/null +++ b/node/node_modules/swiper/types/swiper-options.d.ts @@ -0,0 +1,1217 @@ +import type { A11yOptions } from './modules/a11y.d.ts'; +import type { AutoplayOptions } from './modules/autoplay.d.ts'; +import type { ControllerOptions } from './modules/controller.d.ts'; +import type { CoverflowEffectOptions } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectOptions } from './modules/effect-cube.d.ts'; +import type { FadeEffectOptions } from './modules/effect-fade.d.ts'; +import type { FlipEffectOptions } from './modules/effect-flip.d.ts'; +import type { CreativeEffectOptions } from './modules/effect-creative.d.ts'; +import type { CardsEffectOptions } from './modules/effect-cards.d.ts'; +import type { HashNavigationOptions } from './modules/hash-navigation.d.ts'; +import type { HistoryOptions } from './modules/history.d.ts'; +import type { KeyboardOptions } from './modules/keyboard.d.ts'; +import type { MousewheelOptions } from './modules/mousewheel.d.ts'; +import type { NavigationOptions } from './modules/navigation.d.ts'; +import type { PaginationOptions } from './modules/pagination.d.ts'; +import type { ParallaxOptions } from './modules/parallax.d.ts'; +import type { ScrollbarOptions } from './modules/scrollbar.d.ts'; +import type { ThumbsOptions } from './modules/thumbs.d.ts'; +import type { VirtualOptions } from './modules/virtual.d.ts'; +import type { ZoomOptions } from './modules/zoom.d.ts'; +import type { FreeModeOptions } from './modules/free-mode.d.ts'; +import type { GridOptions } from './modules/grid.d.ts'; + +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper from 'swiper'; + * import { Navigation, Pagination } from 'swiper/modules'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Inject text styles to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStyles?: string[]; + /** + * Inject styles ``s to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStylesUrls?: string[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * When enabled, will swipe slides only forward (one-way) regardless of swipe direction + * + * @default false + */ + + oneWayMovement?: boolean; + + /** + * The name of the swiper element node name; used for detecting web component rendering + * + * @default 'SWIPER-CONTAINER' + */ + swiperElementNodeName?: string; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * Event name prefix for all DOM events emitted by Swiper Element (web component) + * + * @default `swiper` + */ + eventsPrefix?: string; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'` or `'creative'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | string; + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube effect + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * + * In case if you use it with other effects, especially 3D effects, it is required to wrap slide's content with `
` element. And if you use any custom styles on slides (like background colors, border radius, border, etc.), they should be set on `swiper-slide-transform` element instead. + * + * @example + * ```html + *
+ *
+ *
+ * + *
+ * ... slide content ... + *
+ *
+ * ... + *
+ *
+ * + * ``` + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number | string; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 5 + */ + threshold?: number; + + /** + * If disabled, `pointerdown` event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer (touch) events. + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer events. Also `threshold` parameter must be set to `0` + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works (it will rearrange slides), total number of slides must be: + * + * - more than or equal to `slidesPerView` + `slidesPerGroup` + * - even to `slidesPerGroup` (or use `loopAddBlankSlides` parameter) + * - even to `grid.rows` (or use `loopAddBlankSlides` parameter) + * + * @default false + * + */ + loop?: boolean; + + /** + * Automatically adds blank slides if you use Grid or `slidesPerGroup` and the total amount of slides is not even to `slidesPerGroup` or to `grid.rows` + * + * + * @default true + * + */ + loopAddBlankSlides?: boolean; + + /** + * Allows to increase amount of looped slides + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If enabled then slideNext/Prev will do nothing while slider is animating in loop mode + * + * @default true + */ + loopPreventsSliding?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which do not require different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + */ + breakpointsBase?: string; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of currently/partially visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of fully (when whole slide is in the viewport) visible slide + * + * @default 'swiper-slide-fully-visible' + * + * @note Not supported in Swiper React/Vue + */ + slideFullyVisibleClass?: string; + + /** + * CSS class name of the blank slide added by the loop mode (when `loopAddBlankSlides` is enabled) + * + * @default 'swiper-slide-blank' + * + * @note Not supported in Swiper React/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + * + */ + wrapperClass?: string; + + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + lazyPreloaderClass?: string; + + /** + * Number of next and previous slides to preload. Only applicable if using lazy loading. + * + * @default 0 + */ + lazyPreloadPrevNext?: number; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
+ * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/node/package-lock.json b/node/package-lock.json index bb8faa7f04978b088dc90b27094a9fc2584d7967..be0de483f0fedf50ddee6a7fbaed112ffffff3b6 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -14,10 +14,16 @@ "express": "~4.16.1", "http-errors": "~1.6.3", "jade": "~1.11.0", +<<<<<<< HEAD "jsonwebtoken": "^9.0.2", "jws": "^4.0.0", "mongoose": "^8.2.0", "morgan": "~1.9.1" +======= + "mongoose": "^8.2.0", + "morgan": "~1.9.1", + "swiper": "^11.0.7" +>>>>>>> d60373f (lws) } }, "node_modules/@mongodb-js/saslprep": { @@ -142,11 +148,14 @@ "node": ">=16.20.1" } }, +<<<<<<< HEAD "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, +======= +>>>>>>> d60373f (lws) "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", @@ -334,6 +343,7 @@ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.0.4.tgz", "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" }, +<<<<<<< HEAD "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -342,6 +352,8 @@ "safe-buffer": "^5.0.1" } }, +======= +>>>>>>> d60373f (lws) "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -484,6 +496,30 @@ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, +<<<<<<< HEAD +======= + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "optional": true, + "peer": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "optional": true, + "peer": true + }, +>>>>>>> d60373f (lws) "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -523,6 +559,7 @@ "jade": "bin/jade.js" } }, +<<<<<<< HEAD "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmmirror.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -567,6 +604,14 @@ "version": "2.1.3", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" +======= + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "optional": true, + "peer": true +>>>>>>> d60373f (lws) }, "node_modules/jstransformer": { "version": "0.0.2", @@ -577,6 +622,7 @@ "promise": "^6.0.1" } }, +<<<<<<< HEAD "node_modules/jwa": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/jwa/-/jwa-2.0.0.tgz", @@ -596,6 +642,8 @@ "safe-buffer": "^5.0.1" } }, +======= +>>>>>>> d60373f (lws) "node_modules/kareem": { "version": "2.5.1", "resolved": "https://registry.npmmirror.com/kareem/-/kareem-2.5.1.tgz", @@ -623,6 +671,7 @@ "node": ">=0.10.0" } }, +<<<<<<< HEAD "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -658,6 +707,8 @@ "resolved": "https://registry.npmmirror.com/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, +======= +>>>>>>> d60373f (lws) "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/longest/-/longest-1.0.1.tgz", @@ -666,6 +717,7 @@ "node": ">=0.10.0" } }, +<<<<<<< HEAD "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", @@ -677,6 +729,8 @@ "node": ">=10" } }, +======= +>>>>>>> d60373f (lws) "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", @@ -1025,6 +1079,7 @@ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, +<<<<<<< HEAD "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz", @@ -1039,6 +1094,8 @@ "node": ">=10" } }, +======= +>>>>>>> d60373f (lws) "node_modules/send": { "version": "0.16.2", "resolved": "https://registry.npmmirror.com/send/-/send-0.16.2.tgz", @@ -1086,6 +1143,35 @@ "resolved": "https://registry.npmmirror.com/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, +<<<<<<< HEAD +======= + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "optional": true, + "peer": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/source-map": { "version": "0.4.4", "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz", @@ -1113,6 +1199,17 @@ "node": ">= 0.6" } }, +<<<<<<< HEAD +======= + "node_modules/swiper": { + "version": "11.0.7", + "resolved": "https://registry.npmmirror.com/swiper/-/swiper-11.0.7.tgz", + "integrity": "sha512-cDfglW1B6uSmB6eB6pNmzDTNLmZtu5bWWa1vak0RU7fOI9qHjMzl7gVBvYSl34b0RU2N11HxxETJqQ5LeqI1cA==", + "engines": { + "node": ">= 4.7.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/tr46": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/tr46/-/tr46-4.1.1.tgz", @@ -1306,11 +1403,14 @@ "node": ">=0.4.0" } }, +<<<<<<< HEAD "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, +======= +>>>>>>> d60373f (lws) "node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmmirror.com/yargs/-/yargs-3.10.0.tgz", diff --git a/node/routes/axl_api.js b/node/routes/axl_api.js index 867cff0e0faa85889fce69452da5804bda53101a..286d07e554660db6695df89c84917c8a6856d2b7 100644 --- a/node/routes/axl_api.js +++ b/node/routes/axl_api.js @@ -1,10 +1,84 @@ var express = require('express'); var router = express.Router(); -// let {} = require('../model') +let {orderModel,orderModel1,addmessModel} = require('../model/module/axl_db') + +// 服务订单 + +// 查看 +router.get('/order',async function(req, res, next) { + let data = await orderModel.find() + res.send(data) +}) +// 添加 +router.post('/order',async function(req, res, next) { + let data = await orderModel.create(req.body) + res.send({code:200,msg:'添加成功'}) +}) +// 编辑 +router.put('/order',async function(req, res, next) { + let data = await orderModel.updateOne({_id:req.query.id},req.body) + res.send({code:200,msg:'编辑成功'}) +}) +// 删除 +router.delete('/order',async function(req, res, next) { + console.log(req.query._id); + let data = await orderModel.deleteOne({_id:req.query.id}) + res.send({code:200,msg:'删除成功'}) +}) + + + +// 商城订单 + +// 查看 +router.get('/order1',async function(req, res, next) { + let data = await orderModel1.find() + res.send(data) +}) +// 添加 +router.post('/order1',async function(req, res, next) { + let data = await orderModel1.create(req.body) + res.send({code:200,msg:'添加成功'}) +}) +// 编辑 +router.put('/order1',async function(req, res, next) { + let data = await orderModel1.updateOne({_id:req.query.id},req.body) + res.send({code:200,msg:'编辑成功'}) +}) +// 删除 +router.delete('/order1',async function(req, res, next) { + let data = await orderModel1.deleteOne({_id:req.query.id}) + res.send({code:200,msg:'删除成功'}) +}) + + +// 地址管理 + +// 查看 +router.get('/addmess',async function(req, res, next) { + let data = await addmessModel.find() + let data1 = await addmessModel.find({_id:req.query._id}) + res.send({data:data,data1:data1[0]}) +}) +// 添加 +router.post('/addmess',async function(req, res, next) { + let data = await addmessModel.create(req.body.params) + res.send({code:200,msg:'添加成功'}) +}) +// 编辑 +router.put('/addmess',async function(req, res, next) { + let data = await addmessModel.updateOne({_id:req.query._id},req.body.params) + res.send({code:200,msg:'编辑成功'}) +}) +// 删除 +router.delete('/addmess',async function(req, res, next) { + let data = await addmessModel.deleteOne({_id:req.query.id}) + res.send({code:200,msg:'删除成功'}) +}) + + + + -/* GET home page. */ -router.get('/', function(req, res, next) { - res.render('index', { title: 'Express' }); -}); module.exports = router; diff --git a/node/routes/llf_api.js b/node/routes/llf_api.js index 7a8122107bfc9bb3348d20668fdd27a10387e7d4..a1588cae96588287a3aaf18db3058c5d6ebd1f35 100644 --- a/node/routes/llf_api.js +++ b/node/routes/llf_api.js @@ -140,4 +140,4 @@ router.get("/protectedData", (req, res) => { }); -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/vite-project/components.d.ts b/vite-project/components.d.ts index 829c2562f6b0080f03ab315c2b3f10a06c2788ea..c6bdb37cdc5803a4573d45c1b1d48904ce54064e 100644 --- a/vite-project/components.d.ts +++ b/vite-project/components.d.ts @@ -9,16 +9,16 @@ declare module 'vue' { export interface GlobalComponents { RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - VanAddressList: typeof import('vant/es')['AddressList'] VanButton: typeof import('vant/es')['Button'] VanCellGroup: typeof import('vant/es')['CellGroup'] + VanConfigProvider: typeof import('vant/es')['ConfigProvider'] + VanDialog: typeof import('vant/es')['Dialog'] VanField: typeof import('vant/es')['Field'] VanForm: typeof import('vant/es')['Form'] VanGrid: typeof import('vant/es')['Grid'] VanGridItem: typeof import('vant/es')['GridItem'] VanIcon: typeof import('vant/es')['Icon'] VanNavBar: typeof import('vant/es')['NavBar'] - VanSearch: typeof import('vant/es')['Search'] VanSticky: typeof import('vant/es')['Sticky'] VanSwipe: typeof import('vant/es')['Swipe'] VanSwipeItem: typeof import('vant/es')['SwipeItem'] diff --git a/vite-project/package-lock.json b/vite-project/package-lock.json index 2dbe5fb92f4c7ddf173ec810296daa55ca1e129b..27961eb92c0e7be6c6ea18ac3541f17bf122766b 100644 --- a/vite-project/package-lock.json +++ b/vite-project/package-lock.json @@ -9,10 +9,24 @@ "version": "0.0.0", "dependencies": { "axios": "^1.6.7", +<<<<<<< HEAD "pinia": "^2.1.7", "vant": "^4.8.5", "vue": "^3.4.15", "vue-router": "^4.2.5" +======= + "flv.js": "^1.6.2", + "pinia": "^2.1.7", + "swiper": "^8.0.3", + "vant": "^4.8.5", + "video.js": "^8.10.0", + "vite-plugin-dts": "^3.7.3", + "vue": "^3.4.15", + "vue-router": "^4.2.5", + "vue-webrtc": "^3.0.1", + "vue3-video-play": "^1.3.2", + "vuex": "^4.1.0" +>>>>>>> d60373f (lws) }, "devDependencies": { "@rushstack/eslint-patch": "^1.3.3", @@ -25,6 +39,11 @@ "eslint": "^8.49.0", "eslint-plugin-vue": "^9.17.0", "npm-run-all2": "^6.1.1", +<<<<<<< HEAD +======= + "sass": "^1.71.1", + "scss": "^0.2.4", +>>>>>>> d60373f (lws) "typescript": "~5.3.0", "unplugin-vue-components": "^0.26.0", "vite": "^5.0.11", @@ -57,6 +76,25 @@ "node": ">=6.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, +>>>>>>> d60373f (lws) "node_modules/@esbuild/aix-ppc64": { "version": "0.19.12", "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", @@ -556,6 +594,80 @@ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, +<<<<<<< HEAD +======= + "node_modules/@microsoft/api-extractor": { + "version": "7.39.0", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.39.0.tgz", + "integrity": "sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==", + "dependencies": { + "@microsoft/api-extractor-model": "7.28.3", + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.62.0", + "@rushstack/rig-package": "0.5.1", + "@rushstack/ts-command-line": "4.17.1", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "5.3.3" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.28.3", + "resolved": "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.28.3.tgz", + "integrity": "sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==", + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.62.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.14.2", + "resolved": "https://registry.npmmirror.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==" + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.16.2", + "resolved": "https://registry.npmmirror.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, +>>>>>>> d60373f (lws) "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -595,7 +707,10 @@ "version": "5.1.0", "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -788,17 +903,101 @@ "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/@rushstack/node-core-library": { + "version": "3.62.0", + "resolved": "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-3.62.0.tgz", + "integrity": "sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==", + "dependencies": { + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/rig-package": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.5.1.tgz", + "integrity": "sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==", + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.17.1", + "resolved": "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.17.1.tgz", + "integrity": "sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==", + "dependencies": { + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "colors": "~1.2.1", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, +>>>>>>> d60373f (lws) "node_modules/@tsconfig/node20": { "version": "20.1.2", "resolved": "https://registry.npmmirror.com/@tsconfig/node20/-/node20-20.1.2.tgz", "integrity": "sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ==", "dev": true }, +<<<<<<< HEAD "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true +======= + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmmirror.com/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" +>>>>>>> d60373f (lws) }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -810,7 +1009,11 @@ "version": "20.11.20", "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.20.tgz", "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", +<<<<<<< HEAD "dev": true, +======= + "devOptional": true, +>>>>>>> d60373f (lws) "dependencies": { "undici-types": "~5.26.4" } @@ -1004,6 +1207,55 @@ "vue": "^3.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/@videojs/http-streaming": { + "version": "3.10.0", + "resolved": "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-3.10.0.tgz", + "integrity": "sha512-Lf1rmhTalV4Gw0bJqHmH4lfk/FlepUDs9smuMtorblAYnqDlE2tbUOb7sBXVYoXGdbWbdTW8jH2cnS+6HWYJ4Q==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "4.0.0", + "aes-decrypter": "4.0.1", + "global": "^4.4.0", + "m3u8-parser": "^7.1.0", + "mpd-parser": "^1.3.0", + "mux.js": "7.0.2", + "video.js": "^7 || ^8" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "video.js": "^7 || ^8" + } + }, + "node_modules/@videojs/vhs-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-4.0.0.tgz", + "integrity": "sha512-xJp7Yd4jMLwje2vHCUmi8MOUU76nxiwII3z4Eg3Ucb+6rrkFVGosrXlMgGnaLjq724j3wzNElRZ71D/CKrTtxg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0", + "url-toolkit": "^2.2.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/@videojs/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "global": "~4.4.0", + "is-function": "^1.0.1" + } + }, +>>>>>>> d60373f (lws) "node_modules/@vitejs/plugin-vue": { "version": "5.0.4", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", @@ -1021,7 +1273,10 @@ "version": "1.11.1", "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz", "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "@volar/source-map": "1.11.1" } @@ -1030,7 +1285,10 @@ "version": "1.11.1", "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz", "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "muggle-string": "^0.3.1" } @@ -1039,7 +1297,10 @@ "version": "1.11.1", "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz", "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "@volar/language-core": "1.11.1", "path-browserify": "^1.0.1" @@ -1124,7 +1385,10 @@ "version": "1.8.27", "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz", "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "@volar/language-core": "~1.11.1", "@volar/source-map": "~1.11.1", @@ -1195,6 +1459,17 @@ "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz", @@ -1216,11 +1491,42 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/aes-decrypter": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-4.0.1.tgz", + "integrity": "sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "global": "^4.4.0", + "pkcs7": "^1.0.4" + } + }, + "node_modules/aes-decrypter/node_modules/@videojs/vhs-utils": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", + "integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0", + "url-toolkit": "^2.2.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, +>>>>>>> d60373f (lws) "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1292,11 +1598,61 @@ "proxy-from-env": "^1.1.0" } }, +<<<<<<< HEAD "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true +======= + "node_modules/babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", + "dependencies": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + } + }, + "node_modules/babel-polyfill/node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" +>>>>>>> d60373f (lws) }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -1317,7 +1673,10 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "balanced-match": "^1.0.0" } @@ -1334,6 +1693,30 @@ "node": ">=8" } }, +<<<<<<< HEAD +======= + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/bufferutil": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, +>>>>>>> d60373f (lws) "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", @@ -1407,6 +1790,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/colors": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "engines": { + "node": ">=0.1.90" + } + }, +>>>>>>> d60373f (lws) "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1418,11 +1812,27 @@ "node": ">= 0.8" } }, +<<<<<<< HEAD "node_modules/computeds": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz", "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", "dev": true +======= + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==" +>>>>>>> d60373f (lws) }, "node_modules/concat-map": { "version": "0.0.1", @@ -1430,6 +1840,15 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/core-js": { + "version": "3.36.0", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.36.0.tgz", + "integrity": "sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==", + "hasInstallScript": true + }, +>>>>>>> d60373f (lws) "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1461,17 +1880,33 @@ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, +<<<<<<< HEAD "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", "dev": true +======= + "node_modules/cuid": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/cuid/-/cuid-2.1.8.tgz", + "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==", + "deprecated": "Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead." + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" +>>>>>>> d60373f (lws) }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "ms": "2.1.2" }, @@ -1522,6 +1957,42 @@ "node": ">=6.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/dom7": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/dom7/-/dom7-4.0.6.tgz", + "integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==", + "dependencies": { + "ssr-window": "^4.0.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.5.3", + "resolved": "https://registry.npmmirror.com/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "engines": { + "node": ">=10.0.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", @@ -1530,11 +2001,28 @@ "node": ">=0.12" } }, +<<<<<<< HEAD +======= + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmmirror.com/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, +>>>>>>> d60373f (lws) "node_modules/esbuild": { "version": "0.19.12", "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.19.12.tgz", "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", +<<<<<<< HEAD "dev": true, +======= + "devOptional": true, +>>>>>>> d60373f (lws) "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -1758,8 +2246,12 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", +<<<<<<< HEAD "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true +======= + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" +>>>>>>> d60373f (lws) }, "node_modules/fast-glob": { "version": "3.3.2", @@ -1792,8 +2284,12 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", +<<<<<<< HEAD "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true +======= + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" +>>>>>>> d60373f (lws) }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -1867,6 +2363,18 @@ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/flv.js": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/flv.js/-/flv.js-1.6.2.tgz", + "integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==", + "dependencies": { + "es6-promise": "^4.2.8", + "webworkify-webpack": "^2.1.5" + } + }, +>>>>>>> d60373f (lws) "node_modules/follow-redirects": { "version": "1.15.5", "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.5.tgz", @@ -1893,6 +2401,22 @@ "node": ">= 6" } }, +<<<<<<< HEAD +======= + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, +>>>>>>> d60373f (lws) "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1916,8 +2440,17 @@ "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", +<<<<<<< HEAD "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true +======= + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "node_modules/get-browser-rtc": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", + "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" +>>>>>>> d60373f (lws) }, "node_modules/glob": { "version": "7.2.3", @@ -1970,6 +2503,18 @@ "node": "*" } }, +<<<<<<< HEAD +======= + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, +>>>>>>> d60373f (lws) "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", @@ -1999,6 +2544,14 @@ "node": ">=10" } }, +<<<<<<< HEAD +======= + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, +>>>>>>> d60373f (lws) "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz", @@ -2018,7 +2571,10 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.1.tgz", "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "function-bind": "^1.1.2" }, @@ -2030,11 +2586,27 @@ "version": "1.2.0", "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "bin": { "he": "bin/he" } }, +<<<<<<< HEAD +======= + "node_modules/hls.js": { + "version": "1.5.7", + "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.5.7.tgz", + "integrity": "sha512-Hnyf7ojTBtXHeOW1/t6wCBJSiK1WpoKF9yg7juxldDx8u3iswrkPt2wbOA/1NiwU4j27DSIVoIEJRAhcdMef/A==" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, +>>>>>>> d60373f (lws) "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz", @@ -2044,6 +2616,15 @@ "node": ">= 4" } }, +<<<<<<< HEAD +======= + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, +>>>>>>> d60373f (lws) "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2057,6 +2638,17 @@ "node": ">=6" } }, +<<<<<<< HEAD +======= + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "engines": { + "node": ">=8" + } + }, +>>>>>>> d60373f (lws) "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2066,6 +2658,14 @@ "node": ">=0.8.19" } }, +<<<<<<< HEAD +======= + "node_modules/individual": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz", + "integrity": "sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==" + }, +>>>>>>> d60373f (lws) "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", @@ -2079,8 +2679,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", +<<<<<<< HEAD "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true +======= + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" +>>>>>>> d60373f (lws) }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -2098,7 +2702,10 @@ "version": "2.13.1", "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "hasown": "^2.0.0" } @@ -2112,6 +2719,14 @@ "node": ">=0.10.0" } }, +<<<<<<< HEAD +======= + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, +>>>>>>> d60373f (lws) "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", @@ -2148,6 +2763,14 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" + }, +>>>>>>> d60373f (lws) "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2178,8 +2801,12 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", +<<<<<<< HEAD "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true +======= + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" +>>>>>>> d60373f (lws) }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -2187,6 +2814,22 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keycode": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/keycode/-/keycode-2.2.0.tgz", + "integrity": "sha512-ps3I9jAdNtRpJrbBvQjpzyFbss/skHqzS+eu4RxKLaEAtFqkjZaB6TZMSivPbLxf4K7VI4SjR0P5mRCX5+Q25A==" + }, +>>>>>>> d60373f (lws) "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", @@ -2196,6 +2839,14 @@ "json-buffer": "3.0.1" } }, +<<<<<<< HEAD +======= + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" + }, +>>>>>>> d60373f (lws) "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", @@ -2233,8 +2884,22 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", +<<<<<<< HEAD "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true +======= + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" +>>>>>>> d60373f (lws) }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -2246,7 +2911,10 @@ "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "yallist": "^4.0.0" }, @@ -2254,6 +2922,33 @@ "node": ">=10" } }, +<<<<<<< HEAD +======= + "node_modules/m3u8-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-7.1.0.tgz", + "integrity": "sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "global": "^4.4.0" + } + }, + "node_modules/m3u8-parser/node_modules/@videojs/vhs-utils": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", + "integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0", + "url-toolkit": "^2.2.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, +>>>>>>> d60373f (lws) "node_modules/magic-string": { "version": "0.30.7", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.7.tgz", @@ -2315,11 +3010,25 @@ "node": ">= 0.6" } }, +<<<<<<< HEAD +======= + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2327,17 +3036,73 @@ "node": ">=16 || 14 >=14.17" } }, +<<<<<<< HEAD "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true +======= + "node_modules/mpd-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-1.3.0.tgz", + "integrity": "sha512-WgeIwxAqkmb9uTn4ClicXpEQYCEduDqRKfmUdp4X8vmghKfBNXZLYpREn9eqrDx/Tf5LhzRcJLSpi4ohfV742Q==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^4.0.0", + "@xmldom/xmldom": "^0.8.3", + "global": "^4.4.0" + }, + "bin": { + "mpd-to-m3u8-json": "bin/parse.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" +>>>>>>> d60373f (lws) }, "node_modules/muggle-string": { "version": "0.3.1", "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz", +<<<<<<< HEAD "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", "dev": true +======= + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==" + }, + "node_modules/mux.js": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-7.0.2.tgz", + "integrity": "sha512-CM6+QuyDbc0qW1OfEjkd2+jVKzTXF+z5VOKH0eZxtZtnrG/ilkW/U7l7IXGtBNLASF9sKZMcK1u669cq50Qq0A==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "global": "^4.4.0" + }, + "bin": { + "muxjs-transmux": "bin/transmux.js" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, + "node_modules/nanoassert": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/nanoassert/-/nanoassert-1.1.0.tgz", + "integrity": "sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==" + }, + "node_modules/nanobus": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/nanobus/-/nanobus-4.5.0.tgz", + "integrity": "sha512-7sBZo9wthqNJ7QXnfVXZL7fkKJLN55GLOdX+RyZT34UOvxxnFtJe/c7K0ZRLAKOvaY1xJThFFn0Usw2H9R6Frg==", + "dependencies": { + "nanoassert": "^1.1.0", + "nanotiming": "^7.2.0", + "remove-array-items": "^1.0.0" + } +>>>>>>> d60373f (lws) }, "node_modules/nanoid": { "version": "3.3.7", @@ -2350,12 +3115,45 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, +<<<<<<< HEAD +======= + "node_modules/nanoscheduler": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/nanoscheduler/-/nanoscheduler-1.0.3.tgz", + "integrity": "sha512-jBbrF3qdU9321r8n9X7yu18DjP31Do2ItJm3mWrt90wJTrnDO+HXpoV7ftaUglAtjgj9s+OaCxGufbvx6pvbEQ==", + "dependencies": { + "nanoassert": "^1.1.0" + } + }, + "node_modules/nanotiming": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/nanotiming/-/nanotiming-7.3.1.tgz", + "integrity": "sha512-l3lC7v/PfOuRWQa8vV29Jo6TG10wHtnthLElFXs4Te4Aas57Fo4n1Q8LH9n+NDh9riOzTVvb2QNBhTS4JUKNjw==", + "dependencies": { + "nanoassert": "^1.1.0", + "nanoscheduler": "^1.0.2" + } + }, +>>>>>>> d60373f (lws) "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, +>>>>>>> d60373f (lws) "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", @@ -2417,6 +3215,18 @@ "boolbase": "^1.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/ometa": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/ometa/-/ometa-0.2.2.tgz", + "integrity": "sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==", + "dev": true, + "engines": { + "node": ">= 0.2.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", @@ -2482,8 +3292,12 @@ "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", +<<<<<<< HEAD "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true +======= + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" +>>>>>>> d60373f (lws) }, "node_modules/path-exists": { "version": "4.0.0", @@ -2515,8 +3329,12 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", +<<<<<<< HEAD "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true +======= + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" +>>>>>>> d60373f (lws) }, "node_modules/path-type": { "version": "4.0.0", @@ -2536,7 +3354,10 @@ "version": "2.3.1", "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "engines": { "node": ">=8.6" } @@ -2597,6 +3418,20 @@ } } }, +<<<<<<< HEAD +======= + "node_modules/pkcs7": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz", + "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==", + "dependencies": { + "@babel/runtime": "^7.5.5" + }, + "bin": { + "pkcs7": "bin/cli.js" + } + }, +>>>>>>> d60373f (lws) "node_modules/postcss": { "version": "8.4.35", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.35.tgz", @@ -2632,6 +3467,17 @@ "node": ">= 0.8.0" } }, +<<<<<<< HEAD +======= + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -2641,7 +3487,10 @@ "version": "2.3.1", "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "engines": { "node": ">=6" } @@ -2649,8 +3498,20 @@ "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", +<<<<<<< HEAD "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true +======= + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } +>>>>>>> d60373f (lws) }, "node_modules/read-package-json-fast": { "version": "3.0.2", @@ -2665,6 +3526,22 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, +>>>>>>> d60373f (lws) "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", @@ -2677,11 +3554,27 @@ "node": ">=8.10.0" } }, +<<<<<<< HEAD +======= + "node_modules/regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" + }, + "node_modules/remove-array-items": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/remove-array-items/-/remove-array-items-1.1.1.tgz", + "integrity": "sha512-MXW/jtHyl5F1PZI7NbpS8SOtympdLuF20aoWJT5lELR1p/HJDd5nqW8Eu9uLh/hCRY3FgvrIT5AwDCgBODklcA==" + }, +>>>>>>> d60373f (lws) "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -2726,7 +3619,11 @@ "version": "4.12.0", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.12.0.tgz", "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", +<<<<<<< HEAD "dev": true, +======= + "devOptional": true, +>>>>>>> d60373f (lws) "dependencies": { "@types/estree": "1.0.5" }, @@ -2763,11 +3660,67 @@ "queue-microtask": "^1.2.2" } }, +<<<<<<< HEAD +======= + "node_modules/rust-result": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/rust-result/-/rust-result-1.0.0.tgz", + "integrity": "sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==", + "dependencies": { + "individual": "^2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/safe-json-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz", + "integrity": "sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==", + "dependencies": { + "rust-result": "^1.0.0" + } + }, + "node_modules/sass": { + "version": "1.71.1", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scss": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/scss/-/scss-0.2.4.tgz", + "integrity": "sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==", + "dev": true, + "dependencies": { + "ometa": "0.2.2" + }, + "engines": { + "node": ">= 0.2.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz", "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "lru-cache": "^6.0.0" }, @@ -2805,6 +3758,35 @@ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/simple-peer": { + "version": "9.11.1", + "resolved": "https://registry.npmmirror.com/simple-peer/-/simple-peer-9.11.1.tgz", + "integrity": "sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==", + "dependencies": { + "buffer": "^6.0.3", + "debug": "^4.3.2", + "err-code": "^3.0.1", + "get-browser-rtc": "^1.1.0", + "queue-microtask": "^1.2.3", + "randombytes": "^2.1.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/simple-signal-client": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/simple-signal-client/-/simple-signal-client-3.0.0.tgz", + "integrity": "sha512-eiqR8S+2i1squkIVKx4IgEyGe7do/soMb2Lt06gJov281sLl3USyIn1fKAg/hzcIvevOpuH1BmzFZ6BSugFZsQ==", + "dependencies": { + "babel-polyfill": "^6.23.0", + "cuid": "^2.0.2", + "inherits": "^2.0.3", + "nanobus": "^4.3.3", + "simple-peer": "^9.6.2" + } + }, +>>>>>>> d60373f (lws) "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", @@ -2814,6 +3796,43 @@ "node": ">=8" } }, +<<<<<<< HEAD +======= + "node_modules/socket.io-client": { + "version": "4.7.4", + "resolved": "https://registry.npmmirror.com/socket.io-client/-/socket.io-client-4.7.4.tgz", + "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmmirror.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", @@ -2822,6 +3841,35 @@ "node": ">=0.10.0" } }, +<<<<<<< HEAD +======= + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "engines": { + "node": ">=0.6.19" + } + }, +>>>>>>> d60373f (lws) "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2838,7 +3886,10 @@ "version": "3.1.1", "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "engines": { "node": ">=8" } @@ -2859,17 +3910,57 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "engines": { "node": ">= 0.4" } }, +<<<<<<< HEAD +======= + "node_modules/swiper": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/swiper/-/swiper-8.0.3.tgz", + "integrity": "sha512-mpw7v/Lkh48LQUxtJuFD+3Lls8LViNi3j1fbk45fNo9DXZxXK/e7NMixxS27OxvC5wx+5H3bet1O2pdjk7akBA==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "hasInstallScript": true, + "dependencies": { + "dom7": "^4.0.4", + "ssr-window": "^4.0.2" + }, + "engines": { + "node": ">= 4.7.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/throttle-debounce": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", + "engines": { + "node": ">=10" + } + }, +>>>>>>> d60373f (lws) "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2919,7 +4010,10 @@ "version": "5.3.3", "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", +<<<<<<< HEAD "devOptional": true, +======= +>>>>>>> d60373f (lws) "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2932,7 +4026,19 @@ "version": "5.26.5", "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", +<<<<<<< HEAD "dev": true +======= + "devOptional": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } +>>>>>>> d60373f (lws) }, "node_modules/unplugin": { "version": "1.7.1", @@ -2984,16 +4090,51 @@ "version": "4.4.1", "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "punycode": "^2.1.0" } }, +<<<<<<< HEAD "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true +======= + "node_modules/url-toolkit": { + "version": "2.2.5", + "resolved": "https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz", + "integrity": "sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==" + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmmirror.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmmirror.com/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "engines": { + "node": ">= 0.10" + } +>>>>>>> d60373f (lws) }, "node_modules/vant": { "version": "4.8.5", @@ -3008,11 +4149,67 @@ "vue": "^3.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/video.js": { + "version": "8.10.0", + "resolved": "https://registry.npmmirror.com/video.js/-/video.js-8.10.0.tgz", + "integrity": "sha512-7UeG/flj/pp8tNGW8WKPP1VJb3x2FgLoqUWzpZqkoq5YIyf6MNzmIrKtxprl438T5RVkcj+OzV8IX4jYSAn4Sw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/http-streaming": "3.10.0", + "@videojs/vhs-utils": "^4.0.0", + "@videojs/xhr": "2.6.0", + "aes-decrypter": "^4.0.1", + "global": "4.4.0", + "keycode": "2.2.0", + "m3u8-parser": "^7.1.0", + "mpd-parser": "^1.2.2", + "mux.js": "^7.0.1", + "safe-json-parse": "4.0.0", + "videojs-contrib-quality-levels": "4.0.0", + "videojs-font": "4.1.0", + "videojs-vtt.js": "0.15.5" + } + }, + "node_modules/videojs-contrib-quality-levels": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.0.0.tgz", + "integrity": "sha512-u5rmd8BjLwANp7XwuQ0Q/me34bMe6zg9PQdHfTS7aXgiVRbNTb4djcmfG7aeSrkpZjg+XCLezFNenlJaCjBHKw==", + "dependencies": { + "global": "^4.4.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6" + }, + "peerDependencies": { + "video.js": "^8" + } + }, + "node_modules/videojs-font": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-4.1.0.tgz", + "integrity": "sha512-X1LuPfLZPisPLrANIAKCknZbZu5obVM/ylfd1CN+SsCmPZQ3UMDPcvLTpPBJxcBuTpHQq2MO1QCFt7p8spnZ/w==" + }, + "node_modules/videojs-vtt.js": { + "version": "0.15.5", + "resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz", + "integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==", + "dependencies": { + "global": "^4.3.1" + } + }, +>>>>>>> d60373f (lws) "node_modules/vite": { "version": "5.1.4", "resolved": "https://registry.npmmirror.com/vite/-/vite-5.1.4.tgz", "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", +<<<<<<< HEAD "dev": true, +======= + "devOptional": true, +>>>>>>> d60373f (lws) "dependencies": { "esbuild": "^0.19.3", "postcss": "^8.4.35", @@ -3060,6 +4257,34 @@ } } }, +<<<<<<< HEAD +======= + "node_modules/vite-plugin-dts": { + "version": "3.7.3", + "resolved": "https://registry.npmmirror.com/vite-plugin-dts/-/vite-plugin-dts-3.7.3.tgz", + "integrity": "sha512-26eTlBYdpjRLWCsTJebM8vkCieE+p9gP3raf+ecDnzzK5E3FG6VE1wcy55OkRpfWWVlVvKkYFe6uvRHYWx7Nog==", + "dependencies": { + "@microsoft/api-extractor": "7.39.0", + "@rollup/pluginutils": "^5.1.0", + "@vue/language-core": "^1.8.26", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "vue-tsc": "^1.8.26" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "typescript": "*", + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, +>>>>>>> d60373f (lws) "node_modules/vue": { "version": "3.4.20", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.20.tgz", @@ -3116,7 +4341,10 @@ "version": "2.7.16", "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "de-indent": "^1.0.2", "he": "^1.2.0" @@ -3126,7 +4354,10 @@ "version": "1.8.27", "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz", "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", +<<<<<<< HEAD "dev": true, +======= +>>>>>>> d60373f (lws) "dependencies": { "@volar/typescript": "~1.11.1", "@vue/language-core": "1.8.27", @@ -3139,6 +4370,46 @@ "typescript": "*" } }, +<<<<<<< HEAD +======= + "node_modules/vue-webrtc": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/vue-webrtc/-/vue-webrtc-3.0.1.tgz", + "integrity": "sha512-Wm5QAyuPhQVYHU8RLhGnD6ocaQVxatfYqoIUHF9Fq/Cer19dA7fSiZO+q4Q+XwvN40M4f8STaZRhF1A/rKfeVg==", + "dependencies": { + "bufferutil": "^4.0.6", + "core-js": "^3.20.3", + "simple-signal-client": "^3.0.0", + "socket.io-client": "^4.1.2", + "utf-8-validate": "^5.0.8", + "vue": "^3.0.5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/vue3-video-play": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/vue3-video-play/-/vue3-video-play-1.3.2.tgz", + "integrity": "sha512-eEwCJ0NIkfVQgTj0I3Kf9b1E/04Qne8mQQiE8r77BocblHsZ2T6af3q8l8Zzs/OvjlpQAQvkN/ACVUOJC3RSXg==", + "dependencies": { + "hls.js": "^1.0.10", + "throttle-debounce": "^3.0.1", + "vue": "^3.2.2" + } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, +>>>>>>> d60373f (lws) "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -3154,6 +4425,14 @@ "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/webworkify-webpack": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", + "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" + }, +>>>>>>> d60373f (lws) "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", @@ -3175,6 +4454,29 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, +>>>>>>> d60373f (lws) "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -3184,11 +4486,26 @@ "node": ">=12" } }, +<<<<<<< HEAD "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true +======= + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" +>>>>>>> d60373f (lws) }, "node_modules/yocto-queue": { "version": "0.1.0", @@ -3198,6 +4515,28 @@ "engines": { "node": ">=10" } +<<<<<<< HEAD +======= + }, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmmirror.com/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } +>>>>>>> d60373f (lws) } } } diff --git a/vite-project/public/aaa.json b/vite-project/public/aaa.json new file mode 100644 index 0000000000000000000000000000000000000000..2ee090d6a0bddd8ec9288b98d13b592c501814cf --- /dev/null +++ b/vite-project/public/aaa.json @@ -0,0 +1,42 @@ +[ + { + uid: 1, + author: { + url: 'https: //p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b2da3f989c344b7fb134935580da72de~tplv-k3u1fbpfcp-watermark.image', + nickname: "喵喵神火教" + }, + cover: '', + desc: 'miaomiao #Animal', + video: { + url: './static/videos/1.mp4', + }, + statistics: { + "collect_count": 319, + "comment_count": 71, + "digg_count": 6666, + "play_count": 0, + "share_count": 20 + }, + playing: false + }, + { + uid: 2, + author: { + url: 'https: //p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1be58460b91e4f849451fe4a038166b7~tplv-k3u1fbpfcp-watermark.image', + nickname: "喵喵神火教" + }, + cover: '', + desc: 'miaomiao #Animal', + video: { + url: './static/videos/2.mp4', + }, + statistics: { + "collect_count": 319, + "comment_count": 71, + "digg_count": 9999, + "play_count": 0, + "share_count": 20 + }, + playing: false + } +]; diff --git a/vite-project/src/component/CommonTab.vue b/vite-project/src/component/CommonTab.vue index 541e7aaf2622fcb5a678b7ae8e059c6468608ad3..5f9a0bb945259bbba1a2017fc53ba05881354a45 100644 --- a/vite-project/src/component/CommonTab.vue +++ b/vite-project/src/component/CommonTab.vue @@ -1,6 +1,7 @@ \ No newline at end of file diff --git a/vite-project/src/views/components/video.vue b/vite-project/src/views/components/video.vue new file mode 100644 index 0000000000000000000000000000000000000000..2c2732a2a8f755bb430996abd21217b2a456164a --- /dev/null +++ b/vite-project/src/views/components/video.vue @@ -0,0 +1,365 @@ + + + + + diff --git a/vite-project/src/views/utils/index.ts b/vite-project/src/views/utils/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..daee44b35d9c68119546751b3683aa312f55602a --- /dev/null +++ b/vite-project/src/views/utils/index.ts @@ -0,0 +1,12 @@ +//秒转化成 时分秒 +export function second(second: number) { + second = second || 0; + if (second === 0 || second === Infinity || second.toString() === 'NaN') { + return '00:00'; + } + const add0 = (num: number) => (num < 10 ? '0' + num : '' + num); + const hour = Math.floor(second / 3600); + const min = Math.floor((second - hour * 3600) / 60); + const sec = Math.floor(second - hour * 3600 - min * 60); + return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':'); +} \ No newline at end of file