diff --git a/.env.example b/.env.example index dc68a7c..127f3f5 100644 --- a/.env.example +++ b/.env.example @@ -3,19 +3,17 @@ APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL= -APP_THEME= -PROJECT_UUID= -ANALYTICS_GOOGLE_ID= +APP_THEME=basic LOG_CHANNEL=daily LOG_LEVEL=debug DB_CONNECTION=mysql -DB_HOST=127.0.0.1 +DB_HOST=dev-mariadb DB_PORT=3306 -DB_DATABASE=laravel +DB_DATABASE= DB_USERNAME=root -DB_PASSWORD= +DB_PASSWORD=secret BROADCAST_DRIVER=log CACHE_DRIVER=file @@ -23,38 +21,23 @@ QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - MAIL_MAILER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 +MAIL_HOST=dev-mailhog +MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=equipe.web@ldc.fr MAIL_FROM_NAME="${APP_NAME}" -MAIL_ADMIN=informatique.internet@ldc.fr - -MAIL_LIST_SERVICEWEB=informatique.internet@ldc.fr -MAIL_LIST_INVALIDINCO=informatique.internet@ldc.fr,vincent.pierre@ldc.fr,christelle.manceau@ldc.fr +MAIL_LIST_SERVICEWEB=equipe.web@ldc.fr +MAIL_LIST_INVALIDINCO=equipe.web@ldc.fr,vincent.pierre@ldc.fr,christelle.manceau@ldc.fr # CRM CRM_ENDPOINT=https://ldcldccrm:K5cJmTsG@dev.ldc-crm.fr -# service boutique +# Service boutique CRM_TOKEN= - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" +# LDC Web Status Checker +PROJECT_UUID= +# Google Analytics +ANALYTICS_GOOGLE_ID= diff --git a/.gitignore b/.gitignore index 08bb05f..fc41dbd 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /public/images/gammes /public/images/produits /public/images/slides +/public/b-o/ +/public/mix-manifest.json /storage/*.key /vendor .env @@ -16,3 +18,4 @@ Homestead.json Homestead.yaml npm-debug.log yarn-error.log +auth.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 08786ee..09ea0b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,20 @@ +## 1.0.1 +- Change LDC CRM Client repository +- composer update +- Update .gitignore +- Delete compiled assets +- Replace informatique.internet -> equipe.web +- Complete README.md +- Delete credentials from front folder.. +- Delete tests folder and PHPUnit file +- Update PHPCS file +- Add mix() for assets +- PHPCBF +## 1.0.0 +Init versioning ## 19-03-2022 - * legal RGPD routes always accessible * privatisable routes -* quickorder route +* quickorder route * quickorder route activated by theme settings * improved tooltip for product reference wher regate orders are active diff --git a/README.md b/README.md index 782655f..19aa11c 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,38 @@ -## Boutique Click N Collect - -## Required systems - -* supervisor - +# Boutique Click N Collect ## Installation ``` composer install php artisan storage:link -cd /ressources/views/front/ -mkdir -cd -git clone . -cd ../../../.../ -npm install && npm run prod - +cp .env.example .env +php artisan key:generate +``` +Edit .env file then : +``` +php artisan migrate --seed ``` +## Theme +``` +cd resources/views/front/ +git clone [REPO_URL] --branch=[THEME_BRANCH_NAME] [THEME_NAME] +``` +Ex: +``` +git clone [REPO_URL] --branch=develop-mairet mairet +``` +Update APP_THEME value in .env : +``` +APP_THEME=[THEME_NAME] +``` +Ex: +``` +APP_THEME=mairet +``` +Project root : +``` +npm install && npm run prod +``` ## Back-Office Création de compte @@ -27,3 +42,6 @@ php artisan create:admin ``` URL : /bo +## Required systems + +* supervisor diff --git a/app/Console/Commands/CreateAdmin.php b/app/Console/Commands/CreateAdmin.php index d62c8fc..9637695 100644 --- a/app/Console/Commands/CreateAdmin.php +++ b/app/Console/Commands/CreateAdmin.php @@ -35,23 +35,23 @@ class CreateAdmin extends Command /** * Execute the console command. * - * @return int + * @return integer */ public function handle() { - $firstname = $this->ask('What is the firstname?','Equipe'); - $lastname = $this->ask('What is the lastname?','Web'); - $email = $this->ask('What is the email?', 'equipe.web@ldc.fr'); - $pwd = $this->secret('What is the password?'); + $firstname = $this->ask('What is the firstname?', 'Equipe'); + $lastname = $this->ask('What is the lastname?', 'Web'); + $email = $this->ask('What is the email?', 'equipe.web@ldc.fr'); + $pwd = $this->secret('What is the password?'); - $user = new User(); - $user->firstname = $firstname; - $user->lastname = $lastname; - $user->date_of_birth = now(); - $user->email = $email; - $user->password = Hash::make($pwd); + $user = new User(); + $user->firstname = $firstname; + $user->lastname = $lastname; + $user->date_of_birth = now(); + $user->email = $email; + $user->password = Hash::make($pwd); $user->email_verified_at = now(); - $user->role = 1; + $user->role = 1; $user->save(); $this->info('User created.'); diff --git a/app/Console/Commands/ImportSalaries.php b/app/Console/Commands/ImportSalaries.php index eed40e3..b9d4650 100644 --- a/app/Console/Commands/ImportSalaries.php +++ b/app/Console/Commands/ImportSalaries.php @@ -7,7 +7,6 @@ use App\Jobs\CsvSalariesReader as JobCsvSalarieReader; class ImportSalaries extends Command { - /** * The name and signature of the console command. * @@ -35,16 +34,14 @@ class ImportSalaries extends Command /** * Execute the console command. * - * @return int + * @return integer */ public function handle() { $this->info('Running the Job, this could take some time.'); - $job = new JobCsvSalarieReader(); + $job = new JobCsvSalarieReader(); $job->console = $this; $job->handle(); $this->info('Job completed'); } - - } diff --git a/app/Console/Commands/LDCWebStatusChecker.php b/app/Console/Commands/LDCWebStatusChecker.php index f8a24f0..07fff44 100644 --- a/app/Console/Commands/LDCWebStatusChecker.php +++ b/app/Console/Commands/LDCWebStatusChecker.php @@ -1,11 +1,12 @@ 0){ + $patherror = storage_path('/logs'); + $files = glob($patherror . '/*.log'); + if (count($files) > 0) { foreach ($files as $file) { $data['logs'] = $data['logs'] + filesize($file); } @@ -74,8 +75,8 @@ class LDCWebStatusChecker extends Command $data['code']['version'] = app()->version(); // Send by cURL - $url = 'https://ldc-web.ldc.fr/api/status-checker'; - $ch = curl_init($url); + $url = 'https://ldc-web.ldc.fr/api/status-checker'; + $ch = curl_init($url); $payload = ['token' => 'CE8S52Qq7stf5k8frF4T', 'datas' => json_encode($data)]; curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); diff --git a/app/Console/Commands/RefreshSiteMap.php b/app/Console/Commands/RefreshSiteMap.php index dfea1db..a9d17c4 100644 --- a/app/Console/Commands/RefreshSiteMap.php +++ b/app/Console/Commands/RefreshSiteMap.php @@ -7,7 +7,6 @@ use Illuminate\Console\Command; class RefreshSiteMap extends Command { - /** * The name and signature of the console command. * @@ -25,12 +24,12 @@ class RefreshSiteMap extends Command /** * Execute the console command. * - * @return int + * @return integer */ public function handle() { $this->info('Running the Job, this could take some time.'); - $job = new JobsRefreshSiteMap(); + $job = new JobsRefreshSiteMap(); $job->console = $this; $job->handle(); $this->info('Job completed'); diff --git a/app/Console/Commands/XmlIncoReader.php b/app/Console/Commands/XmlIncoReader.php index 6e7c53b..aee0898 100644 --- a/app/Console/Commands/XmlIncoReader.php +++ b/app/Console/Commands/XmlIncoReader.php @@ -7,7 +7,6 @@ use Illuminate\Console\Command; class XmlIncoReader extends Command { - /** * The name and signature of the console command. * @@ -30,7 +29,7 @@ class XmlIncoReader extends Command public function handle() { $this->info('Running the Job, this could take some time.'); - $job = new JobsXmlIncoReader(); + $job = new JobsXmlIncoReader(); $job->console = $this; $job->handle(); $this->info('Job completed'); diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 03faf99..aa16460 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -14,13 +14,12 @@ class Kernel extends ConsoleKernel * @var array */ protected $commands = [ - // - ]; + ]; /** * Define the application's command schedule. * - * @param \Illuminate\Console\Scheduling\Schedule $schedule + * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) @@ -28,7 +27,7 @@ class Kernel extends ConsoleKernel $schedule->command('sitemap:refresh')->dailyAt('16:13'); $schedule->command('ldcweb:statuschecker')->everyFifteenMinutes(); $schedule->job(JobsXmlIncoReader::class)->name('xml-inco-reader')->onOneServer()->dailyAt('15:00'); - //$schedule->job(new XmlIncoReader)->weeklyOn(1, '8:00'); + // $schedule->job(new XmlIncoReader)->weeklyOn(1, '8:00'); } /** @@ -38,7 +37,7 @@ class Kernel extends ConsoleKernel */ protected function commands() { - $this->load(__DIR__.'/Commands'); + $this->load(__DIR__ . '/Commands'); require base_path('routes/console.php'); } diff --git a/app/Exceptions/AbortCsvImportException.php b/app/Exceptions/AbortCsvImportException.php index 065bd9c..a913d04 100644 --- a/app/Exceptions/AbortCsvImportException.php +++ b/app/Exceptions/AbortCsvImportException.php @@ -6,5 +6,4 @@ use Exception; class AbortCsvImportException extends Exception { - // } diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index e237b0b..db676b1 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -5,7 +5,6 @@ namespace App\Exceptions; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Auth\AuthenticationException; use Illuminate\Support\Facades\Mail; -use Illuminate\Support\Facades\Session; use RuntimeException; use Throwable; @@ -17,8 +16,7 @@ class Handler extends ExceptionHandler * @var array */ protected $dontReport = [ - // - ]; + ]; /** * A list of the inputs that are never flashed for validation exceptions. @@ -37,7 +35,6 @@ class Handler extends ExceptionHandler */ public function register() { - // } protected function unauthenticated($request, AuthenticationException $exception) @@ -54,15 +51,15 @@ class Handler extends ExceptionHandler $login = 'auth.login'; break; } - //cf. issue https://stackoverflow.com/questions/52417438/laravel-unauthenticated-redirect-issue-with-multiple-authentication - //Session::forget('url.intented'); + // cf. issue https://stackoverflow.com/questions/52417438/laravel-unauthenticated-redirect-issue-with-multiple-authentication + // Session::forget('url.intented'); return redirect()->guest(route($login)); } /** * Report or log an exception. * - * @param \Throwable $exception + * @param \Throwable $exception * @return void * * @throws \Exception @@ -95,6 +92,6 @@ class Handler extends ExceptionHandler // do nothing, mail send error, let laravel only handle this } finally { parent::report($e); - } + }//end try } } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 1c235b5..96ab179 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -35,7 +35,6 @@ class RegisterController extends Controller ]); // Envoi mail activation - return redirect()->route('auth.register')->with('success', 'Mail envoyé pour confirmation'); } } diff --git a/app/Http/Controllers/BasketController.php b/app/Http/Controllers/BasketController.php index 2dc2af2..335bc06 100644 --- a/app/Http/Controllers/BasketController.php +++ b/app/Http/Controllers/BasketController.php @@ -16,7 +16,7 @@ class BasketController extends Controller public function addToCart(Request $request) { $instance = $request->instance ?? "panier"; - $product = Product::find($request->id); + $product = Product::find($request->id); Cart::instance($instance); Cart::add($product, $request->qty); return $this->getCart($instance); @@ -30,7 +30,7 @@ class BasketController extends Controller $instance = $request->instance ?? "panier"; Cart::instance($instance); $lot = $request->items; - foreach($lot as $item) { + foreach ($lot as $item) { $product = Product::find($item["cartItem"]["id"]); Cart::add($product, $item["cartItem"]["qty"]); } @@ -43,7 +43,7 @@ class BasketController extends Controller public function removeFromCart(Request $request) { $instance = $request->instance ?? "panier"; - $rowId = $request->rowId; + $rowId = $request->rowId; Cart::instance($instance); Cart::remove($rowId); return $this->getCart($instance); @@ -52,7 +52,8 @@ class BasketController extends Controller /** * vidage de panier */ - public function emptyCart(Request $request) { + public function emptyCart(Request $request) + { $instance = $request->instance ?? "panier"; Cart::instance($instance); Cart::destroy(); @@ -76,7 +77,7 @@ class BasketController extends Controller $dbpanier = new Collection(); foreach (Cart::content() as $row) { $product = $row->model; - //$product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type); + // $product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type); $product->calculatedPrices = $product->getCalcPrices(); $row->setTaxRate($product->tax->rate); @@ -91,30 +92,42 @@ class BasketController extends Controller $cartInfos = array( "totalTTC" => Cart::total(), - 'totalTVA' => Cart::tax(), //total des taxes - 'totalHT' => Cart::subtotal(), //total sans les taxes - 'totalweight' => Cart::weight(), //poids total des items - 'totalHTbefore' => Cart::priceTotal(), //total avant taxes et remises - 'totaldiscount' => Cart::discount(), //total des remises - 'countItems' => Cart::count(), //nb de produits dans le cart + 'totalTVA' => Cart::tax(), +// total des taxes + 'totalHT' => Cart::subtotal(), +// total sans les taxes + 'totalweight' => Cart::weight(), +// poids total des items + 'totalHTbefore' => Cart::priceTotal(), +// total avant taxes et remises + 'totaldiscount' => Cart::discount(), +// total des remises + 'countItems' => Cart::count(), +// nb de produits dans le cart ); $cartInfosNoPrice = array( "totalTTC" => "-.--", - 'totalTVA' => "-.--", //total des taxes - 'totalHT' => "-.--", //total sans les taxes - 'totalweight' => Cart::weight(), //poids total des items - 'totalHTbefore' => "-.--", //total avant taxes et remises - 'totaldiscount' => "-.--", //total des remises - 'countItems' => Cart::count(), //nb de produits dans le cart + 'totalTVA' => "-.--", +// total des taxes + 'totalHT' => "-.--", +// total sans les taxes + 'totalweight' => Cart::weight(), +// poids total des items + 'totalHTbefore' => "-.--", +// total avant taxes et remises + 'totaldiscount' => "-.--", +// total des remises + 'countItems' => Cart::count(), +// nb de produits dans le cart ); $cartReturn = array($dbpanier,$cartInfosNoPrice); if (config('bosettings.show_prices_authenticated') == "authenticated") { { - if (Auth::guard('customer')->check()) { - $cartReturn = array($dbpanier,$cartInfos); - } + if (Auth::guard('customer')->check()) { + $cartReturn = array($dbpanier,$cartInfos); + } } } if (config('bosettings.show_prices_guest') == "guest") { diff --git a/app/Http/Controllers/Bo/ContentController.php b/app/Http/Controllers/Bo/ContentController.php index d5689b6..af9ab5f 100644 --- a/app/Http/Controllers/Bo/ContentController.php +++ b/app/Http/Controllers/Bo/ContentController.php @@ -13,9 +13,9 @@ class ContentController extends Controller $content = Content::where('key', $key)->first(); if ($_SERVER["REQUEST_METHOD"] === "POST") { - $banner = $request->banner; - $title = $request->title; - $chapeau = $request->chapeau; + $banner = $request->banner; + $title = $request->title; + $chapeau = $request->chapeau; $maintext = $request->value; $request->validate([ @@ -34,14 +34,14 @@ class ContentController extends Controller $content->banner = $imageName; } - $content->title = $title; + $content->title = $title; $content->chapeau = $chapeau; - $content->value = $maintext; + $content->value = $maintext; $content->save(); return redirect()->route('bo.content', ['key' => $content->key, 'content' => $content]) ->with('success', 'Modifications enregistrés !'); - } + }//end if return view('bo.content.manage', compact('content')); } diff --git a/app/Http/Controllers/Bo/CreneauxController.php b/app/Http/Controllers/Bo/CreneauxController.php index 4f51a7f..22adf4d 100644 --- a/app/Http/Controllers/Bo/CreneauxController.php +++ b/app/Http/Controllers/Bo/CreneauxController.php @@ -9,46 +9,47 @@ use Illuminate\Http\Request; class CreneauxController extends Controller { - public function settings(Request $request,$id) + public function settings(Request $request, $id) { - $magasin = Magasin::findOrFail($id); - $timeslotSettings = $magasin->timeslotSettings; + $magasin = Magasin::findOrFail($id); + $timeslotSettings = $magasin->timeslotSettings; if ($timeslotSettings->count() === 0) { - //Aucun settings pour ce magasin + // Aucun settings pour ce magasin $timeslotSettings = $this->makeCreneauxSettings($id); } return view('bo.creneaux.settings', compact('timeslotSettings', 'magasin')); } - public function makeCreneauxSettings($id) { - for ($i=0;$i<7;$i++) { - $dayset = new TimeslotSetting(); + public function makeCreneauxSettings($id) + { + for ($i = 0; $i < 7; $i++) { + $dayset = new TimeslotSetting(); $dayset->magasin_id = $id; - $dayset->day_index = ''.$i; + $dayset->day_index = '' . $i; $dayset->save(); } return Magasin::findOrFail($id)->timeslotSettings; } - public function updateSettings(Request $request,$id) + public function updateSettings(Request $request, $id) { - $plage = $request->plage; + $plage = $request->plage; $magasin_id = $id; - foreach($plage as $index => $day) { - $setting = TimeslotSetting::where('day_index', ''.$index) + foreach ($plage as $index => $day) { + $setting = TimeslotSetting::where('day_index', '' . $index) ->where('magasin_id', $magasin_id) ->firstOrFail(); - //$setting->magasin_id = $magasin_id; ne doit pas changer - $setting->morning_start = $day['morning_start']; - $setting->morning_end = $day['morning_end']; - $setting->afternoon_start = $day['afternoon_start']; - $setting->afternoon_end = $day['afternoon_end']; - $setting->interval = $day['interval']; + // $setting->magasin_id = $magasin_id; ne doit pas changer + $setting->morning_start = $day['morning_start']; + $setting->morning_end = $day['morning_end']; + $setting->afternoon_start = $day['afternoon_start']; + $setting->afternoon_end = $day['afternoon_end']; + $setting->interval = $day['interval']; $setting->max_orders_per_interval = $day['max_orders_per_interval']; - $setting->min_order_preparation = $day['min_order_preparation']; + $setting->min_order_preparation = $day['min_order_preparation']; $setting->save(); } diff --git a/app/Http/Controllers/Bo/FaqController.php b/app/Http/Controllers/Bo/FaqController.php index ccb3291..28ed608 100644 --- a/app/Http/Controllers/Bo/FaqController.php +++ b/app/Http/Controllers/Bo/FaqController.php @@ -8,24 +8,26 @@ use Illuminate\Http\Request; class FaqController extends Controller { - public function index() { + public function index() + { $faq = Faq::all(); return view('bo.faq.index', compact('faq')); } - public function saveDatas(Request $request) { + public function saveDatas(Request $request) + { $faq = $request->faq; for ($i = 0; $i < count($faq); $i++) { $faqToInsert = !empty($faq[$i]["question"]) && !empty($faq[$i]["answer"]); if (isset($faq[$i]["id"]) && $faq[$i]["id"] !== null && $faqToInsert) { - $f = Faq::findOrFail($faq[$i]["id"]); + $f = Faq::findOrFail($faq[$i]["id"]); $f->question = $faq[$i]["question"]; - $f->answer = $faq[$i]["answer"]; + $f->answer = $faq[$i]["answer"]; $f->save(); } else { if ($faqToInsert) { - $c = Faq::updateOrCreate(['question' => $faq[$i]["question"], 'answer' => $faq[$i]["answer"]]); + $c = Faq::updateOrCreate(['question' => $faq[$i]["question"], 'answer' => $faq[$i]["answer"]]); $faq[$i]["id"] = $c->id; } else { unset($faq[$i]); @@ -37,7 +39,8 @@ class FaqController extends Controller return $faq; } - public function destroy(Request $request) { + public function destroy(Request $request) + { $faq = Faq::findOrFail($request->id); $faq->delete(); diff --git a/app/Http/Controllers/Bo/MagasinsController.php b/app/Http/Controllers/Bo/MagasinsController.php index 2c7db51..65c076d 100644 --- a/app/Http/Controllers/Bo/MagasinsController.php +++ b/app/Http/Controllers/Bo/MagasinsController.php @@ -33,7 +33,7 @@ class MagasinsController extends Controller /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) @@ -52,23 +52,22 @@ class MagasinsController extends Controller /** * Display the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function show($id) { - // } /** * Show the form for editing the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function edit($id) { - $magasin = Magasin::findOrFail($id); + $magasin = Magasin::findOrFail($id); $exceptionsCollecte = $magasin->collecteExceptions()->orderBy('date')->get(); return view('bo.magasins.edit', compact('magasin', 'exceptionsCollecte')); } @@ -76,8 +75,8 @@ class MagasinsController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param int $id + * @param \Illuminate\Http\Request $request + * @param integer $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) @@ -97,7 +96,7 @@ class MagasinsController extends Controller /** * Remove the specified resource from storage. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function destroy($id) @@ -110,7 +109,6 @@ class MagasinsController extends Controller return redirect()->back()->withErrors("Suppression impossible : Vous devez conserver au moins 1 point de retrait."); } // @todo : controller les crenaux settings liés - $shop->delete(); return redirect()->route('bo.magasins.index'); } @@ -122,11 +120,11 @@ class MagasinsController extends Controller public function getMagasinInfo($id, $mode = null) { $magasin = Magasin::findOrFail($id); - if(!is_null($mode)) { - if($mode=="tippy") { + if (!is_null($mode)) { + if ($mode == "tippy") { return view('bo.magasins.tippy-card', compact('magasin')); } - if($mode=="json") { + if ($mode == "json") { return $magasin; } return view('bo.magasins.info-card', compact('magasin')); @@ -141,41 +139,40 @@ class MagasinsController extends Controller for ($i = 0; $i < count($collecteException); $i++) { $collecteExceptionToInsert = !empty($collecteException[$i]["date"]); if (isset($collecteException[$i]["id"]) && $collecteException[$i]["id"] !== null && $collecteExceptionToInsert) { - $ce = CollecteException::findOrFail($collecteException[$i]["id"]); - $ce->date = $collecteException[$i]["date"]; - $ce->comment = $collecteException[$i]["comment"]; + $ce = CollecteException::findOrFail($collecteException[$i]["id"]); + $ce->date = $collecteException[$i]["date"]; + $ce->comment = $collecteException[$i]["comment"]; $ce->magasin_id = $collecteException[$i]["magasin_id"]; $ce->save(); } else { if ($collecteExceptionToInsert) { - $ce = CollecteException::updateOrCreate([ + $ce = CollecteException::updateOrCreate([ 'date' => $collecteException[$i]["date"], 'comment' => $collecteException[$i]["comment"], 'magasin_id' => $collecteException[$i]["magasin_id"] ]); $collecteException[$i]["id"] = $ce->id; - } else { unset($collecteException[$i]); $i--; } } - } + }//end for - //remet dans l'ordre avant de renvoyer - //$collecteException = CollecteException::where('magasin_id',)->orderBy('date')->get(); + // remet dans l'ordre avant de renvoyer + // $collecteException = CollecteException::where('magasin_id',)->orderBy('date')->get(); $this->arraySortByColumn($collecteException, "date"); return $collecteException; - } /** * helper function */ - public function arraySortByColumn(&$array, $column, $direction = SORT_ASC) { + public function arraySortByColumn(&$array, $column, $direction = SORT_ASC) + { $reference_array = array(); - foreach($array as $key => $row) { + foreach ($array as $key => $row) { $reference_array[$key] = $row[$column]; } diff --git a/app/Http/Controllers/Bo/OrdersController.php b/app/Http/Controllers/Bo/OrdersController.php index b3cda9e..92b6724 100644 --- a/app/Http/Controllers/Bo/OrdersController.php +++ b/app/Http/Controllers/Bo/OrdersController.php @@ -22,10 +22,8 @@ use Carbon\CarbonImmutable; use Carbon\CarbonInterval; use Gloudemans\Shoppingcart\Facades\Cart; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Str; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; -use Exception; class OrdersController extends Controller { @@ -34,8 +32,7 @@ class OrdersController extends Controller */ public function index(SortOrders $request) { - //$orders = Order::orderBy('date', 'DESC')->get(); - + // $orders = Order::orderBy('date', 'DESC')->get(); $orders = $this->filterOrders($request); $orders = $orders->paginate(10); @@ -45,19 +42,18 @@ class OrdersController extends Controller public function today(SortOrders $request) { - //$orders = Order::orderBy('date', 'DESC')->get(); - + // $orders = Order::orderBy('date', 'DESC')->get(); $orders = $this->filterOrders($request); - //filter today + // filter today $today = CarbonImmutable::now()->startOfDay(); $orders = $orders->whereHas('timeslot', function ($q) use ($today) { $q->where('day', '=', $today->format('d/m/Y')); }); - $orders = $orders->get(); //paginate(20); - + $orders = $orders->get(); +// paginate(20); return view('bo.orders.index', compact('orders', 'today')); } @@ -102,8 +98,8 @@ class OrdersController extends Controller case 'customer_id': $orders = $orders->orderBy('customer_id', Session::get('orders.sort_way')); break; - } - } + }//end switch + }//end if return $orders; } @@ -111,7 +107,7 @@ class OrdersController extends Controller /** * action de changement de statut vers l'avant * envoi de mails transctionnels - * @param String $reference reference de la commande + * @param string $reference reference de la commande */ public function changeStatus($reference) { @@ -119,10 +115,10 @@ class OrdersController extends Controller $order->status_id = $order->status_id + 1; $order->save(); - //send confirm mail + // send confirm mail Mail::to($order->customer->email)->send(new OrderStatusMail($order)); - //return redirect()->route('bo.orders')->with('success', "Changement de status enregistré pour la commande " . $order->reference . "."); + // return redirect()->route('bo.orders')->with('success', "Changement de status enregistré pour la commande " . $order->reference . "."); return back()->with('success', "Changement de status enregistré pour la commande " . $order->reference . "."); } @@ -135,7 +131,7 @@ class OrdersController extends Controller $order->status_id = 7; $order->save(); - //return redirect()->route('bo.orders')->with('success', "La commande à été annulée."); + // return redirect()->route('bo.orders')->with('success', "La commande à été annulée."); return back()->with('success', "La commande " . $order->reference . " à été annulée."); } @@ -173,12 +169,18 @@ class OrdersController extends Controller $cartInfos = array( "totalTTC" => Cart::total(), - 'totalTVA' => Cart::tax(), //total des taxes - 'totalHT' => Cart::subtotal(), //total sans les taxes - 'totalweight' => Cart::weight(), //poids total des items - 'totalHTbefore' => Cart::priceTotal(), //total avant taxes et remises - 'totaldiscount' => Cart::discount(), //total des remises - 'countItems' => Cart::count(), //nb de produits dans le cart + 'totalTVA' => Cart::tax(), +// total des taxes + 'totalHT' => Cart::subtotal(), +// total sans les taxes + 'totalweight' => Cart::weight(), +// poids total des items + 'totalHTbefore' => Cart::priceTotal(), +// total avant taxes et remises + 'totaldiscount' => Cart::discount(), +// total des remises + 'countItems' => Cart::count(), +// nb de produits dans le cart ); return view('sales.recap', compact('activestep', 'cart', 'cartInfos')); @@ -190,10 +192,10 @@ class OrdersController extends Controller */ public function store() { - //save + // save Cart::instance('panier'); $order = new Order(); - //generate order ref + // generate order ref $order->reference = $this->generateOrderRef(); $order->date = Carbon::now(); $order->status_id = 1; @@ -202,7 +204,7 @@ class OrdersController extends Controller $order->save(); - //order_id + // order_id Cart::instance('panier'); $cart = Cart::content(); foreach ($cart as $cartItem) { @@ -210,29 +212,29 @@ class OrdersController extends Controller $order_line->order_id = $order->id; $order_line->product_id = $cartItem->model->id; $order_line->quantity = $cartItem->qty; - //gross unit price + // gross unit price $order_line->unit_price = $cartItem->model->priceHt; - //discount per unit + // discount per unit $order_line->unit_discount = $cartItem->model->discountAmount; - //tax rate for this line + // tax rate for this line $order_line->tax_rate = $cartItem->taxRate; - //tax amount par unit + // tax amount par unit $order_line->unit_tax = round(( ($order_line->unit_price - $order_line->unit_discount) * ($order_line->tax_rate / 100) ) * 100) / 100; - //discount amount for the line + // discount amount for the line $order_line->total_discount = $order_line->unit_discount * $order_line->quantity; - //gross amount for the line + // gross amount for the line $order_line->total_ht = ($order_line->unit_price - $order_line->unit_discount) * $order_line->quantity; - //tax amount for the line + // tax amount for the line $order_line->total_tax = $order_line->unit_tax * $order_line->quantity; - //total TTC avec remises de la ligne + // total TTC avec remises de la ligne $order_line->total_ttc = $order_line->total_ht + $order_line->total_tax; $order_line->save(); - } + }//end foreach - //empty cart + // empty cart Cart::destroy(); - //then redirect + // then redirect return redirect()->route('sales.pick-slot', ['reference' => $order->reference]); } @@ -243,14 +245,14 @@ class OrdersController extends Controller public function generateOrderRef() { - //Avant - //Str::uuid(); - //maintenant - //format : YYYYMMDDHHMM000 + // Avant + // Str::uuid(); + // maintenant + // format : YYYYMMDDHHMM000 $now = Carbon::now(); - //count todays orders + // count todays orders $countorders = Order::whereDate('created_at', Carbon::today())->count(); - //add one + // add one $countorders++; $ref = $now->isoFormat('YYYYMMDDHHmm') . str_pad($countorders, 3, "0", STR_PAD_LEFT); return $ref; @@ -269,9 +271,8 @@ class OrdersController extends Controller } $availCreneaux = array(); - //plus besoin car chargé par le composant vue. - //$availCreneaux = $this->getAvailableCreneauxByShop($magasin->id); - + // plus besoin car chargé par le composant vue. + // $availCreneaux = $this->getAvailableCreneauxByShop($magasin->id); $order = Order::where('reference', '=', $reference)->firstOrFail(); return view('sales.pick-slot', compact('activestep', 'availCreneaux', 'order', 'magasin')); @@ -282,13 +283,13 @@ class OrdersController extends Controller */ public function getAvailableCreneauxByShop($id) { - //setting à stocker et réutiliser + // setting à stocker et réutiliser $plage_days = Setting::where('key', 'order_withdrawal_period')->firstOrFail()->value; $magasin = Magasin::findOrFail($id); $timeslotSettings = $magasin->timeslotSettings; - //$timeslotSettings = TimeslotSetting::all(); - //fabriquons un tableau recap + // $timeslotSettings = TimeslotSetting::all(); + // fabriquons un tableau recap $plage = array(); foreach ($timeslotSettings as $day) { $plage[$day->day_index] = array( @@ -302,18 +303,18 @@ class OrdersController extends Controller ); } - //génération des plages - //start today + // génération des plages + // start today $today = CarbonImmutable::now()->startOfDay(); $weekDay = $today->weekday(); - //final boundary (permet de limiter la liste des jours d'exception) + // final boundary (permet de limiter la liste des jours d'exception) $finalday = $today->add($plage_days, 'day'); $now = CarbonImmutable::now(); - //jours exceptions + // jours exceptions // $noCollectDays = CollecteException::where('magasin_id',$magasin->id) - // ->whereDate('date', '>', $now) - // ->whereDate('date', '<=', $finalday) - // ->orderBy('date')->get(); + // ->whereDate('date', '>', $now) + // ->whereDate('date', '<=', $finalday) + // ->orderBy('date')->get(); $noCollectDays = $magasin->collecteExceptions() ->whereDate('date', '>', $now) ->whereDate('date', '<=', $finalday) @@ -329,7 +330,7 @@ class OrdersController extends Controller $weekDay = $current->weekday(); $interval = CarbonInterval::createFromFormat('h:i', $plage[$weekDay]['interval'] ?? '00:15'); - //si c'est un jour exception skip + // si c'est un jour exception skip $skip = false; foreach ($noCollectDays as $not_today) { if ($current->isSameDay($not_today->date)) { @@ -339,7 +340,7 @@ class OrdersController extends Controller if ($skip) { continue; } - //matinée + // matinée if (!empty($plage[$weekDay]['morning_start'])) { $currentTime = Carbon::createFromTimeString($plage[$weekDay]['morning_start']); $endTime = Carbon::createFromTimeString($plage[$weekDay]['morning_end']); @@ -350,8 +351,7 @@ class OrdersController extends Controller ->where('time', $creneau)->count(); // $nbtakens = Timeslot::where('day', $current->format('d/m/Y')) - // ->where('time', $creneau)->count(); - + // ->where('time', $creneau)->count(); if ($nbtakens >= $plage[$weekDay]['max_orders_per_interval']) { $isDispo = false; } else { @@ -361,14 +361,14 @@ class OrdersController extends Controller if ($current->addHours($currentTime->format('H'))->addMinutes($currentTime->format('i')) < $now->add($delaiPrepa)) { $isDispo = false; } - //attention si la date est passée (today mais avant maintenant) : pas de créneau + // attention si la date est passée (today mais avant maintenant) : pas de créneau if ($current > $today || $currentTime >= $now) { $availCreneaux[$current->format('d/m/Y')][] = array($creneau,$isDispo); } $currentTime->add($interval); } while ($currentTime <= $endTime); - } - //aprem + }//end if + // aprem if (!empty($plage[$weekDay]['afternoon_start'])) { $currentTime = Carbon::createFromTimeString($plage[$weekDay]['afternoon_start']); $endTime = Carbon::createFromTimeString($plage[$weekDay]['afternoon_end']); @@ -385,18 +385,18 @@ class OrdersController extends Controller $isDispo = false; } - //attention si la date est passée (today mais avant maintenant) : pas de créneau + // attention si la date est passée (today mais avant maintenant) : pas de créneau if ($current > $today || $currentTime >= $now) { $availCreneaux[$current->format('d/m/Y')][] = array($creneau,$isDispo); } $currentTime->add($interval); } while ($currentTime <= $endTime); - } - } + }//end if + }//end for return $availCreneaux; } - //call ajax pour le composant vue de timeslots + // call ajax pour le composant vue de timeslots public function getAvailableCreneaux(Request $request) { return $this->getAvailableCreneauxByShop($request->id); @@ -424,7 +424,7 @@ class OrdersController extends Controller if ($order->status_id == 1) { // on ne traite l'enregistrement que pour les commandes en attente venant de l'étape de récap - //save timeslot + // save timeslot $timeslot = Timeslot::firstOrNew(['order_id' => $order->id]); $timeslot->order_id = $order->id; $timeslot->magasin_id = $magasin_id; @@ -432,14 +432,14 @@ class OrdersController extends Controller $timeslot->time = $tstime; $timeslot->save(); - //save order status + // save order status $order->status_id = 3; $order->save(); - //send confirm mail + // send confirm mail Mail::to($order->customer->email)->queue(new OrderConfirmMail($order)); - //envoi du mail de confirmation aux admins site + // envoi du mail de confirmation aux admins site $toMailSetting = Setting::where('key', 'send_order_confirm_mail_to')->first(); if (empty($toMailSetting->value)) { $toMail = config('mail.from.address'); @@ -448,13 +448,13 @@ class OrdersController extends Controller } Mail::to($toMail)->queue(new OrderConfirmAdminMail($order)); - //export commande + // export commande if (config('bosettings.regate_orders')) { CsvOrderWrite::dispatch($order); } - } + }//end if - //redirect to final confirmation + // redirect to final confirmation return redirect()->route('sales.confirm', ['reference' => $order->reference]); } @@ -477,7 +477,7 @@ class OrdersController extends Controller $idcommande = Session::get('idcommande'); $order = Order::where('reference', '=', $reference)->firstOrFail(); - //1 seul magasin en base pour le moment + // 1 seul magasin en base pour le moment $magasin = Magasin::find($order->timeslot->magasin->id); return view('sales.confirm', compact('activestep', 'order', 'magasin')); diff --git a/app/Http/Controllers/Bo/ProductsController.php b/app/Http/Controllers/Bo/ProductsController.php index a0664f1..48da0e7 100644 --- a/app/Http/Controllers/Bo/ProductsController.php +++ b/app/Http/Controllers/Bo/ProductsController.php @@ -40,13 +40,13 @@ class ProductsController extends Controller } $products = $products->paginate(10); - //ici récupération des infos additionnelles pour affichage dans la liste + // ici récupération des infos additionnelles pour affichage dans la liste // @todo : parametrer l'occurence de ces affichages car ça n'aura aucun sens selon le type de produit foreach ($products as &$product) { - if(!empty($product->product_type)) { + if (!empty($product->product_type)) { $product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type); if ($product->additionnalProductInfo === null) { - //n'existe pas on renseigne un vide + // n'existe pas on renseigne un vide $product_type = $product->product_type; $modelClass = 'App\Models\\' . ucfirst($product_type); $product->$product_type = new $modelClass(); @@ -64,15 +64,15 @@ class ProductsController extends Controller { if (!empty($product_type) && !array_key_exists($product_type, config('theme.enum_product_types'))) { abort(404, "Cette page n'existe pas."); - //return redirect()->route('bo.products.index'); + // return redirect()->route('bo.products.index'); } - $modelClass = 'App\Models\\' . ucfirst($product_type); - $product = new Product(); - if(!empty($product_type)) { + $modelClass = 'App\Models\\' . ucfirst($product_type); + $product = new Product(); + if (!empty($product_type)) { $product->$product_type = new $modelClass(); } - $ranges = Range::all(); - $taxes = TaxRate::all(); + $ranges = Range::all(); + $taxes = TaxRate::all(); return view('bo.products.create', compact('product_type', 'product', 'ranges', 'taxes')); } @@ -83,7 +83,7 @@ class ProductsController extends Controller */ public function store(ProductRequest $request) { - //products fields + // products fields $name = $request->name; $description = $request->description; $picture = $request->picture; @@ -99,7 +99,7 @@ class ProductsController extends Controller $weight_unit = $request->weight_unit; $status = $request->status === null ? 0 : 1; $orderable_start = $request->orderable_start_date === null ? null : $request->orderable_start_date . " " . $request->orderable_start_time; - $orderable_end = $request->orderable_end_date === null ? null : $request->orderable_end_date . " " . $request->orderable_end_time; + $orderable_end = $request->orderable_end_date === null ? null : $request->orderable_end_date . " " . $request->orderable_end_time; $star = $request->star === null ? 0 : 1; $slug = Str::slug($name); $rangeId = $request->range_id; @@ -163,7 +163,7 @@ class ProductsController extends Controller $product->save(); } - //ajout des infos additionnelles + // ajout des infos additionnelles $product_type = $request->product_type; if ($product_type !== null) { @@ -174,7 +174,7 @@ class ProductsController extends Controller } - //additionnal product info (foodProduct) + // additionnal product info (foodProduct) return redirect()->route('bo.products.index'); } @@ -184,13 +184,12 @@ class ProductsController extends Controller public function edit($id) { $product = Product::findOrFail($id); - if(!empty($product->product_type)) { + if (!empty($product->product_type)) { $product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type); - //above lines equivalent to : - //$product = Product::with('additionnalProductInfo')->findOrFail($id); - + // above lines equivalent to : + // $product = Product::with('additionnalProductInfo')->findOrFail($id); if ($product->additionnalProductInfo === null) { - //n'existe pas on renseigne un vide + // n'existe pas on renseigne un vide $product_type = $product->product_type; $modelClass = 'App\Models\\' . ucfirst($product_type); $product->$product_type = new $modelClass(); @@ -215,8 +214,7 @@ class ProductsController extends Controller public function update(Product $product, ProductRequest $request) { - //$product = Product::findOrFail($id); - + // $product = Product::findOrFail($id); $orderable_end_time = $request->orderable_end_time === null ? "23:59" : $request->orderable_end_time; $name = $request->name; @@ -234,7 +232,7 @@ class ProductsController extends Controller $weight_unit = $request->weight_unit; $status = $request->status === null ? 0 : 1; $orderable_start = $request->orderable_start_date === null ? null : $request->orderable_start_date . " " . $request->orderable_start_time; - $orderable_end = $request->orderable_end_date === null ? null : $request->orderable_end_date . " " . $orderable_end_time; + $orderable_end = $request->orderable_end_date === null ? null : $request->orderable_end_date . " " . $orderable_end_time; $star = $request->star === null ? 0 : 1; $slug = Str::slug($name); $rangeId = $request->range_id; @@ -312,37 +310,37 @@ class ProductsController extends Controller $oldSlug->delete(); } - //ajout des infos additionnelles + // ajout des infos additionnelles $product_type = $request->product_type; - //save additionnal + // save additionnal if ($product_type !== null) { $methodName = "save" . ucfirst($product_type); $this->$methodName($request, $product->id); } - //tags associés + // tags associés if (!empty($tags)) { $arTagIds = array(); foreach ($tags as $tag) { $oTag = json_decode($tag); if (empty($oTag->id)) { - //we need a new tag + // we need a new tag $arTagIds[] = $this->storeTag($oTag); } else { $arTagIds[] = $oTag->id; } } - //prise en charge de la liaison avec les produits + // prise en charge de la liaison avec les produits $product->tags()->sync($arTagIds); } else { $product->tags()->sync(array()); } - //produits associés + // produits associés if (!empty($request->prods)) { $productIds = explode(",", $request->prods); - //prise en charge de la liaison avec les produits + // prise en charge de la liaison avec les produits $product->products()->sync($productIds); } else { $product->products()->sync(array()); @@ -360,12 +358,13 @@ class ProductsController extends Controller $slug = Str::slug($oTag->label); $tag = Tag::where('slug', $slug)->first(); if ($tag === null) { - //si on pas encore ce tag on le crée + // si on pas encore ce tag on le crée $tag = new Tag(); $tag->label = $oTag->label; $tag->slug = Str::slug($oTag->label); - $tag->status = 1; //a new tag is published by default - $tag->order = TagsController::getLastOrder(); + $tag->status = 1; +// a new tag is published by default + $tag->order = TagsController::getLastOrder(); $tag->save(); } return $tag->id; @@ -395,22 +394,24 @@ class ProductsController extends Controller /** * check if inco data exists */ - public function checkIncoData(Request $request) { - $id = $request->id; + public function checkIncoData(Request $request) + { + $id = $request->id; $xmlInco = XmlInco::find($id); - if(!empty($xmlInco)) { - //we have data - $hasInco = __("Des données Inco sont disponibles, souhaitez vous les associer à ce produit ?"); + if (!empty($xmlInco)) { + // we have data + $hasInco = __("Des données Inco sont disponibles, souhaitez vous les associer à ce produit ?"); $preparedImages = $this->prepareIncoImages($xmlInco->picture); - return view('bo.products.load-inco',compact('hasInco','xmlInco','preparedImages')); + return view('bo.products.load-inco', compact('hasInco', 'xmlInco', 'preparedImages')); } else { - return array("data"=> array()); + return array("data" => array()); } } - public function getPrepareIncoImages(Request $request) { - $picture = $request->picture; + public function getPrepareIncoImages(Request $request) + { + $picture = $request->picture; $preparedImages = $this->prepareIncoImages($picture); return view('bo.products.inco-images', compact('preparedImages')); } @@ -418,17 +419,18 @@ class ProductsController extends Controller /** * prepare Inco Images */ - public function prepareIncoImages($picture) { + public function prepareIncoImages($picture) + { $preparedImages = array(); foreach ($picture as $incoImage) { - //charge - if(File::exists(storage_path($incoImage))) { + // charge + if (File::exists(storage_path($incoImage))) { $imagePath = storage_path($incoImage); - //redimensionne - //create mask - //Resize original image into mask + // redimensionne + // create mask + // Resize original image into mask $this->resizeImg( $imagePath, config('theme.product_image_large_maxwidth'), @@ -445,8 +447,8 @@ class ProductsController extends Controller $preparedImages[] = "inco/images/" . File::name($incoImage) . "_large.png"; - } - } + }//end if + }//end foreach return $preparedImages; } @@ -479,30 +481,30 @@ class ProductsController extends Controller } // ---- Chargement de l'image source - $img = $image_create_func($imagePath); + $img = $image_create_func($imagePath); list($imgWidth, $imgHeight) = getimagesize($imagePath); // ---- Calcul les nouvelles dimensions de l'image - if($imgWidth > $imgHeight){ - $finalWidth = $maskWidth; - $finalHeight = ($finalWidth*$imgHeight)/$imgWidth; - }else{ + if ($imgWidth > $imgHeight) { + $finalWidth = $maskWidth; + $finalHeight = ($finalWidth * $imgHeight) / $imgWidth; + } else { $finalHeight = $maskHeight; - $finalWidth = ($finalHeight*$imgWidth)/$imgHeight; + $finalWidth = ($finalHeight * $imgWidth) / $imgHeight; } // ---- Redimensionne l'image source $resizeImg = imagecreatetruecolor($finalWidth, $finalHeight); - imagealphablending( $resizeImg, false ); - imagesavealpha( $resizeImg, true ); + imagealphablending($resizeImg, false); + imagesavealpha($resizeImg, true); imagecopyresampled($resizeImg, $img, 0, 0, 0, 0, $finalWidth, $finalHeight, $imgWidth, $imgHeight); // ---- Copie l'image redimensionnée dans le mask - imagecopy($mask, $resizeImg, ($maskWidth-$finalWidth)/2, ($maskHeight-$finalHeight)/2, 0, 0, imagesx($resizeImg), imagesy($resizeImg)); - imagealphablending( $mask, false ); - imagesavealpha( $mask, true ); + imagecopy($mask, $resizeImg, ($maskWidth - $finalWidth) / 2, ($maskHeight - $finalHeight) / 2, 0, 0, imagesx($resizeImg), imagesy($resizeImg)); + imagealphablending($mask, false); + imagesavealpha($mask, true); - //écrit dans storage/app/public + // écrit dans storage/app/public // ---- Créer le fichier final imagepng($mask, storage_path('app/public/inco/images/' . $resizedName), 5); @@ -522,21 +524,21 @@ class ProductsController extends Controller $imagePath = storage_path("app/public/" . $imagePath); $product_id = $request->product; - $product = Product::findOrFail($product_id); + $product = Product::findOrFail($product_id); $str_random = Str::random(5); - //default is large image + // default is large image $finalImageName = $product->id . '_' . $str_random . '_large.' . File::extension($imagePath); $productimagespath = public_path('images/produits'); - if(!File::isDirectory($productimagespath)) { + if (!File::isDirectory($productimagespath)) { File::makeDirectory($productimagespath, 0644, true); } File::copy($imagePath, $productimagespath . "/" . $finalImageName); - //suppression de l'ancien fichier + // suppression de l'ancien fichier if ($product->picture_large !== null && file_exists(public_path('images/produits/') . $product->picture_large)) { unlink(public_path('images/produits/') . $product->picture_large); } @@ -544,12 +546,12 @@ class ProductsController extends Controller $product->picture_large = $finalImageName; - //now set small image - $imagePath = str_replace("_large", "_small", $imagePath); + // now set small image + $imagePath = str_replace("_large", "_small", $imagePath); $finalImageName = $product->id . '_' . $str_random . '.' . File::extension($imagePath); File::copy($imagePath, $productimagespath . "/" . $finalImageName); - //suppression de l'ancien fichier + // suppression de l'ancien fichier if ($product->picture !== null && file_exists(public_path('images/produits/') . $product->picture)) { unlink(public_path('images/produits/') . $product->picture); } @@ -558,7 +560,7 @@ class ProductsController extends Controller $product->save(); - //@TODO : envoyer une réponse pour maj de l'interface + // @TODO : envoyer une réponse pour maj de l'interface return $product; } @@ -641,7 +643,7 @@ class ProductsController extends Controller ]); $anifoodProduct->composition = $request->composition; - $anifoodProduct->servings = $request->servings; + $anifoodProduct->servings = $request->servings; $anifoodProduct->save(); } @@ -655,8 +657,8 @@ class ProductsController extends Controller 'product_id' => $product_id, ]); - $garmentProduct->size = $request->size; - $garmentProduct->color = $request->color; + $garmentProduct->size = $request->size; + $garmentProduct->color = $request->color; $garmentProduct->material = $request->material; $garmentProduct->save(); } @@ -666,7 +668,7 @@ class ProductsController extends Controller */ public function show() { - //not in use + // not in use } /** @@ -682,7 +684,7 @@ class ProductsController extends Controller * working method to start the mapping of inco fields into foodproduct */ /* - public function mapIncoFieldsToFoodProduct () { + public function mapIncoFieldsToFoodProduct () { }*/ } diff --git a/app/Http/Controllers/Bo/PromotionsController.php b/app/Http/Controllers/Bo/PromotionsController.php index 36ca774..cc82919 100644 --- a/app/Http/Controllers/Bo/PromotionsController.php +++ b/app/Http/Controllers/Bo/PromotionsController.php @@ -31,17 +31,16 @@ class PromotionsController extends Controller $discTypes = DiscountType::all(); $existingProds = Product::all(); - $promotion = new Promotion(); + $promotion = new Promotion(); $selectedProds = $promotion->products; - //$existingProds = $existingProds->diff($selectedProds); - + // $existingProds = $existingProds->diff($selectedProds); return view('bo.promotions.create', compact('discTypes', 'existingProds', 'selectedProds')); } /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) @@ -52,19 +51,19 @@ class PromotionsController extends Controller ]); $productIds = explode(",", $request->product_id); - $discType = $request->discount_type_id; - $value = $request->discount_value; + $discType = $request->discount_type_id; + $value = $request->discount_value; $date_start = $request->date_start_date . " " . $request->date_start_time; - $date_end = $request->date_end_date . " " . $request->date_end_time; + $date_end = $request->date_end_date . " " . $request->date_end_time; - $promotion = new Promotion(); + $promotion = new Promotion(); $promotion->discount_type_id = $discType; - $promotion->discount_value = $value; - $promotion->date_start = $date_start; - $promotion->date_end = $date_end; + $promotion->discount_value = $value; + $promotion->date_start = $date_start; + $promotion->date_end = $date_end; $promotion->save(); - //prise en charge de la liaison avec les produits + // prise en charge de la liaison avec les produits $promotion->products()->sync($productIds); return redirect()->route('bo.promotions.index'); @@ -73,18 +72,17 @@ class PromotionsController extends Controller /** * Display the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function show($id) { - // } /** * Show the form for editing the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function edit($id) @@ -102,8 +100,8 @@ class PromotionsController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param int $id + * @param \Illuminate\Http\Request $request + * @param integer $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) @@ -115,35 +113,34 @@ class PromotionsController extends Controller ]); $productIds = explode(",", $request->product_id); - $discType = $request->discount_type_id; - $value = $request->discount_value; + $discType = $request->discount_type_id; + $value = $request->discount_value; $date_start = $request->date_start_date . " " . $request->date_start_time; - $date_end = $request->date_end_date . " " . $request->date_end_time; + $date_end = $request->date_end_date . " " . $request->date_end_time; $promotion->discount_type_id = $discType; - $promotion->discount_value = $value; - $promotion->date_start = $date_start; - $promotion->date_end = $date_end; + $promotion->discount_value = $value; + $promotion->date_start = $date_start; + $promotion->date_end = $date_end; $promotion->save(); - //prise en charge de la liaison avec les produits + // prise en charge de la liaison avec les produits $promotion->products()->sync($productIds); return redirect()->route('bo.promotions.edit', $promotion->id)->with('success', 'Modifications enregistrés !'); - } /** * Remove the specified resource from storage. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function destroy($id) { $p = Promotion::findOrFail($id); - //prise en charge de la liaison avec les produits + // prise en charge de la liaison avec les produits $p->products()->detach(); $p->delete(); diff --git a/app/Http/Controllers/Bo/RangesController.php b/app/Http/Controllers/Bo/RangesController.php index 8212222..36ee1c3 100644 --- a/app/Http/Controllers/Bo/RangesController.php +++ b/app/Http/Controllers/Bo/RangesController.php @@ -24,11 +24,11 @@ class RangesController extends Controller public function store(Request $request) { - $name = $request->name; - $slug = Str::slug($name); + $name = $request->name; + $slug = Str::slug($name); $description = $request->description; - $picture = $request->picture; - $status = $request->status === null ? 0 : 1; + $picture = $request->picture; + $status = $request->status === null ? 0 : 1; $request->validate([ 'name' => 'required|string|max:255', @@ -38,11 +38,11 @@ class RangesController extends Controller config('theme.range_image_maxheight'), ]); - $range = new Range(); - $range->name = $name; - $range->slug = $slug; + $range = new Range(); + $range->name = $name; + $range->slug = $slug; $range->description = $description; - $range->status = $status; + $range->status = $status; $range->save(); if ($picture !== null) { @@ -63,11 +63,11 @@ class RangesController extends Controller public function update(Request $request, $id) { - $name = $request->name; - $slug = Str::slug($name); + $name = $request->name; + $slug = Str::slug($name); $description = $request->description; - $picture = $request->picture; - $status = $request->status === null ? 0 : 1; + $picture = $request->picture; + $status = $request->status === null ? 0 : 1; $request->validate([ 'name' => 'required|string|max:255', @@ -80,8 +80,9 @@ class RangesController extends Controller $range = Range::findOrFail($id); if ($picture !== null) { - if ($range->picture !== null && file_exists(public_path('images/gammes/') . $range->picture)) + if ($range->picture !== null && file_exists(public_path('images/gammes/') . $range->picture)) { unlink(public_path('images/gammes/') . $range->picture); + } $imageName = $range->id . '_' . $slug . '_' . Str::random(5) . '.' . $picture->extension(); $picture->move(public_path('images/gammes'), $imageName); } @@ -91,17 +92,18 @@ class RangesController extends Controller if ($range->slug != $slug) { $exist = OldSlug::where('slug', $range->slug)->first(); if ($exist === null) { - $oldSlug = new OldSlug(); + $oldSlug = new OldSlug(); $oldSlug->range_id = $range->id; - $oldSlug->slug = $range->slug; + $oldSlug->slug = $range->slug; $oldSlug->save(); } } - $range->slug = $slug; + $range->slug = $slug; $range->description = $description; - if ($picture !== null) + if ($picture !== null) { $range->picture = $imageName; + } $range->status = $status; $range->save(); diff --git a/app/Http/Controllers/Bo/SettingsController.php b/app/Http/Controllers/Bo/SettingsController.php index 8955580..121d32d 100644 --- a/app/Http/Controllers/Bo/SettingsController.php +++ b/app/Http/Controllers/Bo/SettingsController.php @@ -10,9 +10,10 @@ use Illuminate\Support\Facades\Config; class SettingsController extends Controller { - public function manage(Request $request) { + public function manage(Request $request) + { - $settings = Setting::all(); + $settings = Setting::all(); $settingsToPrint = []; foreach ($settings as $setting) { $settingsToPrint[$setting->key] = $setting->value; @@ -21,22 +22,23 @@ class SettingsController extends Controller if ($_SERVER["REQUEST_METHOD"] === "POST") { $input = $request->all(); - //comparer les settingsToPrint (en base) avec les inputs (pour trouver un nouveau) - foreach($input as $key=>$value) { - if(!isset($settingsToPrint[$key]) + // comparer les settingsToPrint (en base) avec les inputs (pour trouver un nouveau) + foreach ($input as $key => $value) { + if ( + !isset($settingsToPrint[$key]) && $key != "_method" - && $key != "_token") - { - //new setting - $setting = new Setting(); - $setting->key = $key; + && $key != "_token" + ) { + // new setting + $setting = new Setting(); + $setting->key = $key; $setting->value = $value ?? 0; $setting->save(); - } + } } - for($i = 0; $i < count($settings); $i++) { - if(is_array($request->input($settings[$i]->key))) { + for ($i = 0; $i < count($settings); $i++) { + if (is_array($request->input($settings[$i]->key))) { $settings[$i]->value = implode(',', $request->input($settings[$i]->key)); } else { $settings[$i]->value = $request->input($settings[$i]->key) === null ? 0 : $request->input($settings[$i]->key); @@ -44,15 +46,14 @@ class SettingsController extends Controller $settings[$i]->save(); } - //store redirector to keep flash message from being wipe pby artisan call below + // store redirector to keep flash message from being wipe pby artisan call below $redirector = redirect()->route('bo.settings')->with('success', 'Modifications enregistrés !'); - //all settings saved : cache routes + // all settings saved : cache routes Artisan::call('route:clear'); - //programmer un php artisan optimize ? (une fois par jour la nuit par exemple) - + // programmer un php artisan optimize ? (une fois par jour la nuit par exemple) return $redirector; - } + }//end if return view('bo.settings', compact('settingsToPrint')); } @@ -60,8 +61,9 @@ class SettingsController extends Controller /** * Management des settings dont la clé est préfixée theme_ */ - public function manageTheme(Request $request) { - $settings = Setting::where('key', 'LIKE', 'theme_%')->get(); + public function manageTheme(Request $request) + { + $settings = Setting::where('key', 'LIKE', 'theme_%')->get(); $settingsToPrint = []; foreach ($settings as $setting) { $settingsToPrint[$setting->key] = $setting->value; @@ -69,21 +71,21 @@ class SettingsController extends Controller $config_settings = Config::get(('theme.bo_theme_settings')); - //check if, for each of the theme defined settings we have a database setting + // check if, for each of the theme defined settings we have a database setting foreach ($config_settings as $onekey => $params) { if (!isset($settingsToPrint['theme_' . $onekey])) { - $dbsetting = new Setting(); - $dbsetting->key = 'theme_' . $onekey; + $dbsetting = new Setting(); + $dbsetting->key = 'theme_' . $onekey; $dbsetting->value = $params['default_value']; $dbsetting->save(); - //injection dans settings to print + // injection dans settings to print $settingsToPrint[$dbsetting->key] = $dbsetting->value; } } if ($_SERVER["REQUEST_METHOD"] === "POST") { - for($i = 0; $i < count($settings); $i++) { - //attention pour les booléens/checkbox on enregistre 'on' + for ($i = 0; $i < count($settings); $i++) { + // attention pour les booléens/checkbox on enregistre 'on' $settings[$i]->value = $request->input($settings[$i]->key) === null ? 0 : $request->input($settings[$i]->key); $settings[$i]->save(); } diff --git a/app/Http/Controllers/Bo/SlidersController.php b/app/Http/Controllers/Bo/SlidersController.php index 34c7137..c2a55b6 100644 --- a/app/Http/Controllers/Bo/SlidersController.php +++ b/app/Http/Controllers/Bo/SlidersController.php @@ -33,7 +33,7 @@ class SlidersController extends Controller /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) @@ -62,18 +62,17 @@ class SlidersController extends Controller /** * Display the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function show($id) { - // } /** * Show the form for editing the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function edit($id) @@ -85,8 +84,8 @@ class SlidersController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param int $id + * @param \Illuminate\Http\Request $request + * @param integer $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) @@ -113,7 +112,7 @@ class SlidersController extends Controller /** * Remove the specified resource from storage. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function destroy($id) @@ -126,7 +125,6 @@ class SlidersController extends Controller return redirect()->back()->withErrors("Suppression impossible : Vous devez conserver au moins 1 Slider"); } // @todo : controller les slides liés - $slider->delete(); return redirect()->route('bo.sliders.index'); } diff --git a/app/Http/Controllers/Bo/SlidesController.php b/app/Http/Controllers/Bo/SlidesController.php index ae59c4f..f6c5eee 100644 --- a/app/Http/Controllers/Bo/SlidesController.php +++ b/app/Http/Controllers/Bo/SlidesController.php @@ -37,7 +37,7 @@ class SlidesController extends Controller * * @todo : validation des dates * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) @@ -104,18 +104,17 @@ class SlidesController extends Controller /** * Display the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function show($id) { - // } /** * Show the form for editing the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function edit($id) @@ -128,8 +127,8 @@ class SlidesController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param int $id + * @param \Illuminate\Http\Request $request + * @param integer $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) @@ -198,7 +197,7 @@ class SlidesController extends Controller /** * Remove the specified resource from storage. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function destroy($id) @@ -230,7 +229,7 @@ class SlidesController extends Controller $current->save(); return back(); - //return redirect()->route('bo.slides.index'); + // return redirect()->route('bo.slides.index'); } /** diff --git a/app/Http/Controllers/Bo/TagsController.php b/app/Http/Controllers/Bo/TagsController.php index 472addf..d23b965 100644 --- a/app/Http/Controllers/Bo/TagsController.php +++ b/app/Http/Controllers/Bo/TagsController.php @@ -33,20 +33,20 @@ class TagsController extends Controller /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { - $label = $request->label; - $slug = Str::slug($label); + $label = $request->label; + $slug = Str::slug($label); $status = $request->status === null ? 0 : 1; $request->validate([ 'label' => 'required|string|max:255', ]); - $tag = new Tag(); + $tag = new Tag(); $tag->label = $label; $tag->slug = $slug; $tag->status = $status; @@ -59,18 +59,17 @@ class TagsController extends Controller /** * Display the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function show($id) { - // } /** * Show the form for editing the specified resource. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function edit($id) @@ -82,14 +81,14 @@ class TagsController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param int $id + * @param \Illuminate\Http\Request $request + * @param integer $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { - $label = $request->label; - $slug = Str::slug($label); + $label = $request->label; + $slug = Str::slug($label); $status = $request->status === null ? 0 : 1; $request->validate([ @@ -98,8 +97,8 @@ class TagsController extends Controller $tag = Tag::findOrFail($id); - $tag->label = $label; - $tag->slug = $slug; + $tag->label = $label; + $tag->slug = $slug; $tag->status = $status; $tag->save(); @@ -109,7 +108,7 @@ class TagsController extends Controller /** * Remove the specified resource from storage. * - * @param int $id + * @param integer $id * @return \Illuminate\Http\Response */ public function destroy($id) @@ -145,11 +144,12 @@ class TagsController extends Controller $current->save(); return back(); - //return redirect()->route('bo.slides.index'); + // return redirect()->route('bo.slides.index'); } - public function toggleStatus($id) { - $tag = Tag::findOrFail($id); + public function toggleStatus($id) + { + $tag = Tag::findOrFail($id); $tag->status = !($tag->status); $tag->save(); return back(); diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php index c68f468..dbaf5ee 100644 --- a/app/Http/Controllers/ContactController.php +++ b/app/Http/Controllers/ContactController.php @@ -16,7 +16,7 @@ class ContactController extends Controller { $status = $request->session()->get('status'); - //1er magasin en base pour le moment + // 1er magasin en base pour le moment $magasin = Magasin::first(); $content = Content::where('key', 'contact')->first(); @@ -28,12 +28,12 @@ class ContactController extends Controller $data = $request->all(); $toMailSetting = Setting::where('key', 'send_contact_mail_to')->first(); - if(empty($toMailSetting->value)) { + if (empty($toMailSetting->value)) { $toMail = config('mail.from.address'); } else { $toMail = $toMailSetting->value; } - //envoi du mail d'alerte + // envoi du mail d'alerte Mail::to($toMail)->send(new SendContactMail($request)); return back()->with('status', true); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index a0a2a8a..ce1176d 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -9,5 +9,7 @@ use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { - use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + use AuthorizesRequests; + use DispatchesJobs; + use ValidatesRequests; } diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index c44e51b..023f3ea 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -255,8 +255,9 @@ class CustomerController extends Controller $passwordReset->save(); Mail::to($email)->send(new PasswordResetMail($token)); - return back()->with('success', - __("La procédure pour changer votre mot de passe a été envoyé sur votre email.") + return back()->with( + 'success', + __("La procédure pour changer votre mot de passe a été envoyé sur votre email.") ); } else { return back()->withErrors(__("Cette adresse email n'est pas enregistrée dans nos services.")); @@ -338,7 +339,7 @@ class CustomerController extends Controller public function dashboard(Request $request) { - //show Profile + // show Profile /** @var \App\Models\Customers|null $customer */ $customer = Auth::guard('customer')->user(); if (!$customer) { @@ -405,7 +406,7 @@ class CustomerController extends Controller public function orderDetail($reference) { - $order = Order::where('reference', '=', $reference) + $order = Order::where('reference', '=', $reference) ->where('customer_id', Auth::guard('customer')->user()->id) ->firstOrFail(); @@ -430,7 +431,6 @@ class CustomerController extends Controller $customer->forums()->delete(); // TODO : Suppression via la CRM - if (Auth::guard('customer')->user()->id === $customer->id) { Auth::guard('customer')->logout(); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 9f1046d..a4b9f2f 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -7,7 +7,6 @@ use App\Models\Product; use App\Models\Slider; use App\Models\Range; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Validator; use LDC\LDCCRM\Enums\ApiError; use LDC\LDCCRM\Exceptions\ApiErrorException; @@ -19,7 +18,7 @@ class HomeController extends Controller public function index(Request $request) { $content = Content::where('key', 'accueil')->first(); - //star products + // star products $products = Product::where('status', 1)->where('star', 1)->get(); $slider = Slider::where('slug', 'home')->first(); @@ -37,8 +36,8 @@ class HomeController extends Controller /** * Call the CRM to add a single optin - * @param String $email Email to add as a single optin - * @return String Message to print to the customer + * @param string $email Email to add as a single optin + * @return string Message to print to the customer */ public function addOptIn(Request $request) { diff --git a/app/Http/Controllers/IndexController.php b/app/Http/Controllers/IndexController.php index 19d896b..16c8ed7 100644 --- a/app/Http/Controllers/IndexController.php +++ b/app/Http/Controllers/IndexController.php @@ -8,7 +8,6 @@ use Illuminate\Http\Request; class IndexController extends Controller { - /** * deprecated */ @@ -39,7 +38,7 @@ class IndexController extends Controller public function faq(Request $request) { $content = Content::where('key', 'faq')->first(); - $faq = Faq::all(); - return view('faq', compact('faq','content')); + $faq = Faq::all(); + return view('faq', compact('faq', 'content')); } } diff --git a/app/Http/Controllers/ProductsController.php b/app/Http/Controllers/ProductsController.php index 0641cab..9c49375 100644 --- a/app/Http/Controllers/ProductsController.php +++ b/app/Http/Controllers/ProductsController.php @@ -6,19 +6,17 @@ use App\Models\Product; use App\Models\Range; use App\Models\Tag; use Illuminate\Http\Request; -use Illuminate\Support\Str; class ProductsController extends Controller { - /** * page des gammes */ public function ranges(Request $request) { - //now in AppServiceProvider - //$ranges = Range::all(); - //return view('ranges', compact('ranges')); + // now in AppServiceProvider + // $ranges = Range::all(); + // return view('ranges', compact('ranges')); return view('ranges'); } @@ -32,7 +30,7 @@ class ProductsController extends Controller abort(404); } $products = Product::where('range_id', $range->id)->where('status', 1)->paginate(9); - //find promo within range + // find promo within range $offres = Product::where('range_id', $range->id)->where('status', 1)->has('promotions')->with('promotions')->get(); return view('range', compact('range', 'products', 'offres')); } @@ -48,7 +46,7 @@ class ProductsController extends Controller } $product->additionnalProductInfo = $product->additionnalProductInfo($product->product_type); if ($product->additionnalProductInfo === null && !empty($product_type)) { - //n'existe pas on renseigne un vide + // n'existe pas on renseigne un vide $product_type = $product->product_type; $modelClass = 'App\Models\\' . ucfirst($product_type); $product->$product_type = new $modelClass(); diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 67c7daf..cb5a9e9 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -9,7 +9,7 @@ class Authenticate extends Middleware /** * Get the path the user should be redirected to when they are not authenticated. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return string|null */ protected function redirectTo($request) diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php index 033136a..20c5039 100644 --- a/app/Http/Middleware/EncryptCookies.php +++ b/app/Http/Middleware/EncryptCookies.php @@ -12,6 +12,5 @@ class EncryptCookies extends Middleware * @var array */ protected $except = [ - // - ]; + ]; } diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/Http/Middleware/PreventRequestsDuringMaintenance.php index e4956d0..402ea32 100644 --- a/app/Http/Middleware/PreventRequestsDuringMaintenance.php +++ b/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -12,6 +12,5 @@ class PreventRequestsDuringMaintenance extends Middleware * @var array */ protected $except = [ - // - ]; + ]; } diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index 362b48b..764ee81 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -12,9 +12,9 @@ class RedirectIfAuthenticated /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @param string|null ...$guards + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @param string|null ...$guards * @return mixed */ public function handle(Request $request, Closure $next, ...$guards) diff --git a/app/Http/Middleware/RedirectOldSlugs.php b/app/Http/Middleware/RedirectOldSlugs.php index 397263a..7b1abc2 100644 --- a/app/Http/Middleware/RedirectOldSlugs.php +++ b/app/Http/Middleware/RedirectOldSlugs.php @@ -12,14 +12,14 @@ class RedirectOldSlugs /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next + * @param \Illuminate\Http\Request $request + * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $productSlug = $request->route('productSlug'); - $rangeSlug = $request->route('rangeSlug'); + $rangeSlug = $request->route('rangeSlug'); if ($productSlug !== null) { $product = Product::where('slug', $productSlug)->first(); diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index 14befce..03b7890 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -17,7 +17,7 @@ class TrustProxies extends Middleware /** * The headers that should be used to detect proxies. * - * @var int + * @var integer */ protected $headers = Request::HEADER_X_FORWARDED_ALL; } diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index 0c13b85..ed591f2 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -12,6 +12,5 @@ class VerifyCsrfToken extends Middleware * @var array */ protected $except = [ - // - ]; + ]; } diff --git a/app/Http/Middleware/isAdmin.php b/app/Http/Middleware/isAdmin.php index 1ad0d89..f038fd9 100644 --- a/app/Http/Middleware/isAdmin.php +++ b/app/Http/Middleware/isAdmin.php @@ -10,15 +10,16 @@ class isAdmin /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next + * @param \Illuminate\Http\Request $request + * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $role = Auth::user()->role; - if ($role === 1 || $role === 2) + if ($role === 1 || $role === 2) { return $next($request); + } abort(404, "Cette page n'existe pas."); } } diff --git a/app/Http/Requests/ContactFormRequest.php b/app/Http/Requests/ContactFormRequest.php index 5a855d5..1f319c3 100644 --- a/app/Http/Requests/ContactFormRequest.php +++ b/app/Http/Requests/ContactFormRequest.php @@ -2,8 +2,6 @@ namespace App\Http\Requests; -use App\Enums\ContactFormCivility; -use App\Enums\ContactFormType; use Illuminate\Foundation\Http\FormRequest; class ContactFormRequest extends FormRequest @@ -11,7 +9,7 @@ class ContactFormRequest extends FormRequest /** * Determine if the user is authorized to make this request. * - * @return bool + * @return boolean */ public function authorize() { diff --git a/app/Http/Requests/ProductRequest.php b/app/Http/Requests/ProductRequest.php index 69ff3bd..b246565 100644 --- a/app/Http/Requests/ProductRequest.php +++ b/app/Http/Requests/ProductRequest.php @@ -10,7 +10,7 @@ class ProductRequest extends FormRequest /** * Determine if the user is authorized to make this request. * - * @return bool + * @return boolean */ public function authorize() { diff --git a/app/Http/Requests/SortOrders.php b/app/Http/Requests/SortOrders.php index 1390670..7ede937 100644 --- a/app/Http/Requests/SortOrders.php +++ b/app/Http/Requests/SortOrders.php @@ -9,7 +9,7 @@ class SortOrders extends FormRequest /** * Determine if the user is authorized to make this request. * - * @return bool + * @return boolean */ public function authorize() { diff --git a/app/Jobs/CsvJobs.php b/app/Jobs/CsvJobs.php index f121a14..9759378 100644 --- a/app/Jobs/CsvJobs.php +++ b/app/Jobs/CsvJobs.php @@ -4,16 +4,16 @@ namespace App\Jobs; abstract class CsvJobs extends XArcadiaFlux { - /** * parse csv file */ - protected function parseCsv($csvFile) { + protected function parseCsv($csvFile) + { $file_handle = fopen($csvFile, 'r'); while (!feof($file_handle)) { $line_of_text[] = fgetcsv($file_handle, 0, ";"); - if(!end($line_of_text)) { - //supprime les lignes vides du csv + if (!end($line_of_text)) { + // supprime les lignes vides du csv array_pop($line_of_text); } } diff --git a/app/Jobs/CsvOrderWrite.php b/app/Jobs/CsvOrderWrite.php index b35a425..8120cbe 100644 --- a/app/Jobs/CsvOrderWrite.php +++ b/app/Jobs/CsvOrderWrite.php @@ -4,13 +4,9 @@ namespace App\Jobs; use Illuminate\Support\Carbon; use App\Models\Order; -use App\Models\OrderLine; -use App\Models\Customers; -use App\Models\Timeslot; class CsvOrderWrite extends CsvJobs { - protected $disk = 'orders'; /** @var Order */ @@ -70,41 +66,46 @@ class CsvOrderWrite extends CsvJobs /** @var Timeslot */ $timeslot = $this->order->timeslot; - //insertion de la ligne d'en-têtes + // insertion de la ligne d'en-têtes $csvlines[] = $this->header; foreach ($orderlines as $orderline) { $product = $orderline->product; - $unité_commande = $product->order_unit ?? 'PCE'; //COLIS, KGM, PCE (faut il introduire un nouveau champs type unité de commande) - $code_client = preg_replace('/[^\d]/', '', $customer->salarie->matricule); //matricule rh transmis sans les lettres de l'identifiant windows - - //convert to date object + $unité_commande = $product->order_unit ?? 'PCE'; +// COLIS, KGM, PCE (faut il introduire un nouveau champs type unité de commande) + $code_client = preg_replace('/[^\d]/', '', $customer->salarie->matricule); +// matricule rh transmis sans les lettres de l'identifiant windows + // convert to date object $datLivraison = Carbon::createFromFormat('d/m/Y H:i', $timeslot->day . " " . $timeslot->time); $oneline = [ - $product->foodProduct->no_art, //21/01/2022 : suppression du pcb ici + $product->foodProduct->no_art, +// 21/01/2022 : suppression du pcb ici $code_client, $product->reference, "commande ferme", $unité_commande, - $this->mode_commande[$unité_commande], //UEA,KGM,UB (respectivement selon le champ précédent) - "", //on vide la colonne pcb comme demandé - $datLivraison->format('d/m/Y'), //dd/mm/yyyy + $this->mode_commande[$unité_commande], +// UEA,KGM,UB (respectivement selon le champ précédent) + "", +// on vide la colonne pcb comme demandé + $datLivraison->format('d/m/Y'), +// dd/mm/yyyy $orderline->quantity, $this->order->reference, ]; $csvlines[] = $oneline; - } + }//end foreach $data = $this->array2csv($csvlines, ";"); - //$outputfilename = date("Ymd_His") . microtime(true) . ".csv"; + // $outputfilename = date("Ymd_His") . microtime(true) . ".csv"; $outputfilename = "BTQ_" . $this->order->reference . "_" . $code_client . "_" . $customer->salarie->nom . "_" . $customer->salarie->prenom . "_" . str_pad($customer->salarie->code_societe, 3, "0", STR_PAD_LEFT) . ".csv"; $disk->put($outputfilename, $data); - //send this file by mail + // send this file by mail } } diff --git a/app/Jobs/CsvSalariesReader.php b/app/Jobs/CsvSalariesReader.php index da1bf56..533053f 100644 --- a/app/Jobs/CsvSalariesReader.php +++ b/app/Jobs/CsvSalariesReader.php @@ -8,12 +8,10 @@ use ErrorException; use TypeError; use Illuminate\Database\QueryException; use App\Exceptions\AbortCsvImportException; -use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Support\Str; class CsvSalariesReader extends CsvJobs { - /** * This is for Laravel Console usage */ @@ -28,7 +26,6 @@ class CsvSalariesReader extends CsvJobs */ public function __construct() { - // } /** @@ -44,7 +41,7 @@ class CsvSalariesReader extends CsvJobs $files = $disk->files(); $progress = 1; - $total = count(array_filter($files, function ($filename) { + $total = count(array_filter($files, function ($filename) { if ($this->fileHasToBeIgnored($filename)) { return false; } @@ -63,17 +60,17 @@ class CsvSalariesReader extends CsvJobs try { $data = $this->parseCsv($filepath); - //first line is header (mandatory) + // first line is header (mandatory) $header = array_flip(array_shift($data)); foreach ($data as $line) { - $matricule = $line[$header['matricule']]; - $prenom = $line[$header['prenom']]; - $nom = $line[$header['nom']]; - $salarie = Salarie::firstOrNew(['matricule' => $matricule ]); + $matricule = $line[$header['matricule']]; + $prenom = $line[$header['prenom']]; + $nom = $line[$header['nom']]; + $salarie = Salarie::firstOrNew(['matricule' => $matricule ]); $salarie->matricule = $matricule; - $salarie->nom = $nom; - $salarie->prenom = $prenom; - $salarie->code = $salarie->code ?? $this->generateCode(); + $salarie->nom = $nom; + $salarie->prenom = $prenom; + $salarie->code = $salarie->code ?? $this->generateCode(); $salarie->save(); } } catch (ErrorException | TypeError | QueryException $e) { @@ -90,7 +87,8 @@ class CsvSalariesReader extends CsvJobs ), LogType::critical() ); - continue; // ignore the file + continue; +// ignore the file } catch (AbortCsvImportException $e) { $this->log( sprintf( @@ -101,10 +99,11 @@ class CsvSalariesReader extends CsvJobs ), LogType::error() ); - continue; // ignore the file - } + continue; +// ignore the file + }//end try $this->moveToArchives($filename); - } + }//end foreach // Clear old archives $this->clearOldArchives(); @@ -113,7 +112,8 @@ class CsvSalariesReader extends CsvJobs /** * Génère un code d'inscription */ - protected function generateCode() { + protected function generateCode() + { return Str::random(5); } } diff --git a/app/Jobs/RefreshSiteMap.php b/app/Jobs/RefreshSiteMap.php index 728d281..f41738e 100644 --- a/app/Jobs/RefreshSiteMap.php +++ b/app/Jobs/RefreshSiteMap.php @@ -47,10 +47,14 @@ class RefreshSiteMap implements ShouldQueue // '/la-marque/tracabilite/search', // '/frame', // '/map', - '/_debugbar', // Hack ignore laravel debug bar - '_ignition/health-check', //ignore ignition route - '_ignition/scripts/{script}', //ignore ignition route - '_ignition/styles/{style}' //ignore ignition route + '/_debugbar', +// Hack ignore laravel debug bar + '_ignition/health-check', +// ignore ignition route + '_ignition/scripts/{script}', +// ignore ignition route + '_ignition/styles/{style}' +// ignore ignition route ]; /** @@ -73,7 +77,7 @@ class RefreshSiteMap implements ShouldQueue /** * Execute the job. * - *! Ici c'est du sale !! + * ! Ici c'est du sale !! * TODO: mettre tout ça dans un package pour le rendre plus générique * * @return void @@ -136,7 +140,7 @@ class RefreshSiteMap implements ShouldQueue $this->setParamsForModel($rParams, $modelClassName, $pName); continue; } - } + }//end foreach // If the route has no dynamic models as parameters if (!count($params) or !$hasModels) { @@ -145,10 +149,11 @@ class RefreshSiteMap implements ShouldQueue Url::CHANGE_FREQUENCY_MONTHLY, 0.1 ]; - } else { // If the route has dynamic models as parameters + } else { +// If the route has dynamic models as parameters $this->genRoute($route, $siteMap, $rParams); } - } + }//end foreach $sm = Sitemap::create(); foreach ($siteMap as $smRules) { @@ -164,7 +169,7 @@ class RefreshSiteMap implements ShouldQueue * Process route with binderParam * * @param RoutingRoute $route - * @param string $pName + * @param string $pName * @return void */ private function processWithRouteBinderParam(array &$rParams, RoutingRoute $route, string $pName) @@ -175,7 +180,7 @@ class RefreshSiteMap implements ShouldQueue $modelClassName = $o[0]; /** @var \string */ $routeParamName = $o[1]; - $rfLCls = (new ReflectionClass($modelClassName)); + $rfLCls = (new ReflectionClass($modelClassName)); switch (true) { case $rfLCls->isSubclassOf(Model::class): @@ -192,7 +197,7 @@ class RefreshSiteMap implements ShouldQueue /** * Set route param Array for Enums * - * @param array $rParams + * @param array $rParams * @param string $enumClassName * @param string $pName * @return void @@ -210,7 +215,7 @@ class RefreshSiteMap implements ShouldQueue /** * Set route param Array for Models * - * @param array $rParams + * @param array $rParams * @param string $modelClassName * @param string $pName * @param string $routeParamName @@ -222,16 +227,16 @@ class RefreshSiteMap implements ShouldQueue string $pName, string $routeParamName = null ) { - $i = 0; - $limit = 10; + $i = 0; + $limit = 10; $modelTable = (new ReflectionClass($modelClassName))->newInstanceWithoutConstructor()->getTable(); - $q = $modelClassName::query(); - $q = Schema::hasColumn($modelTable, 'status') ? $q->where('status', true) : $q; - $q = Schema::hasColumn($modelTable, 'ocbStatus') ? $q->where('ocbStatus', EleveurOcbStatus::yes()->value) : $q; - $q = Schema::hasColumn($modelTable, 'star_moment') ? $q->where('star_moment', true) : $q; + $q = $modelClassName::query(); + $q = Schema::hasColumn($modelTable, 'status') ? $q->where('status', true) : $q; + $q = Schema::hasColumn($modelTable, 'ocbStatus') ? $q->where('ocbStatus', EleveurOcbStatus::yes()->value) : $q; + $q = Schema::hasColumn($modelTable, 'star_moment') ? $q->where('star_moment', true) : $q; do { $results = $q->offset($i * $limit)->limit($limit)->get(); - $length = count($results); + $length = count($results); $results->map(function (Model $model) use (&$rParams, $pName, $routeParamName) { if (!array_key_exists($pName, $rParams)) { $rParams[$pName] = []; @@ -250,8 +255,8 @@ class RefreshSiteMap implements ShouldQueue * Recursively generate routes for all params * * @param RoutingRoute $route - * @param array $siteMap - * @param array $params + * @param array $siteMap + * @param array $params * @return void */ private function genRoute(RoutingRoute $route, array &$siteMap, array $params) @@ -290,7 +295,7 @@ class RefreshSiteMap implements ShouldQueue * Check if $route exists in routesBinder and has $param * * @param RoutingRoute $route - * @param string $param + * @param string $param * @return boolean */ private function hasRouteBinderParam(RoutingRoute $route, string $param): bool @@ -316,7 +321,7 @@ class RefreshSiteMap implements ShouldQueue * Get the routeBinder param * * @param RoutingRoute $route - * @param string $param + * @param string $param * @return array */ private function getRouteBinderParam(RoutingRoute $route, string $param): array @@ -367,8 +372,8 @@ class RefreshSiteMap implements ShouldQueue $p[0] )); } - } - } + }//end foreach + }//end foreach } /** diff --git a/app/Jobs/XArcadiaFlux.php b/app/Jobs/XArcadiaFlux.php index 89dabef..a83fdb6 100644 --- a/app/Jobs/XArcadiaFlux.php +++ b/app/Jobs/XArcadiaFlux.php @@ -110,7 +110,7 @@ abstract class XArcadiaFlux implements ShouldQueue */ protected function clearOldArchives(): void { - $disk = $this->getDisk(); + $disk = $this->getDisk(); $archives = $disk->files($this->archiveFolderName); // /** @var File */ @@ -141,7 +141,7 @@ abstract class XArcadiaFlux implements ShouldQueue /** * Logs data * - * @param string $message + * @param string $message * @param LogType $logtype * @return void */ @@ -172,14 +172,14 @@ abstract class XArcadiaFlux implements ShouldQueue break; default: throw new Exception(sprintf('%s : unhandled log type %s', get_class($this), $logtype->label)); - } + }//end switch $this->consolePrint($message, $logtype); } /** * Prints to the console * - * @param string $message + * @param string $message * @param LogType $logtype * @return void */ diff --git a/app/Jobs/XmlIncoReader.php b/app/Jobs/XmlIncoReader.php index 7359fd5..5f968aa 100644 --- a/app/Jobs/XmlIncoReader.php +++ b/app/Jobs/XmlIncoReader.php @@ -8,7 +8,6 @@ use SimpleXMLElement; class XmlIncoReader extends XmlJobs { - protected $disk = 'inco'; protected $imagesPath = 'images'; @@ -29,29 +28,32 @@ class XmlIncoReader extends XmlJobs * 'EXPLOITANT.NOM_SOCIETE' => 'nom_societe', */ protected $takeColumns = [ - 'NO_ART' => 'id', // primary key on model - - //this wil not return anything cf doc above + 'NO_ART' => 'id', +// primary key on model + // this wil not return anything cf doc above 'ID_SOCIETE' => 'id_societe', 'NOM_SOCIETE' => 'nom_societe', 'PROD_SAISON' => 'prod_saison', 'NOM' => 'nom', 'NUMERO' => 'numero', - 'TAILLE_REF' => 'taille_ref', //$poidsRef censé être dans INCO_COMPO (et généralement 100g) + 'TAILLE_REF' => 'taille_ref', +// $poidsRef censé être dans INCO_COMPO (et généralement 100g) 'ALLEGATIONS' => 'allegations', 'CONSEIL_PREPA' => 'conseil_prepa', 'ASTUCES' => 'astuces', - 'DESCRIPTIF' => 'descriptif', //$descriptif + 'DESCRIPTIF' => 'descriptif', +// $descriptif 'ARG_VENTE' => 'arg_vente', 'NB_PORTION' => 'nb_portion', 'TYP_PORTION' => 'typ_portion', 'PDS_MOY_THEO' => 'pds_moy_theo', 'LIB_CONSO' => 'lib_conso', - 'LST_ING' => 'lst_ing', //$ingredients - + 'LST_ING' => 'lst_ing', +// $ingredients // list alergene - 'LST_ALLERGENE' => 'lst_allergene', // Consider this sub array + 'LST_ALLERGENE' => 'lst_allergene', +// Consider this sub array 'LST_ALLERGENE.LIB_ALLERGENE' => 'lib_allergene', // Allegations @@ -60,11 +62,13 @@ class XmlIncoReader extends XmlJobs 'ALLEGAT_AUTRE' => 'allegat_autre', - 'INCO_COMPO' => 'inco_compo', // Consider this sub array + 'INCO_COMPO' => 'inco_compo', +// Consider this sub array 'INCO_COMPO.NOM' => 'nom', 'INCO_COMPO.TAILLE_REF' => 'taille_ref', 'INCO_COMPO.VAL_ENERG_KJ_NUT' => 'val_energ_kj_nut', - 'INCO_COMPO.VAL_ENERG_KJ_R' => 'val_energ_kj_r', //_R apports de la taille_ref + 'INCO_COMPO.VAL_ENERG_KJ_R' => 'val_energ_kj_r', +// _R apports de la taille_ref 'INCO_COMPO.VAL_ENERG_KCAL_R' => 'val_energ_kcal_r', 'INCO_COMPO.VAL_ENERG_KCAL_NUT' => 'val_energ_kcal_nut', 'INCO_COMPO.MAT_GRASS_R' => 'mat_grass_r', @@ -85,7 +89,8 @@ class XmlIncoReader extends XmlJobs 'INCO_COMPO.ENER_E14_R' => 'ener_e14_r', 'INCO_COMPO.FRUITS_R' => 'fruits_r', 'INCO_COMPO.FRUITS_COQUE_SECH_R' => 'fruits_coque_sech_r', - 'INCO_COMPO.POURCENT_APPORT_REF_E14_R' => 'pourcent_apport_ref_e14_r', //POURCENT_*_P apports journaliers par portion + 'INCO_COMPO.POURCENT_APPORT_REF_E14_R' => 'pourcent_apport_ref_e14_r', +// POURCENT_*_P apports journaliers par portion 'INCO_COMPO.ENER_KJO_R' => 'ener_kjo_r', 'INCO_COMPO.POURCENT_APPORT_REF_KJO_R' => 'pourcent_apport_ref_kjo_r', 'INCO_COMPO.POURCENT_APPORT_REF_FAT_R' => 'pourcent_apport_ref_fat_r', @@ -102,8 +107,10 @@ class XmlIncoReader extends XmlJobs 'INCO_COMPO.SALTEQ_R' => 'salteq_r', 'INCO_COMPO.POURCENT_APPORT_REF_SALTEQ_R' => 'pourcent_apport_ref_salteq_r', 'INCO_COMPO.APPORT_REF' => 'apport_ref', - 'INCO_COMPO.TAILLE_PORT' => 'taille_port', //$poidsPortion - 'INCO_COMPO.VAL_ENERG_KJ_P' => 'val_energ_kj_p', //_P apports par portion + 'INCO_COMPO.TAILLE_PORT' => 'taille_port', +// $poidsPortion + 'INCO_COMPO.VAL_ENERG_KJ_P' => 'val_energ_kj_p', +// _P apports par portion 'INCO_COMPO.VAL_ENERG_KCAL_P' => 'val_energ_kcal_p', 'INCO_COMPO.MAT_GRASS_P' => 'mat_grass_p', 'INCO_COMPO.AGS_P' => 'ags_p', @@ -145,8 +152,10 @@ class XmlIncoReader extends XmlJobs 'INCO_COMPO.COMPOSANTE_N' => 'composante_n', 'INCO_COMPO.COMPOSANTE_P' => 'composante_p', 'INCO_COMPO.POURCENT_FRUITS' => 'pourcent_fruits', - 'INCO_COMPO.SCORE_NUTRI' => 'score_nutri', //du coup nutriscore ? - 'INCO_COMPO.CLASSEMENT' => 'classement', //$nutriscore mais pas censé être dans INCO_COMPO + 'INCO_COMPO.SCORE_NUTRI' => 'score_nutri', +// du coup nutriscore ? + 'INCO_COMPO.CLASSEMENT' => 'classement', +// $nutriscore mais pas censé être dans INCO_COMPO 'INCO_COMPO.MAT_GRASS_R_PREC' => 'mat_grass_r_prec', 'INCO_COMPO.AGS_R_PREC' => 'ags_r_prec', 'INCO_COMPO.GLUCIDES_R_PREC' => 'glucides_r_prec', @@ -398,9 +407,9 @@ class XmlIncoReader extends XmlJobs $line[$key] = implode(',', array_filter($line[$key])); $line[$key] = strlen($line[$key]) ? $line[$key] : null; } - //json column cast into array in model => no need for encode + // json column cast into array in model => no need for encode // if ($key == 'nutritional_values') { - // $line[$key] = json_encode($line[$key], \JSON_FORCE_OBJECT); + // $line[$key] = json_encode($line[$key], \JSON_FORCE_OBJECT); // } } @@ -415,26 +424,26 @@ class XmlIncoReader extends XmlJobs private function parseImage(SimpleXMLElement $xmlData) { - $list_media = $xmlData->INCO->MEDIA_VISUEL_EAI->MEDIA_VISUEL_EAI; + $list_media = $xmlData->INCO->MEDIA_VISUEL_EAI->MEDIA_VISUEL_EAI; $arImgPaths = array(); $index = 1; foreach ($list_media as $media) { - $image = $media->img; + $image = $media->img; $imageData = trim((string)$image); if (strlen($imageData)) { $imageData = base64_decode($imageData); - $imgName = strval($xmlData->INCO->INCO_COMPO->TBL_INCO_COMPO->ID_INCO); - if(empty($imgName)) { + $imgName = strval($xmlData->INCO->INCO_COMPO->TBL_INCO_COMPO->ID_INCO); + if (empty($imgName)) { $imgName = strval($xmlData->INCO->NO_ART); } - $imgName = $imgName."_".$index; + $imgName = $imgName . "_" . $index; $imgNamePath = sprintf('%s/%s', rtrim($this->imagesPath, '/'), $imgName); $disk = $this->getDisk(); $info = getimagesizefromstring($imageData); - if($info !== false) { + if ($info !== false) { $mime = $info['mime']; switch ($mime) { case 'image/jpeg': @@ -459,10 +468,10 @@ class XmlIncoReader extends XmlJobs $arImgPaths[$index] = sprintf('%s/%s', $this->disk, $imgNamePath); $index++; } else { - //probably not an image could be a PDF, PPT, AI anything is possible - } - } - } + // probably not an image could be a PDF, PPT, AI anything is possible + }//end if + }//end if + }//end foreach return $arImgPaths; } @@ -500,15 +509,18 @@ class XmlIncoReader extends XmlJobs if ($value->count()) { $extraction = $this->extract($value); - if(count($extraction) - && array_key_exists("code",$extraction) - && array_key_exists("libelle",$extraction)) { - $val = strval($extraction['libelle']); + if ( + count($extraction) + && array_key_exists("code", $extraction) + && array_key_exists("libelle", $extraction) + ) { + $val = strval($extraction['libelle']); $extract[$key] = strlen($val) ? $val : null; continue; } - $extract[$key][] = $extraction; //$this->extract($value); + $extract[$key][] = $extraction; +// $this->extract($value); continue; } $value = strval($value); @@ -517,7 +529,7 @@ class XmlIncoReader extends XmlJobs } else { $extract[$key] = strlen($value) ? $value : null; } - } + }//end foreach return $extract; } } diff --git a/app/Jobs/XmlJobs.php b/app/Jobs/XmlJobs.php index d87ef6d..f702e91 100644 --- a/app/Jobs/XmlJobs.php +++ b/app/Jobs/XmlJobs.php @@ -7,7 +7,6 @@ use App\Exceptions\AbortXmlImportException; use App\Exceptions\InvalidXmlException; use ErrorException; use Illuminate\Contracts\Filesystem\FileNotFoundException; -use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Mail; @@ -20,7 +19,6 @@ use TypeError; abstract class XmlJobs extends XArcadiaFlux { - /** * invalid xml folder * @@ -67,7 +65,7 @@ abstract class XmlJobs extends XArcadiaFlux $files = $disk->files(); $progress = 1; - $total = count(array_filter($files, function ($filename) { + $total = count(array_filter($files, function ($filename) { if ($this->fileHasToBeIgnored($filename)) { return false; } @@ -97,14 +95,14 @@ abstract class XmlJobs extends XArcadiaFlux if ($xmlContent === false) { throw new InvalidXmlException('XML is Invalid (simplexml_load_string returned false)'); // $this->log( - // sprintf('File %s could not be parsed (simplexml_load_string)', $filename), - // LogType::critical() + // sprintf('File %s could not be parsed (simplexml_load_string)', $filename), + // LogType::critical() // ); // continue; // ignore the file } } catch (ErrorException $e) { throw new InvalidXmlException('XML is Invalid', 0, $e); - } + }//end try $data = $this->extract($xmlContent); @@ -159,7 +157,8 @@ abstract class XmlJobs extends XArcadiaFlux LogType::critical() ); $this->sendErrorParseEmailToServiceWeb($e); - continue; // ignore the file + continue; +// ignore the file } catch (AbortXmlImportException $e) { $this->log( sprintf( @@ -172,7 +171,8 @@ abstract class XmlJobs extends XArcadiaFlux ); $this->sendErrorParseEmailToServiceWeb($e); $this->moveToInvalid($filename); - continue; // ignore the file + continue; +// ignore the file } catch (FileNotFoundException | QueryException $e) { // This happens because of concurent xml jobs read $message = $e->getMessage(); @@ -188,10 +188,11 @@ abstract class XmlJobs extends XArcadiaFlux ), LogType::debug() ); - continue; // ignore the file - } + continue; +// ignore the file + }//end try $this->moveToArchives($filename); - } + }//end foreach // Clear old archives $this->clearOldArchives(); @@ -261,7 +262,7 @@ abstract class XmlJobs extends XArcadiaFlux } else { $result[$key] = $field; } - } + }//end foreach return $result; } diff --git a/app/Lib/LDC/CartCalculator.php b/app/Lib/LDC/CartCalculator.php index a5b95ac..5b405f8 100644 --- a/app/Lib/LDC/CartCalculator.php +++ b/app/Lib/LDC/CartCalculator.php @@ -13,7 +13,7 @@ class CartCalculator implements Calculator switch ($attribute) { case 'discount': - return round($cartItem->price * ($cartItem->getDiscountRate() / 100)*100)/100; + return round($cartItem->price * ($cartItem->getDiscountRate() / 100) * 100) / 100; case 'tax': return round($cartItem->priceTarget * ($cartItem->taxRate / 100), $decimals); case 'priceTax': @@ -27,16 +27,16 @@ class CartCalculator implements Calculator case 'priceTarget': return round(($cartItem->priceTotal - $cartItem->discountTotal) / $cartItem->qty, $decimals); case 'taxTotal': - //taxe pour un item multiplié par la quantité - $unit_price = max($cartItem->price - $cartItem->discount,0); - $unit_tax = round($unit_price * ($cartItem->taxRate / 100), $decimals); - $taxTotal = round($unit_tax * $cartItem->qty, $decimals); - //return round($cartItem->subtotal * ($cartItem->taxRate / 100), $decimals); + // taxe pour un item multiplié par la quantité + $unit_price = max($cartItem->price - $cartItem->discount, 0); + $unit_tax = round($unit_price * ($cartItem->taxRate / 100), $decimals); + $taxTotal = round($unit_tax * $cartItem->qty, $decimals); + // return round($cartItem->subtotal * ($cartItem->taxRate / 100), $decimals); return $taxTotal; case 'total': return round($cartItem->subtotal + $cartItem->taxTotal, $decimals); default: return; - } + }//end switch } } diff --git a/app/Mail/OrderConfirmAdminMail.php b/app/Mail/OrderConfirmAdminMail.php index cdfd7ac..e5a0b2e 100644 --- a/app/Mail/OrderConfirmAdminMail.php +++ b/app/Mail/OrderConfirmAdminMail.php @@ -4,13 +4,13 @@ namespace App\Mail; use App\Models\Magasin; use Illuminate\Bus\Queueable; -use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderConfirmAdminMail extends Mailable { - use Queueable, SerializesModels; + use Queueable; + use SerializesModels; private $order; diff --git a/app/Mail/OrderConfirmMail.php b/app/Mail/OrderConfirmMail.php index 368ff22..4719882 100644 --- a/app/Mail/OrderConfirmMail.php +++ b/app/Mail/OrderConfirmMail.php @@ -4,13 +4,13 @@ namespace App\Mail; use App\Models\Magasin; use Illuminate\Bus\Queueable; -use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderConfirmMail extends Mailable { - use Queueable, SerializesModels; + use Queueable; + use SerializesModels; private $order; diff --git a/app/Mail/OrderStatusMail.php b/app/Mail/OrderStatusMail.php index 8b47eaf..e4c1283 100644 --- a/app/Mail/OrderStatusMail.php +++ b/app/Mail/OrderStatusMail.php @@ -4,13 +4,13 @@ namespace App\Mail; use App\Models\Magasin; use Illuminate\Bus\Queueable; -use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderStatusMail extends Mailable { - use Queueable, SerializesModels; + use Queueable; + use SerializesModels; private $order; @@ -31,7 +31,7 @@ class OrderStatusMail extends Mailable */ public function build() { - $order = $this->order; + $order = $this->order; $magasin = Magasin::find($order->timeslot->magasin->id); return $this->subject("Votre commande - " . config('theme.site_name'))->view('mails.order-status', compact('order', 'magasin')); diff --git a/app/Mail/PasswordResetMail.php b/app/Mail/PasswordResetMail.php index 594c1ed..9049e3d 100644 --- a/app/Mail/PasswordResetMail.php +++ b/app/Mail/PasswordResetMail.php @@ -2,7 +2,6 @@ namespace App\Mail; -use App\Models\Moments; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; @@ -10,7 +9,8 @@ use Illuminate\Queue\SerializesModels; class PasswordResetMail extends Mailable implements ShouldQueue { - use Queueable, SerializesModels; + use Queueable; + use SerializesModels; private $token; diff --git a/app/Mail/RegisterConfirmMail.php b/app/Mail/RegisterConfirmMail.php index 3d809d2..c376cc0 100644 --- a/app/Mail/RegisterConfirmMail.php +++ b/app/Mail/RegisterConfirmMail.php @@ -9,7 +9,8 @@ use Illuminate\Queue\SerializesModels; class RegisterConfirmMail extends Mailable implements ShouldQueue { - use Queueable, SerializesModels; + use Queueable; + use SerializesModels; private $customer, $firstname; @@ -21,7 +22,7 @@ class RegisterConfirmMail extends Mailable implements ShouldQueue public function __construct($customer, $firstname) { $this->firstname = $firstname; - $this->customer = $customer; + $this->customer = $customer; } /** @@ -31,7 +32,7 @@ class RegisterConfirmMail extends Mailable implements ShouldQueue */ public function build() { - $customer = $this->customer; + $customer = $this->customer; $firstname = $this->firstname; return $this->subject("Confirmation d'inscription " . config('theme.site_name')) ->view('mails.register-ok', compact('customer', 'firstname')); diff --git a/app/Mail/SendContactMail.php b/app/Mail/SendContactMail.php index fd95ab0..a675ed5 100644 --- a/app/Mail/SendContactMail.php +++ b/app/Mail/SendContactMail.php @@ -3,7 +3,6 @@ namespace App\Mail; use Illuminate\Bus\Queueable; -use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; diff --git a/app/Models/Content.php b/app/Models/Content.php index bd2a944..0628f8f 100644 --- a/app/Models/Content.php +++ b/app/Models/Content.php @@ -8,5 +8,4 @@ use Illuminate\Database\Eloquent\Model; class Content extends Model { use HasFactory; - } diff --git a/app/Models/Customers.php b/app/Models/Customers.php index 6b99df3..d4c4ad9 100644 --- a/app/Models/Customers.php +++ b/app/Models/Customers.php @@ -27,7 +27,7 @@ class Customers extends Authenticatable protected $guard = 'customer'; - //possible additionnals + // possible additionnals public function salarie() { return $this->hasOne(Salarie::class, 'customer_id'); diff --git a/app/Models/DiscountType.php b/app/Models/DiscountType.php index 2d5b245..4ca22cf 100644 --- a/app/Models/DiscountType.php +++ b/app/Models/DiscountType.php @@ -11,7 +11,8 @@ class DiscountType extends Model public $timestamps = false; - public function promotions() { + public function promotions() + { return $this->hasMany(Promotion::class, 'discount_type_id'); } } diff --git a/app/Models/FoodProduct.php b/app/Models/FoodProduct.php index 5de5e24..56ca87e 100644 --- a/app/Models/FoodProduct.php +++ b/app/Models/FoodProduct.php @@ -18,11 +18,13 @@ class FoodProduct extends Model 'product_id', ]; - public function product() { + public function product() + { return $this->belongsTo(Product::class); } - public function xmlInco() { + public function xmlInco() + { return $this->hasOne(XmlInco::class, 'id', 'no_art'); } } diff --git a/app/Models/Magasin.php b/app/Models/Magasin.php index 444ff76..c278977 100644 --- a/app/Models/Magasin.php +++ b/app/Models/Magasin.php @@ -15,15 +15,18 @@ class Magasin extends Model 'gmaps_placeid', 'gmaps_embed_href', 'gmaps_link_href', ]; - public function timeslotSettings() { + public function timeslotSettings() + { return $this->hasMany(TimeslotSetting::class); } - public function collecteExceptions() { + public function collecteExceptions() + { return $this->hasMany(CollecteException::class); } - public function timeslots() { + public function timeslots() + { return $this->hasMany(Timeslot::class); } } diff --git a/app/Models/OldSlug.php b/app/Models/OldSlug.php index ff05bf0..8d977be 100644 --- a/app/Models/OldSlug.php +++ b/app/Models/OldSlug.php @@ -9,11 +9,13 @@ class OldSlug extends Model { use HasFactory; - public function product() { + public function product() + { return $this->belongsTo('App\Model\Product', 'product_id'); } - public function range() { + public function range() + { return $this->belongsTo('App\Model\Range', 'range_id'); } } diff --git a/app/Models/Order.php b/app/Models/Order.php index e4692ff..58e479a 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -12,21 +12,24 @@ class Order extends Model /** * use carefully */ - public function products() { + public function products() + { return $this->belongsToMany(Product::class, 'order_lines', 'order_id', 'product_id'); } - //Relations + // Relations public function lines() { return $this->hasMany(OrderLine::class); } - public function status() { + public function status() + { return $this->belongsTo('App\Models\OrdersStatus', 'status_id'); } - public function customer() { + public function customer() + { return $this->belongsTo(Customers::class); } @@ -35,7 +38,7 @@ class Order extends Model return $this->hasOne(Timeslot::class); } - //Formattages + // Formattages public function getFormattedTotalTtcAttribute() { return $this->attributes['formattedTotalTtc'] = sprintf('%s €', number_format($this->attributes['total'], 2, ',', ' ')); diff --git a/app/Models/OrderLine.php b/app/Models/OrderLine.php index 7d8a5fb..2fed031 100644 --- a/app/Models/OrderLine.php +++ b/app/Models/OrderLine.php @@ -9,7 +9,7 @@ class OrderLine extends Model { use HasFactory; - //Relations + // Relations public function order() { return $this->belongsTo(Order::class); @@ -20,7 +20,7 @@ class OrderLine extends Model return $this->belongsTo(Product::class); } - //Formattages + // Formattages public function getFormattedTotalTtcAttribute() { return $this->attributes['formattedTotalTtc'] = sprintf('%s €', number_format($this->attributes['total_ttc'], 2, ',', ' ')); diff --git a/app/Models/OrdersStatus.php b/app/Models/OrdersStatus.php index 93c18d3..476a73b 100644 --- a/app/Models/OrdersStatus.php +++ b/app/Models/OrdersStatus.php @@ -10,9 +10,11 @@ class OrdersStatus extends Model use HasFactory; protected $table = "orders_status"; + public $timestamps = false; - public function orders() { + public function orders() + { return $this->hasMany('App\Models\Order', 'status_id'); } } diff --git a/app/Models/PasswordReset.php b/app/Models/PasswordReset.php index 99a82fb..f00a505 100644 --- a/app/Models/PasswordReset.php +++ b/app/Models/PasswordReset.php @@ -7,5 +7,6 @@ use Illuminate\Database\Eloquent\Model; class PasswordReset extends Model { protected $table = "password_resets"; + public $timestamps = false; } diff --git a/app/Models/Product.php b/app/Models/Product.php index 64fcc10..c74852e 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -55,16 +55,15 @@ class Product extends Model implements Buyable { parent::boot(); - //on data retrived from DB + // on data retrived from DB static::retrieved(function ($model) { - $model->priceHt = $model->getPriceHtAttribute(); - $model->priceTtc = $model->getPriceTtcAttribute(); - $model->discountAmount = $model->getDiscountAmountAttribute(); - $model->discountRate = $model->getDiscountRateAttribute(); - $model->discountedPriceHt = $model->getDiscountedPriceHtAttribute(); + $model->priceHt = $model->getPriceHtAttribute(); + $model->priceTtc = $model->getPriceTtcAttribute(); + $model->discountAmount = $model->getDiscountAmountAttribute(); + $model->discountRate = $model->getDiscountRateAttribute(); + $model->discountedPriceHt = $model->getDiscountedPriceHtAttribute(); $model->discountedPriceTtc = $model->getDiscountedPriceTtcAttribute(); }); - } @@ -76,10 +75,10 @@ class Product extends Model implements Buyable * net discounted proice (prix avec taxe et remises) */ - //Utility to bring prices as a pseudo relation + // Utility to bring prices as a pseudo relation public function getCalcPrices() { - //$prices = new Collection(); + // $prices = new Collection(); $prices = array( 'priceHt' => $this->priceHt, 'discountAmount' => $this->discountAmount, @@ -88,11 +87,11 @@ class Product extends Model implements Buyable 'priceTtc' => $this->priceTtc, 'discountedPriceTtc' => $this->discountedPriceTtc, ); - //$prices->add($cartextendedItem); + // $prices->add($cartextendedItem); return $prices; } - //gross price + // gross price /** * Mutator method to set priceHt's value */ @@ -109,15 +108,15 @@ class Product extends Model implements Buyable */ public function getPriceHtAttribute() { - if(isset($this->priceHt)) { + if (isset($this->priceHt)) { return $this->priceHt; } else { - //tenir compte de l'unité de facturation et de l'unité de vente (qui doit être stricte) - //si facturation KG et vente piece - // prendre le poids, convertir en KG => pre-requis l'unité de poids doit être un enum - // multiplier le $this->attributes['price'] par les KG - //sinon - // value => value + // tenir compte de l'unité de facturation et de l'unité de vente (qui doit être stricte) + // si facturation KG et vente piece + // prendre le poids, convertir en KG => pre-requis l'unité de poids doit être un enum + // multiplier le $this->attributes['price'] par les KG + // sinon + // value => value if (config('bosettings.sell_unit_management') == "strict") { $calculate = ($this->invoicing_unit == InvoicingUnit::kgm()->value && $this->sell_unit == SellUnit::pce()->value); } else { @@ -125,17 +124,17 @@ class Product extends Model implements Buyable } if ($calculate) { - //weight converter - $weighted_price = $this->attributes['price'] * ($this->weight * WeightUnit::convert()[$this->weight_unit]); + // weight converter + $weighted_price = $this->attributes['price'] * ($this->weight * WeightUnit::convert()[$this->weight_unit]); return $this->priceHt = round($weighted_price * 1000) / 1000; } else { - //no calculations, alias of db property + // no calculations, alias of db property return $this->priceHt = $this->attributes['price']; } - } + }//end if } - //discounted price + // discounted price public function setDiscountedPriceHtAttribute($value) { $this->discountedPriceHt = $value; @@ -146,13 +145,13 @@ class Product extends Model implements Buyable if (isset($this->discountedPriceHt)) { return $this->discountedPriceHt; } else { - $discountedPriceHt = $this->priceHt - $this->discountAmount; - $roundingdiscountedPriceHt = round($discountedPriceHt * 1000) / 1000; + $discountedPriceHt = $this->priceHt - $this->discountAmount; + $roundingdiscountedPriceHt = round($discountedPriceHt * 1000) / 1000; return $this->discountedPriceHt = $roundingdiscountedPriceHt; } } - //net price + // net price public function setPriceTtcAttribute($value) { $this->priceTtc = $value; @@ -164,14 +163,14 @@ class Product extends Model implements Buyable return $this->priceTtc; } else { $priceTtc = $this->priceHt * ( 1 + ( $this->tax->rate / 100)); - //on travaille avec des centimes puis on redivise par 100 pour avoir des unités monetaires - //on augmente la précision à 3 digits, l'affichage formate les prix sur 2 décimales - $roundingPriceTtc = round($priceTtc * 1000) / 1000; + // on travaille avec des centimes puis on redivise par 100 pour avoir des unités monetaires + // on augmente la précision à 3 digits, l'affichage formate les prix sur 2 décimales + $roundingPriceTtc = round($priceTtc * 1000) / 1000; return $this->priceTtc = $roundingPriceTtc; } } - //net discounted price + // net discounted price public function setDiscountedPriceTtcAttribute($value) { $this->discountedPriceTtc = $value; @@ -183,16 +182,16 @@ class Product extends Model implements Buyable $showPrice = $this->discountedPriceTtc; } else { $discountedPriceTtc = $this->discountedPriceHt * ( 1 + ( $this->tax->rate / 100)); - //on travaille avec des centimes puis on redivise par 100 pour avoir des unités monetaires + // on travaille avec des centimes puis on redivise par 100 pour avoir des unités monetaires $roundingDiscountedPriceTTC = round($discountedPriceTtc * 1000) / 1000; - $showPrice = $this->discountedPriceTtc = $roundingDiscountedPriceTTC; + $showPrice = $this->discountedPriceTtc = $roundingDiscountedPriceTTC; } - //prix transmis en fonction du setting show_prices + // prix transmis en fonction du setting show_prices if (config('bosettings.show_prices_authenticated') == "authenticated") { { - if (Auth::guard('customer')->check()) { - return $showPrice; - } + if (Auth::guard('customer')->check()) { + return $showPrice; + } } } if (config('bosettings.show_prices_guest') == "guest") { @@ -205,7 +204,7 @@ class Product extends Model implements Buyable * Discount calc */ - //montant de remise + // montant de remise public function setDiscountAmountAttribute($value) { $this->discountAmount = $value; @@ -222,7 +221,7 @@ class Product extends Model implements Buyable if ($promo_type == 1) { $discountAmount = $applicablePromotion->discount_value; } else { - //on augmente la précision à 3 digits, l'affichage formate les prix sur 2 décimales + // on augmente la précision à 3 digits, l'affichage formate les prix sur 2 décimales $discountAmount = $this->priceHt * ($applicablePromotion->discount_value / 100); $discountAmount = round($discountAmount * 1000) / 1000; } @@ -233,7 +232,7 @@ class Product extends Model implements Buyable } } - //taux de remise + // taux de remise public function setDiscountRateAttribute($value) { $this->discountRate = $value; @@ -248,7 +247,7 @@ class Product extends Model implements Buyable if (null !== $applicablePromotion) { $promo_type = $applicablePromotion->discount_type_id; if ($promo_type == 1) { - //on veut un pourcentage + // on veut un pourcentage $discountRate = ($applicablePromotion->discount_value / $this->priceHt) * 100; } else { $discountRate = $applicablePromotion->discount_value; @@ -267,7 +266,7 @@ class Product extends Model implements Buyable return $this->priceHt; } - //Relations + // Relations public function range() { return $this->belongsTo('App\Models\Range', 'range_id'); @@ -289,13 +288,13 @@ class Product extends Model implements Buyable ->withPivot('quantity'); } - //relationship to additionnal product info + // relationship to additionnal product info public function additionnalProductInfo($productType) { return $this->$productType; } - //possible additionnals + // possible additionnals public function foodProduct() { return $this->hasOne(FoodProduct::class, 'product_id'); @@ -318,13 +317,13 @@ class Product extends Model implements Buyable - //relationship to associated products + // relationship to associated products public function products() { return $this->belongsToMany(Product::class, 'products_products', 'product_id', 'associated_id'); } - //offres speciales + // offres speciales public function promotions() { $now = Carbon::now(); @@ -333,13 +332,13 @@ class Product extends Model implements Buyable ->whereDate('date_end', '>=', $now); } - //taxe + // taxe public function tax() { return $this->belongsTo(TaxRate::class, 'tax_rate_id'); } - //tags + // tags public function tags() { return $this->belongsToMany(Tag::class); diff --git a/app/Models/ProductType.php b/app/Models/ProductType.php index debc13a..ca81ee2 100644 --- a/app/Models/ProductType.php +++ b/app/Models/ProductType.php @@ -18,7 +18,8 @@ class ProductType extends Model 'product_id', ]; - public function product() { + public function product() + { return $this->belongsTo(Product::class); } } diff --git a/app/Models/ProductsProducts.php b/app/Models/ProductsProducts.php index 91199b0..afecc12 100644 --- a/app/Models/ProductsProducts.php +++ b/app/Models/ProductsProducts.php @@ -8,5 +8,6 @@ use Illuminate\Database\Eloquent\Model; class ProductsProducts extends Model { use HasFactory; - //useless model it seems + + // useless model it seems } diff --git a/app/Models/Range.php b/app/Models/Range.php index 57e92bb..f94f7a0 100644 --- a/app/Models/Range.php +++ b/app/Models/Range.php @@ -9,11 +9,13 @@ class Range extends Model { use HasFactory; - public function products() { + public function products() + { return $this->hasMany('App\Models\Product', 'range_id'); } - public function old_slugs() { + public function old_slugs() + { return $this->hasMany('App\Model\OldSlug', 'ranges'); } } diff --git a/app/Models/Salarie.php b/app/Models/Salarie.php index 463e6c4..caa941b 100644 --- a/app/Models/Salarie.php +++ b/app/Models/Salarie.php @@ -23,7 +23,8 @@ class Salarie extends Model ]; - public function customer() { + public function customer() + { return $this->belongsTo(Customers::class); } } diff --git a/app/Models/Slide.php b/app/Models/Slide.php index 292a876..78b04b4 100644 --- a/app/Models/Slide.php +++ b/app/Models/Slide.php @@ -19,7 +19,8 @@ class Slide extends Model 'date_end' => 'datetime', ]; - public function slider() { + public function slider() + { return $this->belongsTo(Slider::class); } } diff --git a/app/Models/Slider.php b/app/Models/Slider.php index abfb30c..78c7062 100644 --- a/app/Models/Slider.php +++ b/app/Models/Slider.php @@ -26,6 +26,5 @@ class Slider extends Model $q->whereDate('date_end', '>=', $now) ->orWhereNull('date_end'); }); - } } diff --git a/app/Models/Stat.php b/app/Models/Stat.php index 45ce094..011c3df 100644 --- a/app/Models/Stat.php +++ b/app/Models/Stat.php @@ -9,7 +9,8 @@ class Stat extends Model { use HasFactory; - public function product() { + public function product() + { return $this->belongsTo('App\Models\Product', 'product_id'); } } diff --git a/app/Models/TaxRate.php b/app/Models/TaxRate.php index 9a61df9..c17db1a 100644 --- a/app/Models/TaxRate.php +++ b/app/Models/TaxRate.php @@ -11,7 +11,8 @@ class TaxRate extends Model public $timestamps = false; - public function products() { + public function products() + { return $this->hasMany(Product::class, 'tax_rate_id'); } } diff --git a/app/Models/User.php b/app/Models/User.php index 6b08c7b..6076786 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,14 +2,14 @@ namespace App\Models; -use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { - use HasFactory, Notifiable; + use HasFactory; + use Notifiable; /** * The attributes that are mass assignable. @@ -44,7 +44,8 @@ class User extends Authenticatable 'email_verified_at' => 'datetime', ]; - public function orders() { + public function orders() + { return $this->hasMany('App\Models\Order', 'user_id'); } } diff --git a/app/Models/XmlInco.php b/app/Models/XmlInco.php index c7b33cb..b200f4b 100644 --- a/app/Models/XmlInco.php +++ b/app/Models/XmlInco.php @@ -6,7 +6,6 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Support\Facades\Storage; use Illuminate\Contracts\Filesystem\Filesystem; -use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\Collection; class XmlInco extends Model @@ -59,9 +58,10 @@ class XmlInco extends Model /** * retrieve a collection of medias */ - public function getMediasAttribute() { + public function getMediasAttribute() + { /** @var Filesystem */ - $disk = $this->getDisk(); + $disk = $this->getDisk(); $files = $disk->files($this->imagesPath); $collFiles = new Collection(); @@ -74,7 +74,7 @@ class XmlInco extends Model if (!in_array($pi, array($this->id))) { continue; } - $image = base64_encode($disk->get($file)); + $image = base64_encode($disk->get($file)); $element = array( "filename" => $pi, "imgdata" => $image @@ -104,31 +104,37 @@ class XmlInco extends Model $foodProduct = FoodProduct::where('no_art', $this->id)->first(); if (!empty($foodProduct)) { - //info produits à suggerer lors de l'édition + // info produits à suggerer lors de l'édition // this->descriptif (doit aller dans la table products) // $table->text('preparation')->nullable(); => $this->conseil_prepa // $table->text('selling_argument')->nullable(); => $this->arg_vente - - //infos produit maj automatique + // infos produit maj automatique $foodProduct->ingredients = $this->lst_ing; $foodProduct->allergens = $this->lib_allergene; - //$foodProduct->servings = $this->nb_portion; // problem les types de correspondent pas numeric = string (exemple this->nb_portion = '1/2') - + // $foodProduct->servings = $this->nb_portion; // problem les types de correspondent pas numeric = string (exemple this->nb_portion = '1/2') $nutri_values = $this->nutritional_values; if (!empty($nutri_values)) { - //maj des info nutri locales - //pour la ref + // maj des info nutri locales + // pour la ref $foodProduct->nv_ref_weight_g = $nutri_values["taille_ref"]; - $foodProduct->nv_kj = $nutri_values["val_energ_kj_r"]; //Energie Kj - $foodProduct->nv_kcal = $nutri_values["val_energ_kcal_r"]; //Energie Kcal - $foodProduct->nv_fat_g = $nutri_values["mat_grass_r"]; //graisses - $foodProduct->nv_sat_fat_g = $nutri_values["ags_r"]; //dont acides gras saturés - $foodProduct->nv_carb_g = $nutri_values["glucides_r"]; //Glucides - $foodProduct->nv_sugar_g = $nutri_values["sucre_r"]; //dont sucres - $foodProduct->nv_fiber_g = $nutri_values["fib_alim_r"]; //fibres alimentaires - $foodProduct->nv_protein_g = $nutri_values["proteine_r"]; //protéines - $foodProduct->nv_salt_g = $nutri_values["sel_r"]; //sel - + $foodProduct->nv_kj = $nutri_values["val_energ_kj_r"]; +// Energie Kj + $foodProduct->nv_kcal = $nutri_values["val_energ_kcal_r"]; +// Energie Kcal + $foodProduct->nv_fat_g = $nutri_values["mat_grass_r"]; +// graisses + $foodProduct->nv_sat_fat_g = $nutri_values["ags_r"]; +// dont acides gras saturés + $foodProduct->nv_carb_g = $nutri_values["glucides_r"]; +// Glucides + $foodProduct->nv_sugar_g = $nutri_values["sucre_r"]; +// dont sucres + $foodProduct->nv_fiber_g = $nutri_values["fib_alim_r"]; +// fibres alimentaires + $foodProduct->nv_protein_g = $nutri_values["proteine_r"]; +// protéines + $foodProduct->nv_salt_g = $nutri_values["sel_r"]; +// sel // $foodProduct-> = $nutri_values["sodium_r"]; // $foodProduct-> = $nutri_values["ener_e14_r"]; // $foodProduct-> = $nutri_values["fruits_r"]; @@ -140,41 +146,52 @@ class XmlInco extends Model // $foodProduct-> = $nutri_values["fibtg_r"]; // $foodProduct-> = $nutri_values["pro_r"]; // $foodProduct-> = $nutri_values["salteq_r"]; - - - //valeurs nutritionnelles par portion - $foodProduct->nv_serving_size_g = $nutri_values["taille_port"]; //taille portion en grammes - $foodProduct->nv_serving_kj = $nutri_values["val_energ_kj_p"]; //Energie Kj - $foodProduct->nv_serving_kcal = $nutri_values["val_energ_kcal_p"]; //Energie Kcal - $foodProduct->nv_serving_fat_g = $nutri_values["mat_grass_p"]; //graisses - $foodProduct->nv_serving_sat_fat_g = $nutri_values["ags_p"]; //dont acides gras saturés - $foodProduct->nv_serving_carb_g = $nutri_values["glucides_p"]; //Glucides - $foodProduct->nv_serving_sugar_g = $nutri_values["sucre_p"]; //dont sucres - $foodProduct->nv_serving_fiber_g = $nutri_values["fib_alim_p"]; //fibres alimentaires - $foodProduct->nv_serving_protein_g = $nutri_values["proteine_p"]; //protéines - $foodProduct->nv_serving_salt_g = $nutri_values["sel_p"]; //sel - + // valeurs nutritionnelles par portion + $foodProduct->nv_serving_size_g = $nutri_values["taille_port"]; +// taille portion en grammes + $foodProduct->nv_serving_kj = $nutri_values["val_energ_kj_p"]; +// Energie Kj + $foodProduct->nv_serving_kcal = $nutri_values["val_energ_kcal_p"]; +// Energie Kcal + $foodProduct->nv_serving_fat_g = $nutri_values["mat_grass_p"]; +// graisses + $foodProduct->nv_serving_sat_fat_g = $nutri_values["ags_p"]; +// dont acides gras saturés + $foodProduct->nv_serving_carb_g = $nutri_values["glucides_p"]; +// Glucides + $foodProduct->nv_serving_sugar_g = $nutri_values["sucre_p"]; +// dont sucres + $foodProduct->nv_serving_fiber_g = $nutri_values["fib_alim_p"]; +// fibres alimentaires + $foodProduct->nv_serving_protein_g = $nutri_values["proteine_p"]; +// protéines + $foodProduct->nv_serving_salt_g = $nutri_values["sel_p"]; +// sel // $foodProduct-> = $nutri_values["sodium_p"]; // $foodProduct-> = $nutri_values["fruits_p"]; - - - //apports journaliers - $foodProduct->nv_daily_energy = $nutri_values["pourcent_apport_ref_kjo_r"]; //Energie % recommandé - $foodProduct->nv_daily_fat = $nutri_values["pourcent_apport_ref_fat_r"]; //graisses - $foodProduct->nv_daily_sat_fat = $nutri_values["pourcent_apport_ref_fatsat_r"]; //dont acides gras saturés - $foodProduct->nv_daily_carb = $nutri_values["pourcent_apport_ref_choval_r"]; //Glucides - $foodProduct->nv_daily_sugar = $nutri_values["pourcent_apport_ref_sugar_r"]; //dont sucres - $foodProduct->nv_daily_fiber = $nutri_values["pourcent_apport_ref_fibtg_r"]; //fibres alimentaires - $foodProduct->nv_daily_protein = $nutri_values["pourcent_apport_ref_pro_r"]; //protéines - $foodProduct->nv_daily_salt = $nutri_values["pourcent_apport_ref_salteq_r"]; //sel - - //$foodProduct-> = $nutri_values["pourcent_apport_ref_e14_r"]; - - //nutriscore + // apports journaliers + $foodProduct->nv_daily_energy = $nutri_values["pourcent_apport_ref_kjo_r"]; +// Energie % recommandé + $foodProduct->nv_daily_fat = $nutri_values["pourcent_apport_ref_fat_r"]; +// graisses + $foodProduct->nv_daily_sat_fat = $nutri_values["pourcent_apport_ref_fatsat_r"]; +// dont acides gras saturés + $foodProduct->nv_daily_carb = $nutri_values["pourcent_apport_ref_choval_r"]; +// Glucides + $foodProduct->nv_daily_sugar = $nutri_values["pourcent_apport_ref_sugar_r"]; +// dont sucres + $foodProduct->nv_daily_fiber = $nutri_values["pourcent_apport_ref_fibtg_r"]; +// fibres alimentaires + $foodProduct->nv_daily_protein = $nutri_values["pourcent_apport_ref_pro_r"]; +// protéines + $foodProduct->nv_daily_salt = $nutri_values["pourcent_apport_ref_salteq_r"]; +// sel + // $foodProduct-> = $nutri_values["pourcent_apport_ref_e14_r"]; + // nutriscore $foodProduct->nutriscore = $nutri_values["classement"]; - //Infos n'ayant pas de mapping + // Infos n'ayant pas de mapping // $foodProduct-> = $nutri_values["val_energ_kj_nut"]; // $foodProduct-> = $nutri_values["val_energ_kcal_nut"]; // $foodProduct-> = $nutri_values["mat_grass_nut"]; @@ -228,9 +245,9 @@ class XmlInco extends Model // $foodProduct-> = $nutri_values["fruits_r_prec"]; // $foodProduct-> = $nutri_values["fruits_coque_sech_r_prec"]; // $foodProduct-> = $nutri_values["score_nutri"]; - } + }//end if $foodProduct->save(); - } + }//end if } } diff --git a/app/Policies/ProductPolicy.php b/app/Policies/ProductPolicy.php index 317ea18..166c835 100644 --- a/app/Policies/ProductPolicy.php +++ b/app/Policies/ProductPolicy.php @@ -2,8 +2,6 @@ namespace App\Policies; -use App\Models\Customers; -use App\Models\User; use App\Models\Product; use Illuminate\Auth\Access\HandlesAuthorization; use Illuminate\Auth\Access\Response; @@ -20,18 +18,18 @@ class ProductPolicy */ public function __construct() { - // } /** * $user is a App\Models\User or a App\Models\Customers */ - public function addToCart($user = null, Product $product) { + public function addToCart($user = null, Product $product) + { $now = Carbon::now(); - if($product->orderable_start === null or $product->orderable_start <= $now) { - //on est entré dans la période commandable ou c'est commandable depuis toujours - if($product->orderable_end === null or $product->orderable_end >= $now) { - //il n'y a pas de limite dans le temps ou elle n'est pas encore passée + if ($product->orderable_start === null or $product->orderable_start <= $now) { + // on est entré dans la période commandable ou c'est commandable depuis toujours + if ($product->orderable_end === null or $product->orderable_end >= $now) { + // il n'y a pas de limite dans le temps ou elle n'est pas encore passée return Response::allow(); } return Response::deny('Ce produit n\'est pas disponible pour le moment'); diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 4435b00..67d2392 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,7 +2,6 @@ namespace App\Providers; -use App\Enums\SellUnit; use App\Models\Range; use App\Models\Tag; use App\Models\Setting; @@ -21,7 +20,6 @@ class AppServiceProvider extends ServiceProvider */ public function register() { - // } /** @@ -40,21 +38,24 @@ class AppServiceProvider extends ServiceProvider setlocale(LC_TIME, strtoupper(config('app.locale')) . "_" . config('app.locale') . '.utf8'); } - //bo settings as config - //this is useful when setting up the app whene settings table doesn't exist yet + // bo settings as config + // this is useful when setting up the app whene settings table doesn't exist yet try { config([ 'bosettings' => Setting::all() - ->keyBy('key') // key every setting by its name + ->keyBy('key') +// key every setting by its name ->transform(function ($setting) { - return $setting->value; // return only the value + return $setting->value; +// return only the value }) - ->toArray() // make it an array + ->toArray() +// make it an array ]); } catch (QueryException $e) { - //nevermind, you should run php artisan migrate before going any further. + // nevermind, you should run php artisan migrate before going any further. } - //this is useful when setting up the app whene ranges table doesn't exist yet + // this is useful when setting up the app whene ranges table doesn't exist yet try { // on partage les ranges (gammes produit) $ranges = Range::where('status', '1')->get(); @@ -63,7 +64,7 @@ class AppServiceProvider extends ServiceProvider } View::share('published_ranges', $ranges); - //this is useful when setting up the app when tags table doesn't exist yet + // this is useful when setting up the app when tags table doesn't exist yet try { // on partage les tags $tags = Tag::where('status', '1')->orderBy('order', 'ASC')->get(); @@ -72,14 +73,14 @@ class AppServiceProvider extends ServiceProvider } View::share('published_tags', $tags); - //@TODO : Supprimer cet element front_settings - //this is useful when setting up the app whene settings table doesn't exist yet + // @TODO : Supprimer cet element front_settings + // this is useful when setting up the app whene settings table doesn't exist yet try { $front_settings = Setting::where('key', 'LIKE', 'theme_%')->get(); } catch (QueryException $e) { $front_settings = null; } - //front theme settings + // front theme settings View::share('front_settings', $front_settings); Blade::directive('fmt_currency', function ($expression) { @@ -92,19 +93,19 @@ class AppServiceProvider extends ServiceProvider }); Blade::directive('fmt_sellunit', function ($expression) { - if(config('bosettings.sell_unit_management') == "strict") { + if (config('bosettings.sell_unit_management') == "strict") { return "label); } ?>"; } else { return ""; } }); - Blade::directive('excerpt_product_title', function($expression) { + Blade::directive('excerpt_product_title', function ($expression) { $limit = config('theme.max_product_title_length'); return ""; }); - //default paginator template for back Office + // default paginator template for back Office Paginator::useBootstrap(); } } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index ce74491..9425227 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -3,7 +3,6 @@ namespace App\Providers; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; -use Illuminate\Support\Facades\Gate; class AuthServiceProvider extends ServiceProvider { @@ -24,7 +23,5 @@ class AuthServiceProvider extends ServiceProvider public function boot() { $this->registerPolicies(); - - // } } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index a9f10a6..89dff61 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -5,7 +5,6 @@ namespace App\Providers; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; -use Illuminate\Support\Facades\Event; class EventServiceProvider extends ServiceProvider { @@ -27,6 +26,5 @@ class EventServiceProvider extends ServiceProvider */ public function boot() { - // } } diff --git a/app/Rules/Adult.php b/app/Rules/Adult.php index 76b124b..2c1366a 100644 --- a/app/Rules/Adult.php +++ b/app/Rules/Adult.php @@ -7,7 +7,6 @@ use Carbon\Carbon; class Adult implements Rule { - private $error_messages = "la date de naissance est incorrecte"; /** @@ -17,15 +16,14 @@ class Adult implements Rule */ public function __construct() { - // } /** * Determine if the validation rule passes. * - * @param string $attribute + * @param string $attribute * @param mixed $value - * @return bool + * @return boolean */ public function passes($attribute, $value) { @@ -48,7 +46,7 @@ class Adult implements Rule return false; } - //pass + // pass return true; } diff --git a/composer.json b/composer.json index d8e5adc..0bb025e 100644 --- a/composer.json +++ b/composer.json @@ -29,13 +29,12 @@ "phpunit/phpunit": "^9.3.3", "slevomat/coding-standard": "^7.1" }, - "repositories": [ - { - "name": "ldc/ldccrmv2client", - "type": "vcs", - "url": "https://voight001.lesidc.com/crm-client" + "repositories": { + "gitlab.com/16669037": { + "type": "composer", + "url": "https://gitlab.com/api/v4/group/16669037/-/packages/composer/packages.json" } - ], + }, "config": { "optimize-autoloader": true, "preferred-install": "dist", diff --git a/composer.lock b/composer.lock index 29de652..7b68ee1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,35 +4,35 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7902c20a6455397b075b25c9db47f5b8", + "content-hash": "989b3d8c793c3305c3f4ccfe747f137e", "packages": [ { "name": "asm89/stack-cors", - "version": "v2.0.3", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/asm89/stack-cors.git", - "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714" + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/9cb795bf30988e8c96dd3c40623c48a877bc6714", - "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", "shasum": "" }, "require": { - "php": "^7.0|^8.0", - "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" }, "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", + "phpunit/phpunit": "^7|^9", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -58,9 +58,9 @@ ], "support": { "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.0.3" + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" }, - "time": "2021-03-11T06:42:03+00:00" + "time": "2022-01-18T09:12:03+00:00" }, { "name": "brick/math", @@ -124,22 +124,22 @@ }, { "name": "bumbummen99/shoppingcart", - "version": "4.0.0", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/bumbummen99/LaravelShoppingcart.git", - "reference": "f2c763e311b0fc58b2dfdfa2c41c6318a7c884e1" + "reference": "1c50fb564826b6ee748d2d9afad7447b6884166e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bumbummen99/LaravelShoppingcart/zipball/f2c763e311b0fc58b2dfdfa2c41c6318a7c884e1", - "reference": "f2c763e311b0fc58b2dfdfa2c41c6318a7c884e1", + "url": "https://api.github.com/repos/bumbummen99/LaravelShoppingcart/zipball/1c50fb564826b6ee748d2d9afad7447b6884166e", + "reference": "1c50fb564826b6ee748d2d9afad7447b6884166e", "shasum": "" }, "require": { - "illuminate/events": "5.4.*||5.5.*||5.6.*||5.7.*||5.8.*||^6.0||^7.0||^8.0", - "illuminate/session": "5.4.*||5.5.*||5.6.*||5.7.*||5.8.*||^6.0||^7.0||^8.0", - "illuminate/support": "5.4.*||5.5.*||5.6.*||5.7.*||5.8.*||^6.0||^7.0||^8.0", + "illuminate/events": "5.4.*||5.5.*||5.6.*||5.7.*||5.8.*||^6.0||^7.0||^8.0||^9.0", + "illuminate/session": "5.4.*||5.5.*||5.6.*||5.7.*||5.8.*||^6.0||^7.0||^8.0||^9.0", + "illuminate/support": "5.4.*||5.5.*||5.6.*||5.7.*||5.8.*||^6.0||^7.0||^8.0||^9.0", "nesbot/carbon": "~1.20||^1.26.3||^2.0" }, "require-dev": { @@ -189,9 +189,9 @@ ], "support": { "issues": "https://github.com/bumbummen99/LaravelShoppingcart/issues", - "source": "https://github.com/bumbummen99/LaravelShoppingcart/tree/4.0.0" + "source": "https://github.com/bumbummen99/LaravelShoppingcart/tree/4.2.0" }, - "time": "2021-01-18T23:55:30+00:00" + "time": "2022-05-15T15:32:38+00:00" }, { "name": "diglactic/laravel-breadcrumbs", @@ -233,12 +233,12 @@ } }, "autoload": { - "psr-4": { - "Diglactic\\Breadcrumbs\\": "src/" - }, "files": [ "src/deprecated.php" - ] + ], + "psr-4": { + "Diglactic\\Breadcrumbs\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -360,32 +360,28 @@ }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" @@ -420,7 +416,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -436,33 +432,33 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.1.0", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c" + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", - "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "webmozart/assert": "^1.7.0" + "webmozart/assert": "^1.0" }, "replace": { "mtdowling/cron-expression": "^1.0" }, "require-dev": { "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-webmozart-assert": "^0.12.7", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", @@ -489,7 +485,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" }, "funding": [ { @@ -497,7 +493,7 @@ "type": "github" } ], - "time": "2020-11-24T19:55:57+00:00" + "time": "2022-01-18T15:43:28+00:00" }, { "name": "egulias/email-validator", @@ -622,16 +618,16 @@ }, { "name": "fideloper/proxy", - "version": "4.4.1", + "version": "4.4.2", "source": { "type": "git", "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0" + "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/c073b2bd04d1c90e04dc1b787662b558dd65ade0", - "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", + "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", "shasum": "" }, "require": { @@ -641,7 +637,7 @@ "require-dev": { "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0", "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^8.5.8|^9.3.3" }, "type": "library", "extra": { @@ -674,34 +670,32 @@ ], "support": { "issues": "https://github.com/fideloper/TrustedProxy/issues", - "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.1" + "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.2" }, - "time": "2020-10-22T13:48:01+00:00" + "time": "2022-02-09T13:33:34+00:00" }, { "name": "fruitcake/laravel-cors", - "version": "v2.0.4", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a" + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/a8ccedc7ca95189ead0e407c43b530dc17791d6a", - "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", "shasum": "" }, "require": { "asm89/stack-cors": "^2.0.1", "illuminate/contracts": "^6|^7|^8|^9", "illuminate/support": "^6|^7|^8|^9", - "php": ">=7.2", - "symfony/http-foundation": "^4|^5", - "symfony/http-kernel": "^4.3.4|^5" + "php": ">=7.2" }, "require-dev": { - "laravel/framework": "^6|^7|^8", + "laravel/framework": "^6|^7.24|^8", "orchestra/testbench-dusk": "^4|^5|^6|^7", "phpunit/phpunit": "^6|^7|^8|^9", "squizlabs/php_codesniffer": "^3.5" @@ -709,7 +703,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" }, "laravel": { "providers": [ @@ -745,36 +739,40 @@ ], "support": { "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.4" + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" }, "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, { "url": "https://github.com/barryvdh", "type": "github" } ], - "time": "2021-04-26T11:24:25+00:00" + "time": "2022-02-23T14:25:13+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.0.3", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac" + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/296c015dc30ec4322168c5ad3ee5cc11dae827ac", - "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "autoload": { @@ -789,7 +787,8 @@ "authors": [ { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "An Implementation Of The Result Type", @@ -802,7 +801,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.3" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" }, "funding": [ { @@ -814,29 +813,29 @@ "type": "tidelift" } ], - "time": "2021-10-17T19:48:54+00:00" + "time": "2022-07-30T15:56:11+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.0", + "version": "7.4.5", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94" + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/868b3571a039f0ebc11ac8f344f4080babe2cb94", - "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2" + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "provide": { "psr/http-client-implementation": "1.0" @@ -860,12 +859,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -922,7 +921,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.0" + "source": "https://github.com/guzzle/guzzle/tree/7.4.5" }, "funding": [ { @@ -938,7 +937,7 @@ "type": "tidelift" } ], - "time": "2021-10-18T09:52:00+00:00" + "time": "2022-06-20T22:16:13+00:00" }, { "name": "guzzlehttp/promises", @@ -967,12 +966,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1026,16 +1025,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.8.3", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" + "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", "shasum": "" }, "require": { @@ -1056,16 +1055,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1116,7 +1115,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.3" + "source": "https://github.com/guzzle/psr7/tree/1.9.0" }, "funding": [ { @@ -1132,20 +1131,20 @@ "type": "tidelift" } ], - "time": "2021-10-05T13:56:00+00:00" + "time": "2022-06-20T21:43:03+00:00" }, { "name": "intervention/image", - "version": "2.7.0", + "version": "2.7.2", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "9a8cc99d30415ec0b3f7649e1647d03a55698545" + "reference": "04be355f8d6734c826045d02a1079ad658322dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/9a8cc99d30415ec0b3f7649e1647d03a55698545", - "reference": "9a8cc99d30415ec0b3f7649e1647d03a55698545", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", "shasum": "" }, "require": { @@ -1188,8 +1187,8 @@ "authors": [ { "name": "Oliver Vogel", - "email": "oliver@olivervogel.com", - "homepage": "http://olivervogel.com/" + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" } ], "description": "Image handling and manipulation library with support for Laravel integration", @@ -1204,11 +1203,11 @@ ], "support": { "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/2.7.0" + "source": "https://github.com/Intervention/image/tree/2.7.2" }, "funding": [ { - "url": "https://www.paypal.me/interventionphp", + "url": "https://paypal.me/interventionio", "type": "custom" }, { @@ -1216,24 +1215,24 @@ "type": "github" } ], - "time": "2021-10-03T14:17:12+00:00" + "time": "2022-05-21T17:30:32+00:00" }, { "name": "kwaadpepper/enum", - "version": "2.1.1", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/Kwaadpepper/enum.git", - "reference": "1c342113b63d15c8b30e5d8a0af5d4d750392037" + "reference": "767d8c8d150c29c4f2cb462864ab07df71e92f6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Kwaadpepper/enum/zipball/1c342113b63d15c8b30e5d8a0af5d4d750392037", - "reference": "1c342113b63d15c8b30e5d8a0af5d4d750392037", + "url": "https://api.github.com/repos/Kwaadpepper/enum/zipball/767d8c8d150c29c4f2cb462864ab07df71e92f6d", + "reference": "767d8c8d150c29c4f2cb462864ab07df71e92f6d", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=7.3" }, "require-dev": { "orchestra/testbench": "^5", @@ -1274,22 +1273,22 @@ ], "support": { "issues": "https://github.com/Kwaadpepper/enum/issues", - "source": "https://github.com/Kwaadpepper/enum/tree/2.1.1" + "source": "https://github.com/Kwaadpepper/enum/tree/2.1.4" }, - "time": "2021-09-20T20:37:21+00:00" + "time": "2022-07-28T14:19:44+00:00" }, { "name": "laravel/framework", - "version": "v8.69.0", + "version": "v8.83.23", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "545181da688db64fed6d8427e55f630a90ca0d32" + "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/545181da688db64fed6d8427e55f630a90ca0d32", - "reference": "545181da688db64fed6d8427e55f630a90ca0d32", + "url": "https://api.github.com/repos/laravel/framework/zipball/bdc707f8b9bcad289b24cd182d98ec7480ac4491", + "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491", "shasum": "" }, "require": { @@ -1307,22 +1306,22 @@ "opis/closure": "^3.6", "php": "^7.3|^8.0", "psr/container": "^1.0", - "psr/log": "^1.0 || ^2.0", + "psr/log": "^1.0|^2.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^4.2.2", "swiftmailer/swiftmailer": "^6.3", - "symfony/console": "^5.1.4", - "symfony/error-handler": "^5.1.4", - "symfony/finder": "^5.1.4", - "symfony/http-foundation": "^5.1.4", - "symfony/http-kernel": "^5.1.4", - "symfony/mime": "^5.1.4", - "symfony/process": "^5.1.4", - "symfony/routing": "^5.1.4", - "symfony/var-dumper": "^5.1.4", + "symfony/console": "^5.4", + "symfony/error-handler": "^5.4", + "symfony/finder": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/mime": "^5.4", + "symfony/process": "^5.4", + "symfony/routing": "^5.4", + "symfony/var-dumper": "^5.4", "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.2", - "voku/portable-ascii": "^1.4.8" + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^1.6.1" }, "conflict": { "tightenco/collect": "<5.5.33" @@ -1366,21 +1365,22 @@ }, "require-dev": { "aws/aws-sdk-php": "^3.198.1", - "doctrine/dbal": "^2.13.3|^3.1.2", + "doctrine/dbal": "^2.13.3|^3.1.4", "filp/whoops": "^2.14.3", "guzzlehttp/guzzle": "^6.5.5|^7.0.1", "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^6.23", + "orchestra/testbench-core": "^6.27", "pda/pheanstalk": "^4.0", "phpunit/phpunit": "^8.5.19|^9.5.8", "predis/predis": "^1.1.9", - "symfony/cache": "^5.1.4" + "symfony/cache": "^5.4" }, "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.2).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", "ext-bcmath": "Required to use the multiple_of validation rule.", "ext-ftp": "Required to use the Flysystem FTP driver.", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", @@ -1401,9 +1401,9 @@ "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", "predis/predis": "Required to use the predis connector (^1.1.9).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^5.1.4).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, @@ -1448,20 +1448,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-11-02T13:53:22+00:00" + "time": "2022-07-26T13:30:00+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.0.3", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "6cfc678735f22ccedad761b8cae2bab14c3d8e5b" + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/6cfc678735f22ccedad761b8cae2bab14c3d8e5b", - "reference": "6cfc678735f22ccedad761b8cae2bab14c3d8e5b", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540", + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540", "shasum": "" }, "require": { @@ -1507,36 +1507,36 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2021-10-07T14:00:57+00:00" + "time": "2022-05-16T17:09:47+00:00" }, { "name": "laravel/tinker", - "version": "v2.6.2", + "version": "v2.7.2", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "c808a7227f97ecfd9219fbf913bad842ea854ddc" + "reference": "dff39b661e827dae6e092412f976658df82dbac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/c808a7227f97ecfd9219fbf913bad842ea854ddc", - "reference": "c808a7227f97ecfd9219fbf913bad842ea854ddc", + "url": "https://api.github.com/repos/laravel/tinker/zipball/dff39b661e827dae6e092412f976658df82dbac5", + "reference": "dff39b661e827dae6e092412f976658df82dbac5", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0", - "illuminate/contracts": "^6.0|^7.0|^8.0", - "illuminate/support": "^6.0|^7.0|^8.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4", - "symfony/var-dumper": "^4.3.4|^5.0" + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." }, "type": "library", "extra": { @@ -1573,17 +1573,23 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.6.2" + "source": "https://github.com/laravel/tinker/tree/v2.7.2" }, - "time": "2021-09-28T15:47:34+00:00" + "time": "2022-03-23T12:38:24+00:00" }, { "name": "ldc/ldccrmv2client", - "version": "3.0.1", + "version": "3.0.5", "source": { "type": "git", - "url": "https://voight001.lesidc.com/crm-client", - "reference": "01be799d20268b8f91356ca8ef5d664ff090ced0" + "url": "https://gitlab.com/service-web-lab/crm-client.git", + "reference": "d5dc2c68650bbe556a28b04d8f96f9d7e4668f35" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/38818549/packages/composer/archives/ldc/ldccrmv2client.zip?sha=d5dc2c68650bbe556a28b04d8f96f9d7e4668f35", + "reference": "d5dc2c68650bbe556a28b04d8f96f9d7e4668f35", + "shasum": "" }, "require": { "ext-curl": "^7.3", @@ -1626,21 +1632,20 @@ "Client", "LDC", "Laravel" - ], - "time": "2022-02-11T13:57:22+00:00" + ] }, { "name": "league/commonmark", - "version": "1.6.6", + "version": "1.6.7", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf" + "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c4228d11e30d7493c6836d20872f9582d8ba6dcf", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/2b8185c13bc9578367a5bf901881d1c1b5bbd09b", + "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b", "shasum": "" }, "require": { @@ -1703,10 +1708,6 @@ "source": "https://github.com/thephpleague/commonmark" }, "funding": [ - { - "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark", - "type": "custom" - }, { "url": "https://www.colinodell.com/sponsor", "type": "custom" @@ -1719,29 +1720,25 @@ "url": "https://github.com/colinodell", "type": "github" }, - { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" - }, { "url": "https://tidelift.com/funding/github/packagist/league/commonmark", "type": "tidelift" } ], - "time": "2021-07-17T17:13:23+00:00" + "time": "2022-01-13T17:18:13+00:00" }, { "name": "league/flysystem", - "version": "1.1.5", + "version": "1.1.9", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea" + "reference": "094defdb4a7001845300334e7c1ee2335925ef99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/18634df356bfd4119fe3d6156bdb990c414c14ea", - "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99", "shasum": "" }, "require": { @@ -1814,7 +1811,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.5" + "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" }, "funding": [ { @@ -1822,20 +1819,20 @@ "type": "other" } ], - "time": "2021-08-17T13:49:42+00:00" + "time": "2021-12-09T09:40:50+00:00" }, { "name": "league/glide", - "version": "1.7.0", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/thephpleague/glide.git", - "reference": "ae5e26700573cb678919d28e425a8b87bc71c546" + "reference": "257e0c3612ef3dc57eb7f90cb741198151a45a5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/glide/zipball/ae5e26700573cb678919d28e425a8b87bc71c546", - "reference": "ae5e26700573cb678919d28e425a8b87bc71c546", + "url": "https://api.github.com/repos/thephpleague/glide/zipball/257e0c3612ef3dc57eb7f90cb741198151a45a5f", + "reference": "257e0c3612ef3dc57eb7f90cb741198151a45a5f", "shasum": "" }, "require": { @@ -1869,6 +1866,11 @@ "name": "Jonathan Reinink", "email": "jonathan@reinink.ca", "homepage": "http://reinink.ca" + }, + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com", + "homepage": "https://titouangalopin.com" } ], "description": "Wonderfully easy on-demand image manipulation library with an HTTP based API.", @@ -1885,22 +1887,22 @@ ], "support": { "issues": "https://github.com/thephpleague/glide/issues", - "source": "https://github.com/thephpleague/glide/tree/1.7.0" + "source": "https://github.com/thephpleague/glide/tree/1.7.1" }, - "time": "2020-11-05T17:34:03+00:00" + "time": "2022-04-27T04:03:46+00:00" }, { "name": "league/mime-type-detection", - "version": "1.8.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b38b25d7b372e9fddb00335400467b223349fd7e" + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b38b25d7b372e9fddb00335400467b223349fd7e", - "reference": "b38b25d7b372e9fddb00335400467b223349fd7e", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", "shasum": "" }, "require": { @@ -1908,7 +1910,7 @@ "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", + "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", "phpunit/phpunit": "^8.5.8 || ^9.3" }, @@ -1931,7 +1933,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.8.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" }, "funding": [ { @@ -1943,20 +1945,20 @@ "type": "tidelift" } ], - "time": "2021-09-25T08:23:19+00:00" + "time": "2022-04-17T13:12:02+00:00" }, { "name": "monolog/monolog", - "version": "2.3.5", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", "shasum": "" }, "require": { @@ -1969,18 +1971,22 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", + "phpspec/prophecy": "^1.15", "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -1995,7 +2001,6 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -2030,7 +2035,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.5" + "source": "https://github.com/Seldaek/monolog/tree/2.8.0" }, "funding": [ { @@ -2042,20 +2047,20 @@ "type": "tidelift" } ], - "time": "2021-10-01T21:08:31+00:00" + "time": "2022-07-24T11:55:47+00:00" }, { "name": "nesbot/carbon", - "version": "2.54.0", + "version": "2.61.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5" + "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/eed83939f1aed3eee517d03a33f5ec587ac529b5", - "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", + "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", "shasum": "" }, "require": { @@ -2063,17 +2068,19 @@ "php": "^7.1.8 || ^8.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0" + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { "doctrine/dbal": "^2.0 || ^3.0", "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", "squizlabs/php_codesniffer": "^3.4" }, "bin": [ @@ -2124,20 +2131,25 @@ "time" ], "support": { + "docs": "https://carbon.nesbot.com/docs", "issues": "https://github.com/briannesbitt/Carbon/issues", "source": "https://github.com/briannesbitt/Carbon" }, "funding": [ { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", "type": "tidelift" } ], - "time": "2021-11-01T21:22:20+00:00" + "time": "2022-08-06T12:41:24+00:00" }, { "name": "nicmart/tree", @@ -2187,16 +2199,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.13.0", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "50953a2691a922aa1769461637869a0a2faa3f53" + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53", - "reference": "50953a2691a922aa1769461637869a0a2faa3f53", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { @@ -2237,22 +2249,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" }, - "time": "2021-09-20T12:20:58+00:00" + "time": "2022-05-31T20:59:12+00:00" }, { "name": "opis/closure", - "version": "3.6.2", + "version": "3.6.3", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6" + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6", - "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", "shasum": "" }, "require": { @@ -2269,12 +2281,12 @@ } }, "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, "files": [ "functions.php" - ] + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2302,35 +2314,39 @@ ], "support": { "issues": "https://github.com/opis/closure/issues", - "source": "https://github.com/opis/closure/tree/3.6.2" + "source": "https://github.com/opis/closure/tree/3.6.3" }, - "time": "2021-04-09T13:42:10+00:00" + "time": "2022-01-27T09:35:39+00:00" }, { "name": "phpoption/phpoption", - "version": "1.8.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28" + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5455cb38aed4523f99977c4a12ef19da4bfe2a28", - "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.0.20 || ^8.5.19 || ^9.5.8" + "bamarni/composer-bin-plugin": "^1.8", + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2345,11 +2361,13 @@ "authors": [ { "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "Option Type for PHP", @@ -2361,7 +2379,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.0" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" }, "funding": [ { @@ -2373,7 +2391,7 @@ "type": "tidelift" } ], - "time": "2021-08-28T21:27:29+00:00" + "time": "2022-07-30T15:51:26+00:00" }, { "name": "psr/container", @@ -2681,36 +2699,37 @@ }, { "name": "psy/psysh", - "version": "v0.10.9", + "version": "v0.11.8", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "01281336c4ae557fe4a994544f30d3a1bc204375" + "reference": "f455acf3645262ae389b10e9beba0c358aa6994e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/01281336c4ae557fe4a994544f30d3a1bc204375", - "reference": "01281336c4ae557fe4a994544f30d3a1bc204375", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/f455acf3645262ae389b10e9beba0c358aa6994e", + "reference": "f455acf3645262ae389b10e9beba0c358aa6994e", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", - "php": "^8.0 || ^7.0 || ^5.5.9", - "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", - "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.*" + "bamarni/composer-bin-plugin": "^1.2" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." }, "bin": [ "bin/psysh" @@ -2718,7 +2737,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.10.x-dev" + "dev-main": "0.11.x-dev" } }, "autoload": { @@ -2750,9 +2769,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.10.9" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.8" }, - "time": "2021-10-10T13:37:39+00:00" + "time": "2022-07-28T14:25:11+00:00" }, { "name": "ralouphie/getallheaders", @@ -2942,12 +2961,12 @@ } }, "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3231,16 +3250,16 @@ }, { "name": "spatie/image", - "version": "1.10.5", + "version": "1.10.6", "source": { "type": "git", "url": "https://github.com/spatie/image.git", - "reference": "63a963d0200fb26f2564bf7201fc7272d9b22933" + "reference": "897e819848096ea8eee8ed4a3531c6166f9a99e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image/zipball/63a963d0200fb26f2564bf7201fc7272d9b22933", - "reference": "63a963d0200fb26f2564bf7201fc7272d9b22933", + "url": "https://api.github.com/repos/spatie/image/zipball/897e819848096ea8eee8ed4a3531c6166f9a99e0", + "reference": "897e819848096ea8eee8ed4a3531c6166f9a99e0", "shasum": "" }, "require": { @@ -3251,11 +3270,11 @@ "php": "^7.2|^8.0", "spatie/image-optimizer": "^1.1", "spatie/temporary-directory": "^1.0|^2.0", - "symfony/process": "^3.0|^4.0|^5.0" + "symfony/process": "^3.0|^4.0|^5.0|^6.0" }, "require-dev": { - "phpunit/phpunit": "^8.0|^9.0", - "symfony/var-dumper": "^4.0|^5.0", + "phpunit/phpunit": "^8.5.21|^9.5.4", + "symfony/var-dumper": "^4.0|^5.0|^6.0", "vimeo/psalm": "^4.6" }, "type": "library", @@ -3284,7 +3303,7 @@ ], "support": { "issues": "https://github.com/spatie/image/issues", - "source": "https://github.com/spatie/image/tree/1.10.5" + "source": "https://github.com/spatie/image/tree/1.10.6" }, "funding": [ { @@ -3296,31 +3315,31 @@ "type": "github" } ], - "time": "2021-04-07T08:42:24+00:00" + "time": "2021-12-21T10:01:09+00:00" }, { "name": "spatie/image-optimizer", - "version": "1.5.0", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "1b3585c3da2cc8872141fce40fbd17e07e6655d1" + "reference": "6db75529cbf8fa84117046a9d513f277aead90a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/1b3585c3da2cc8872141fce40fbd17e07e6655d1", - "reference": "1b3585c3da2cc8872141fce40fbd17e07e6655d1", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/6db75529cbf8fa84117046a9d513f277aead90a0", + "reference": "6db75529cbf8fa84117046a9d513f277aead90a0", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2|^8.0", + "php": "^7.3|^8.0", "psr/log": "^1.0 | ^2.0 | ^3.0", - "symfony/process": "^4.2|^5.0" + "symfony/process": "^4.2|^5.0|^6.0" }, "require-dev": { - "phpunit/phpunit": "^8.0|^9.0", - "symfony/var-dumper": "^4.2|^5.0" + "phpunit/phpunit": "^8.5.21|^9.4.4", + "symfony/var-dumper": "^4.2|^5.0|^6.0" }, "type": "library", "autoload": { @@ -3348,9 +3367,9 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.5.0" + "source": "https://github.com/spatie/image-optimizer/tree/1.6.2" }, - "time": "2021-10-11T15:44:16+00:00" + "time": "2021-12-21T10:08:05+00:00" }, { "name": "spatie/laravel-sitemap", @@ -3597,30 +3616,31 @@ "type": "tidelift" } ], + "abandoned": "symfony/mailer", "time": "2021-10-18T15:26:12+00:00" }, { "name": "symfony/console", - "version": "v5.3.10", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3" + "reference": "535846c7ee6bc4dd027ca0d93220601456734b10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", - "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3", + "url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10", + "reference": "535846c7ee6bc4dd027ca0d93220601456734b10", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", @@ -3635,12 +3655,12 @@ }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -3680,7 +3700,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.10" + "source": "https://github.com/symfony/console/tree/v5.4.11" }, "funding": [ { @@ -3696,20 +3716,20 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2022-07-22T10:42:43+00:00" }, { "name": "symfony/css-selector", - "version": "v5.3.4", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + "reference": "c1681789f059ab756001052164726ae88512ae3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d", + "reference": "c1681789f059ab756001052164726ae88512ae3d", "shasum": "" }, "require": { @@ -3746,7 +3766,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.4" + "source": "https://github.com/symfony/css-selector/tree/v5.4.11" }, "funding": [ { @@ -3762,20 +3782,20 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { @@ -3784,7 +3804,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -3813,7 +3833,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, "funding": [ { @@ -3829,25 +3849,25 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.3.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "c7eef3a60ccfdd8eafe07f81652e769ac9c7146c" + "reference": "0b900ca5576ecd59e08c76127e616667cfe427a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c7eef3a60ccfdd8eafe07f81652e769ac9c7146c", - "reference": "c7eef3a60ccfdd8eafe07f81652e769ac9c7146c", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0b900ca5576ecd59e08c76127e616667cfe427a7", + "reference": "0b900ca5576ecd59e08c76127e616667cfe427a7", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -3857,7 +3877,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -3888,7 +3908,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.3.7" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.11" }, "funding": [ { @@ -3904,32 +3924,35 @@ "type": "tidelift" } ], - "time": "2021-08-29T19:32:13+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/error-handler", - "version": "v5.3.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321" + "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", - "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/f75d17cb4769eb38cd5fccbda95cd80a054d35c8", + "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -3956,7 +3979,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.3.7" + "source": "https://github.com/symfony/error-handler/tree/v5.4.11" }, "funding": [ { @@ -3972,26 +3995,26 @@ "type": "tidelift" } ], - "time": "2021-08-28T15:07:08+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.3.7", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130" + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ce7b20d69c66a20939d8952b617506a44d102130", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -4003,13 +4026,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -4041,7 +4064,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9" }, "funding": [ { @@ -4057,20 +4080,20 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2022-05-05T16:45:39+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.4.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", "shasum": "" }, "require": { @@ -4083,7 +4106,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -4120,7 +4143,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" }, "funding": [ { @@ -4136,24 +4159,25 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/finder", - "version": "v5.3.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -4182,7 +4206,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.7" + "source": "https://github.com/symfony/finder/tree/v5.4.11" }, "funding": [ { @@ -4198,111 +4222,33 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-04-11T23:07:08+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.3.10", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9f34f02e8a5fdc7a56bafe011cea1ce97300e54c" + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9f34f02e8a5fdc7a56bafe011cea1ce97300e54c", - "reference": "9f34f02e8a5fdc7a56bafe011cea1ce97300e54c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -4333,7 +4279,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.10" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.11" }, "funding": [ { @@ -4349,36 +4295,35 @@ "type": "tidelift" } ], - "time": "2021-10-11T15:41:55+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.3.10", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "703e4079920468e9522b72cf47fd76ce8d795e86" + "reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/703e4079920468e9522b72cf47fd76ce8d795e86", - "reference": "703e4079920468e9522b72cf47fd76ce8d795e86", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4fd590a2ef3f62560dbbf6cea511995dd77321ee", + "reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.4", + "symfony/browser-kit": "<5.4", "symfony/cache": "<5.0", "symfony/config": "<5.0", "symfony/console": "<4.4", @@ -4398,19 +4343,20 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -4445,7 +4391,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.3.10" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.11" }, "funding": [ { @@ -4461,25 +4407,25 @@ "type": "tidelift" } ], - "time": "2021-10-29T08:36:48+00:00" + "time": "2022-07-29T12:30:22+00:00" }, { "name": "symfony/mime", - "version": "v5.3.8", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11" + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/a756033d0a7e53db389618653ae991eba5a19a11", - "reference": "a756033d0a7e53db389618653ae991eba5a19a11", + "url": "https://api.github.com/repos/symfony/mime/zipball/3cd175cdcdb6db2e589e837dd46aff41027d9830", + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16" @@ -4493,10 +4439,10 @@ "require-dev": { "egulias/email-validator": "^2.1.10|^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.2|^6.0" }, "type": "library", "autoload": { @@ -4528,7 +4474,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.8" + "source": "https://github.com/symfony/mime/tree/v5.4.11" }, "funding": [ { @@ -4544,32 +4490,35 @@ "type": "tidelift" } ], - "time": "2021-09-10T12:30:38+00:00" + "time": "2022-07-20T11:34:24+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4577,12 +4526,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4607,7 +4556,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { @@ -4623,32 +4572,35 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.23.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" + "reference": "143f1881e655bebca1312722af8068de235ae5dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", + "reference": "143f1881e655bebca1312722af8068de235ae5dc", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-iconv": "*" + }, "suggest": { "ext-iconv": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4656,12 +4608,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4687,7 +4639,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" }, "funding": [ { @@ -4703,20 +4655,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "reference": "433d05519ce6990bf3530fba6957499d327395c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", + "reference": "433d05519ce6990bf3530fba6957499d327395c2", "shasum": "" }, "require": { @@ -4728,7 +4680,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4736,12 +4688,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4768,7 +4720,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" }, "funding": [ { @@ -4784,20 +4736,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", "shasum": "" }, "require": { @@ -4811,7 +4763,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4819,12 +4771,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4855,7 +4807,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" }, "funding": [ { @@ -4871,20 +4823,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { @@ -4896,7 +4848,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4904,12 +4856,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -4939,7 +4891,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" }, "funding": [ { @@ -4955,32 +4907,35 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4988,12 +4943,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5019,7 +4974,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -5035,20 +4990,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", "shasum": "" }, "require": { @@ -5057,7 +5012,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5065,12 +5020,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5095,7 +5050,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" }, "funding": [ { @@ -5111,20 +5066,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { @@ -5133,7 +5088,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5141,12 +5096,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5174,7 +5129,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, "funding": [ { @@ -5190,20 +5145,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { @@ -5212,7 +5167,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5220,12 +5175,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5257,7 +5212,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -5273,20 +5228,20 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", "shasum": "" }, "require": { @@ -5295,7 +5250,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5303,12 +5258,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5336,7 +5291,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" }, "funding": [ { @@ -5352,20 +5307,20 @@ "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/process", - "version": "v5.3.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967" + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/38f26c7d6ed535217ea393e05634cb0b244a1967", - "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967", + "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", "shasum": "" }, "require": { @@ -5398,7 +5353,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.7" + "source": "https://github.com/symfony/process/tree/v5.4.11" }, "funding": [ { @@ -5414,25 +5369,25 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/routing", - "version": "v5.3.7", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "be865017746fe869007d94220ad3f5297951811b" + "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/be865017746fe869007d94220ad3f5297951811b", - "reference": "be865017746fe869007d94220ad3f5297951811b", + "url": "https://api.github.com/repos/symfony/routing/zipball/3e01ccd9b2a3a4167ba2b3c53612762300300226", + "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -5444,11 +5399,11 @@ "require-dev": { "doctrine/annotations": "^1.12", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "For using the all-in-one router or any loader", @@ -5488,7 +5443,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.3.7" + "source": "https://github.com/symfony/routing/tree/v5.4.11" }, "funding": [ { @@ -5504,25 +5459,29 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:42:42+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.1" + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -5530,7 +5489,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5567,7 +5526,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -5583,20 +5542,20 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/string", - "version": "v5.3.10", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" + "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322", + "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322", "shasum": "" }, "require": { @@ -5607,20 +5566,23 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "~1.15" }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -5650,7 +5612,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.10" + "source": "https://github.com/symfony/string/tree/v5.4.11" }, "funding": [ { @@ -5666,31 +5628,32 @@ "type": "tidelift" } ], - "time": "2021-10-27T18:21:46+00:00" + "time": "2022-07-24T16:15:25+00:00" }, { "name": "symfony/translation", - "version": "v5.3.10", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa" + "reference": "7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/6ef197aea2ac8b9cd63e0da7522b3771714035aa", - "reference": "6ef197aea2ac8b9cd63e0da7522b3771714035aa", + "url": "https://api.github.com/repos/symfony/translation/zipball/7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21", + "reference": "7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation-contracts": "^2.3" }, "conflict": { "symfony/config": "<4.4", + "symfony/console": "<5.3", "symfony/dependency-injection": "<5.0", "symfony/http-kernel": "<5.0", "symfony/twig-bundle": "<5.0", @@ -5701,15 +5664,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -5745,7 +5709,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.10" + "source": "https://github.com/symfony/translation/tree/v5.4.11" }, "funding": [ { @@ -5761,20 +5725,20 @@ "type": "tidelift" } ], - "time": "2021-10-10T06:43:24+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.4.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", "shasum": "" }, "require": { @@ -5786,7 +5750,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -5823,7 +5787,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" }, "funding": [ { @@ -5839,20 +5803,20 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.10", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "875432adb5f5570fff21036fd22aee244636b7d1" + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/875432adb5f5570fff21036fd22aee244636b7d1", - "reference": "875432adb5f5570fff21036fd22aee244636b7d1", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", "shasum": "" }, "require": { @@ -5866,8 +5830,9 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -5911,7 +5876,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.10" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" }, "funding": [ { @@ -5927,7 +5892,7 @@ "type": "tidelift" } ], - "time": "2021-10-26T09:30:15+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "tightenco/collect", @@ -5985,26 +5950,26 @@ }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.3", + "version": "2.2.4", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5" + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5", - "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" }, "type": "library", "extra": { @@ -6032,22 +5997,22 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.3" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" }, - "time": "2020-07-13T06:12:54+00:00" + "time": "2021-12-08T09:12:39+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.3.1", + "version": "v5.4.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "accaddf133651d4b5cf81a119f25296736ffc850" + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/accaddf133651d4b5cf81a119f25296736ffc850", - "reference": "accaddf133651d4b5cf81a119f25296736ffc850", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", "shasum": "" }, "require": { @@ -6070,7 +6035,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3-dev" + "dev-master": "5.4-dev" } }, "autoload": { @@ -6085,11 +6050,13 @@ "authors": [ { "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { "name": "Vance Lucas", - "email": "vance@vancelucas.com" + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -6100,7 +6067,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" }, "funding": [ { @@ -6112,20 +6079,20 @@ "type": "tidelift" } ], - "time": "2021-10-02T19:24:42+00:00" + "time": "2021-12-12T23:22:04+00:00" }, { "name": "voku/portable-ascii", - "version": "1.5.6", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "80953678b19901e5165c56752d087fc11526017c" + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/80953678b19901e5165c56752d087fc11526017c", - "reference": "80953678b19901e5165c56752d087fc11526017c", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", "shasum": "" }, "require": { @@ -6162,7 +6129,7 @@ ], "support": { "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/1.5.6" + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" }, "funding": [ { @@ -6186,25 +6153,25 @@ "type": "tidelift" } ], - "time": "2020-11-12T00:07:28+00:00" + "time": "2022-01-24T18:55:24+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -6242,85 +6209,12 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [ - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.4", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b174585d1fe49ceed21928a945138948cb394600" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600", - "reference": "b174585d1fe49ceed21928a945138948cb394600", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-09-13T08:41:34+00:00" - }, { "name": "dealerdirect/phpcodesniffer-composer-installer", "version": "v0.7.2", @@ -6398,16 +6292,16 @@ }, { "name": "doctrine/cache", - "version": "2.1.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -6417,18 +6311,12 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, "type": "library", "autoload": { @@ -6477,7 +6365,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.1.1" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -6493,40 +6381,42 @@ "type": "tidelift" } ], - "time": "2021-07-17T14:49:29+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/dbal", - "version": "3.1.3", + "version": "3.3.8", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "96b0053775a544b4a6ab47654dac0621be8b4cf8" + "reference": "f873a820227bc352d023791775a01f078a30dfe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/96b0053775a544b4a6ab47654dac0621be8b4cf8", - "reference": "96b0053775a544b4a6ab47654dac0621be8b4cf8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/f873a820227bc352d023791775a01f078a30dfe1", + "reference": "f873a820227bc352d023791775a01f078a30dfe1", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.11.99", - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", "doctrine/event-manager": "^1.0", - "php": "^7.3 || ^8.0" + "php": "^7.3 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2021.1", - "phpstan/phpstan": "0.12.99", - "phpstan/phpstan-strict-rules": "^0.12.11", - "phpunit/phpunit": "9.5.10", - "psalm/plugin-phpunit": "0.16.1", - "squizlabs/php_codesniffer": "3.6.0", + "jetbrains/phpstorm-stubs": "2022.1", + "phpstan/phpstan": "1.8.2", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "9.5.21", + "psalm/plugin-phpunit": "0.17.0", + "squizlabs/php_codesniffer": "3.7.1", "symfony/cache": "^5.2|^6.0", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0|^6.0", - "vimeo/psalm": "4.10.0" + "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0", + "vimeo/psalm": "4.24.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -6586,7 +6476,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.1.3" + "source": "https://github.com/doctrine/dbal/tree/3.3.8" }, "funding": [ { @@ -6602,29 +6492,29 @@ "type": "tidelift" } ], - "time": "2021-10-02T16:15:05+00:00" + "time": "2022-08-05T15:35:35+00:00" }, { "name": "doctrine/deprecations", - "version": "v0.5.3", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", "shasum": "" }, "require": { "php": "^7.1|^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5|^8.5|^9.5", + "psr/log": "^1|^2|^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -6643,40 +6533,37 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" }, - "time": "2021-03-21T12:59:47+00:00" + "time": "2022-05-02T15:47:09+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", + "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "~1.4.10 || ^1.5.4", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common" @@ -6723,7 +6610,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + "source": "https://github.com/doctrine/event-manager/tree/1.1.2" }, "funding": [ { @@ -6739,33 +6626,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-07-27T22:18:11+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -6792,7 +6680,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -6808,20 +6696,20 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "facade/flare-client-php", - "version": "1.9.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/facade/flare-client-php.git", - "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed" + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/flare-client-php/zipball/b2adf1512755637d0cef4f7d1b54301325ac78ed", - "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", "shasum": "" }, "require": { @@ -6834,7 +6722,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.14", - "phpunit/phpunit": "^7.5.16", + "phpunit/phpunit": "^7.5", "spatie/phpunit-snapshot-assertions": "^2.0" }, "type": "library", @@ -6844,12 +6732,12 @@ } }, "autoload": { - "psr-4": { - "Facade\\FlareClient\\": "src" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Facade\\FlareClient\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6865,7 +6753,7 @@ ], "support": { "issues": "https://github.com/facade/flare-client-php/issues", - "source": "https://github.com/facade/flare-client-php/tree/1.9.1" + "source": "https://github.com/facade/flare-client-php/tree/1.10.0" }, "funding": [ { @@ -6873,20 +6761,20 @@ "type": "github" } ], - "time": "2021-09-13T12:16:46+00:00" + "time": "2022-08-09T11:23:57+00:00" }, { "name": "facade/ignition", - "version": "2.16.0", + "version": "2.17.6", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "23400e6cc565c9dcae2c53704b4de1c4870c0697" + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/23400e6cc565c9dcae2c53704b4de1c4870c0697", - "reference": "23400e6cc565c9dcae2c53704b4de1c4870c0697", + "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", "shasum": "" }, "require": { @@ -6903,6 +6791,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", "mockery/mockery": "^1.3", "orchestra/testbench": "^5.0|^6.0", "psalm/plugin-laravel": "^1.2" @@ -6925,12 +6814,12 @@ } }, "autoload": { - "psr-4": { - "Facade\\Ignition\\": "src" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Facade\\Ignition\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6950,36 +6839,38 @@ "issues": "https://github.com/facade/ignition/issues", "source": "https://github.com/facade/ignition" }, - "time": "2021-10-28T11:47:23+00:00" + "time": "2022-06-30T18:26:59+00:00" }, { "name": "fakerphp/faker", - "version": "v1.16.0", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35" + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/271d384d216e5e5c468a6b28feedf95d49f83b35", - "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/37f751c67a5372d4e26353bd9384bc03744ec77b", + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2" + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "conflict": { "fzaninotto/faker": "*" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", "symfony/phpunit-bridge": "^4.4 || ^5.2" }, "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", @@ -6988,7 +6879,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.16-dev" + "dev-main": "v1.20-dev" } }, "autoload": { @@ -7013,22 +6904,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.16.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.20.0" }, - "time": "2021-09-06T14:53:37+00:00" + "time": "2022-07-20T13:12:54+00:00" }, { "name": "filp/whoops", - "version": "2.14.4", + "version": "2.14.5", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "f056f1fe935d9ed86e698905a957334029899895" + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", - "reference": "f056f1fe935d9ed86e698905a957334029899895", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", "shasum": "" }, "require": { @@ -7078,7 +6969,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.4" + "source": "https://github.com/filp/whoops/tree/2.14.5" }, "funding": [ { @@ -7086,7 +6977,7 @@ "type": "github" } ], - "time": "2021-10-03T12:00:00+00:00" + "time": "2022-01-07T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7141,16 +7032,16 @@ }, { "name": "mockery/mockery", - "version": "1.4.4", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346" + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e01123a0e847d52d186c5eb4b9bf58b0c6d00346", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", "shasum": "" }, "require": { @@ -7207,43 +7098,44 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.4.4" + "source": "https://github.com/mockery/mockery/tree/1.5.0" }, - "time": "2021-09-13T15:28:59+00:00" + "time": "2022-01-20T13:18:17+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7259,7 +7151,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -7267,20 +7159,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nunomaduro/collision", - "version": "v5.10.0", + "version": "v5.11.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00" + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/3004cfa49c022183395eabc6d0e5207dfe498d00", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", "shasum": "" }, "require": { @@ -7342,7 +7234,7 @@ }, "funding": [ { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "url": "https://www.paypal.com/paypalme/enunomaduro", "type": "custom" }, { @@ -7354,7 +7246,7 @@ "type": "patreon" } ], - "time": "2021-09-20T15:06:32+00:00" + "time": "2022-01-10T16:22:52+00:00" }, { "name": "phar-io/manifest", @@ -7418,16 +7310,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -7463,249 +7355,22 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" - }, - "time": "2021-10-02T14:08:47+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.14.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.14.0" - }, - "time": "2021-09-10T09:02:12+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.4.3", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d" + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/34545bb30a6f8bd86cfa371dbd42140a657bbf0d", - "reference": "34545bb30a6f8bd86cfa371dbd42140a657bbf0d", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/367a8d9d5f7da2a0136422d27ce8840583926955", + "reference": "367a8d9d5f7da2a0136422d27ce8840583926955", "shasum": "" }, "require": { @@ -7715,6 +7380,7 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -7734,29 +7400,29 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.3" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.7.0" }, - "time": "2022-04-08T11:30:34+00:00" + "time": "2022-08-09T12:23:23+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.8", + "version": "9.2.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e" + "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", - "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2593003befdcc10db5e213f9f28814f5aa8ac073", + "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -7805,7 +7471,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.8" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.16" }, "funding": [ { @@ -7813,20 +7479,20 @@ "type": "github" } ], - "time": "2021-10-30T08:01:38+00:00" + "time": "2022-08-20T05:26:47+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -7865,7 +7531,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -7873,7 +7539,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -8058,16 +7724,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.10", + "version": "9.5.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" + "reference": "888556852e7e9bbeeedb9656afe46118765ade34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/888556852e7e9bbeeedb9656afe46118765ade34", + "reference": "888556852e7e9bbeeedb9656afe46118765ade34", "shasum": "" }, "require": { @@ -8082,8 +7748,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -8097,13 +7762,9 @@ "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.0", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -8118,11 +7779,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8145,11 +7806,11 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.23" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { @@ -8157,7 +7818,56 @@ "type": "github" } ], - "time": "2021-09-25T07:38:51+00:00" + "time": "2022-08-22T14:01:36+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" }, { "name": "sebastian/cli-parser", @@ -8525,16 +8235,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -8576,7 +8286,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -8584,20 +8294,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -8646,14 +8356,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -8661,20 +8371,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -8717,7 +8427,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -8725,7 +8435,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -9016,28 +8726,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -9060,7 +8770,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, "funding": [ { @@ -9068,7 +8778,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", @@ -9125,32 +8835,32 @@ }, { "name": "slevomat/coding-standard", - "version": "7.1", + "version": "7.2.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f" + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.4.1", + "phpstan/phpdoc-parser": "^1.5.1", "squizlabs/php_codesniffer": "^3.6.2" }, "require-dev": { - "phing/phing": "2.17.2", + "phing/phing": "2.17.3", "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.5.2", + "phpstan/phpstan": "1.4.10|1.7.1", "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.0", - "phpstan/phpstan-strict-rules": "1.1.0", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.19" + "phpstan/phpstan-phpunit": "1.0.0|1.1.1", + "phpstan/phpstan-strict-rules": "1.2.3", + "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" }, "type": "phpcodesniffer-standard", "extra": { @@ -9170,7 +8880,7 @@ "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.1" + "source": "https://github.com/slevomat/coding-standard/tree/7.2.1" }, "funding": [ { @@ -9182,20 +8892,20 @@ "type": "tidelift" } ], - "time": "2022-03-29T12:44:16+00:00" + "time": "2022-05-25T10:58:12+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.2", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", "shasum": "" }, "require": { @@ -9238,7 +8948,7 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-12-12T21:44:58+00:00" + "time": "2022-06-18T07:21:10+00:00" }, { "name": "theseer/tokenizer", @@ -9300,5 +9010,5 @@ "php": "^7.3|^8.0" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } diff --git a/config/app.php b/config/app.php index f313229..ad77c31 100644 --- a/config/app.php +++ b/config/app.php @@ -3,64 +3,64 @@ return [ /* - |-------------------------------------------------------------------------- - | Application Name - |-------------------------------------------------------------------------- - | - | This value is the name of your application. This value is used when the - | framework needs to place the application's name in a notification or - | any other location as required by the application or its packages. - | + |-------------------------------------------------------------------------- + | Application Name + |-------------------------------------------------------------------------- + | + | This value is the name of your application. This value is used when the + | framework needs to place the application's name in a notification or + | any other location as required by the application or its packages. + | */ 'name' => env('APP_NAME', 'Laravel'), /* - |-------------------------------------------------------------------------- - | Application Front Views Folder - |-------------------------------------------------------------------------- - | - | This value is the folder where blades will be found - | + |-------------------------------------------------------------------------- + | Application Front Views Folder + |-------------------------------------------------------------------------- + | + | This value is the folder where blades will be found + | */ - 'theme' => env('APP_THEME','basic'), + 'theme' => env('APP_THEME', 'basic'), /* - |-------------------------------------------------------------------------- - | Application Environment - |-------------------------------------------------------------------------- - | - | This value determines the "environment" your application is currently - | running in. This may determine how you prefer to configure various - | services the application utilizes. Set this in your ".env" file. - | + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | */ 'env' => env('APP_ENV', 'production'), /* - |-------------------------------------------------------------------------- - | Application Debug Mode - |-------------------------------------------------------------------------- - | - | When your application is in debug mode, detailed error messages with - | stack traces will be shown on every error that occurs within your - | application. If disabled, a simple generic error page is shown. - | + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | */ - 'debug' => (bool) env('APP_DEBUG', false), + 'debug' => (bool)env('APP_DEBUG', false), /* - |-------------------------------------------------------------------------- - | Application URL - |-------------------------------------------------------------------------- - | - | This URL is used by the console to properly generate URLs when using - | the Artisan command line tool. You should set this to the root of - | your application so that it is used when running Artisan tasks. - | + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | */ 'url' => env('APP_URL', 'http://localhost'), @@ -68,66 +68,66 @@ return [ 'asset_url' => env('ASSET_URL', null), /* - |-------------------------------------------------------------------------- - | Application Timezone - |-------------------------------------------------------------------------- - | - | Here you may specify the default timezone for your application, which - | will be used by the PHP date and date-time functions. We have gone - | ahead and set this to a sensible default for you out of the box. - | + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | */ 'timezone' => 'Europe/Paris', /* - |-------------------------------------------------------------------------- - | Application Locale Configuration - |-------------------------------------------------------------------------- - | - | The application locale determines the default locale that will be used - | by the translation service provider. You are free to set this value - | to any of the locales which will be supported by the application. - | + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | */ 'locale' => 'fr', /* - |-------------------------------------------------------------------------- - | Application Fallback Locale - |-------------------------------------------------------------------------- - | - | The fallback locale determines the locale to use when the current one - | is not available. You may change the value to correspond to any of - | the language folders that are provided through your application. - | + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | */ 'fallback_locale' => 'en', /* - |-------------------------------------------------------------------------- - | Faker Locale - |-------------------------------------------------------------------------- - | - | This locale will be used by the Faker PHP library when generating fake - | data for your database seeds. For example, this will be used to get - | localized telephone numbers, street address information and more. - | + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | */ 'faker_locale' => 'en_US', /* - |-------------------------------------------------------------------------- - | Encryption Key - |-------------------------------------------------------------------------- - | - | This key is used by the Illuminate encrypter service and should be set - | to a random, 32 character string, otherwise these encrypted strings - | will not be safe. Please do this before deploying an application! - | + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | */ 'key' => env('APP_KEY'), @@ -135,14 +135,14 @@ return [ 'cipher' => 'AES-256-CBC', /* - |-------------------------------------------------------------------------- - | Autoloaded Service Providers - |-------------------------------------------------------------------------- - | - | The service providers listed here will be automatically loaded on the - | request to your application. Feel free to add your own services to - | this array to grant expanded functionality to your applications. - | + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | */ 'providers' => [ @@ -191,14 +191,14 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Class Aliases - |-------------------------------------------------------------------------- - | - | This array of class aliases will be registered when this application - | is started. However, feel free to register as many as you wish as - | the aliases are "lazy" loaded so they don't hinder performance. - | + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | */ 'aliases' => [ @@ -239,7 +239,7 @@ return [ 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, - //Enums + // Enums 'LogType' => \App\Enums\LogType::class, 'SettingRegisterMode' => \App\Enums\SettingRegisterMode::class, 'SellUnit' => \App\Enums\SellUnit::class, diff --git a/config/auth.php b/config/auth.php index 79c80bf..0bf4dcd 100644 --- a/config/auth.php +++ b/config/auth.php @@ -3,14 +3,14 @@ return [ /* - |-------------------------------------------------------------------------- - | Authentication Defaults - |-------------------------------------------------------------------------- - | - | This option controls the default authentication "guard" and password - | reset options for your application. You may change these defaults - | as required, but they're a perfect start for most applications. - | + |-------------------------------------------------------------------------- + | Authentication Defaults + |-------------------------------------------------------------------------- + | + | This option controls the default authentication "guard" and password + | reset options for your application. You may change these defaults + | as required, but they're a perfect start for most applications. + | */ 'defaults' => [ @@ -19,20 +19,20 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Authentication Guards - |-------------------------------------------------------------------------- - | - | Next, you may define every authentication guard for your application. - | Of course, a great default configuration has been defined for you - | here which uses session storage and the Eloquent user provider. - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | Supported: "session", "token" - | + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | */ 'guards' => [ @@ -54,20 +54,20 @@ return [ ], /* - |-------------------------------------------------------------------------- - | User Providers - |-------------------------------------------------------------------------- - | - | All authentication drivers have a user provider. This defines how the - | users are actually retrieved out of your database or other storage - | mechanisms used by this application to persist your user's data. - | - | If you have multiple user tables or models you may configure multiple - | sources which represent each model / table. These sources may then - | be assigned to any extra authentication guards you have defined. - | - | Supported: "database", "eloquent" - | + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | */ 'providers' => [ @@ -82,24 +82,24 @@ return [ ] // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', + // 'driver' => 'database', + // 'table' => 'users', // ], ], /* - |-------------------------------------------------------------------------- - | Resetting Passwords - |-------------------------------------------------------------------------- - | - | You may specify multiple password reset configurations if you have more - | than one user table or model in the application and you want to have - | separate password reset settings based on the specific user types. - | - | The expire time is the number of minutes that the reset token should be - | considered valid. This security feature keeps tokens short-lived so - | they have less time to be guessed. You may change this as needed. - | + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | */ 'passwords' => [ @@ -112,14 +112,14 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Password Confirmation Timeout - |-------------------------------------------------------------------------- - | - | Here you may define the amount of seconds before a password confirmation - | times out and the user is prompted to re-enter their password via the - | confirmation screen. By default, the timeout lasts for three hours. - | + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | */ 'password_timeout' => 10800, diff --git a/config/breadcrumbs.php b/config/breadcrumbs.php index a61e597..0f99619 100644 --- a/config/breadcrumbs.php +++ b/config/breadcrumbs.php @@ -3,51 +3,51 @@ return [ /* - |-------------------------------------------------------------------------- - | View Name - |-------------------------------------------------------------------------- - | - | Choose a view to display when Breadcrumbs::render() is called. - | Built in templates are: - | - | - 'breadcrumbs::bootstrap5' - Bootstrap 5 - | - 'breadcrumbs::bootstrap4' - Bootstrap 4 - | - 'breadcrumbs::bootstrap3' - Bootstrap 3 - | - 'breadcrumbs::bootstrap2' - Bootstrap 2 - | - 'breadcrumbs::bulma' - Bulma - | - 'breadcrumbs::foundation6' - Foundation 6 - | - 'breadcrumbs::json-ld' - JSON-LD Structured Data - | - 'breadcrumbs::materialize' - Materialize - | - 'breadcrumbs::tailwind' - Tailwind CSS - | - 'breadcrumbs::uikit' - UIkit - | - | Or a custom view, e.g. '_partials/breadcrumbs'. - | + |-------------------------------------------------------------------------- + | View Name + |-------------------------------------------------------------------------- + | + | Choose a view to display when Breadcrumbs::render() is called. + | Built in templates are: + | + | - 'breadcrumbs::bootstrap5' - Bootstrap 5 + | - 'breadcrumbs::bootstrap4' - Bootstrap 4 + | - 'breadcrumbs::bootstrap3' - Bootstrap 3 + | - 'breadcrumbs::bootstrap2' - Bootstrap 2 + | - 'breadcrumbs::bulma' - Bulma + | - 'breadcrumbs::foundation6' - Foundation 6 + | - 'breadcrumbs::json-ld' - JSON-LD Structured Data + | - 'breadcrumbs::materialize' - Materialize + | - 'breadcrumbs::tailwind' - Tailwind CSS + | - 'breadcrumbs::uikit' - UIkit + | + | Or a custom view, e.g. '_partials/breadcrumbs'. + | */ 'view' => 'breadcrumb.layout', /* - |-------------------------------------------------------------------------- - | Breadcrumbs File(s) - |-------------------------------------------------------------------------- - | - | The file(s) where breadcrumbs are defined. e.g. - | - | - base_path('routes/breadcrumbs.php') - | - glob(base_path('breadcrumbs/*.php')) - | + |-------------------------------------------------------------------------- + | Breadcrumbs File(s) + |-------------------------------------------------------------------------- + | + | The file(s) where breadcrumbs are defined. e.g. + | + | - base_path('routes/breadcrumbs.php') + | - glob(base_path('breadcrumbs/*.php')) + | */ 'files' => base_path('routes/breadcrumbs.php'), /* - |-------------------------------------------------------------------------- - | Exceptions - |-------------------------------------------------------------------------- - | - | Determine when to throw an exception. - | + |-------------------------------------------------------------------------- + | Exceptions + |-------------------------------------------------------------------------- + | + | Determine when to throw an exception. + | */ // When route-bound breadcrumbs are used but the current route doesn't have a name (UnnamedRouteException) @@ -60,12 +60,12 @@ return [ 'invalid-named-breadcrumb-exception' => true, /* - |-------------------------------------------------------------------------- - | Classes - |-------------------------------------------------------------------------- - | - | Subclass the default classes for more advanced customisations. - | + |-------------------------------------------------------------------------- + | Classes + |-------------------------------------------------------------------------- + | + | Subclass the default classes for more advanced customisations. + | */ // Manager diff --git a/config/broadcasting.php b/config/broadcasting.php index 3bba110..758e391 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -3,29 +3,29 @@ return [ /* - |-------------------------------------------------------------------------- - | Default Broadcaster - |-------------------------------------------------------------------------- - | - | This option controls the default broadcaster that will be used by the - | framework when an event needs to be broadcast. You may set this to - | any of the connections defined in the "connections" array below. - | - | Supported: "pusher", "redis", "log", "null" - | + |-------------------------------------------------------------------------- + | Default Broadcaster + |-------------------------------------------------------------------------- + | + | This option controls the default broadcaster that will be used by the + | framework when an event needs to be broadcast. You may set this to + | any of the connections defined in the "connections" array below. + | + | Supported: "pusher", "redis", "log", "null" + | */ 'default' => env('BROADCAST_DRIVER', 'null'), /* - |-------------------------------------------------------------------------- - | Broadcast Connections - |-------------------------------------------------------------------------- - | - | Here you may define all of the broadcast connections that will be used - | to broadcast events to other systems or over websockets. Samples of - | each available type of connection are provided inside this array. - | + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | */ 'connections' => [ diff --git a/config/cache.php b/config/cache.php index 4f41fdf..1f46a6f 100644 --- a/config/cache.php +++ b/config/cache.php @@ -5,30 +5,30 @@ use Illuminate\Support\Str; return [ /* - |-------------------------------------------------------------------------- - | Default Cache Store - |-------------------------------------------------------------------------- - | - | This option controls the default cache connection that gets used while - | using this caching library. This connection is used when another is - | not explicitly specified when executing a given caching function. - | - | Supported: "apc", "array", "database", "file", - | "memcached", "redis", "dynamodb" - | + |-------------------------------------------------------------------------- + | Default Cache Store + |-------------------------------------------------------------------------- + | + | This option controls the default cache connection that gets used while + | using this caching library. This connection is used when another is + | not explicitly specified when executing a given caching function. + | + | Supported: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb" + | */ 'default' => env('CACHE_DRIVER', 'file'), /* - |-------------------------------------------------------------------------- - | Cache Stores - |-------------------------------------------------------------------------- - | - | Here you may define all of the cache "stores" for your application as - | well as their drivers. You may even define multiple stores for the - | same cache driver to group types of items stored in your caches. - | + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | */ 'stores' => [ @@ -89,16 +89,16 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Cache Key Prefix - |-------------------------------------------------------------------------- - | - | When utilizing a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. - | + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | */ - 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache'), ]; diff --git a/config/cart.php b/config/cart.php index 2050cc5..1b06004 100644 --- a/config/cart.php +++ b/config/cart.php @@ -3,38 +3,38 @@ return [ /* - |-------------------------------------------------------------------------- - | Gross price as base price - |-------------------------------------------------------------------------- - | - | This default value is used to select the method to calculate prices and taxes - | If true the item price is managed as a gross price, so taxes will be calculated by separation/exclusion - | + |-------------------------------------------------------------------------- + | Gross price as base price + |-------------------------------------------------------------------------- + | + | This default value is used to select the method to calculate prices and taxes + | If true the item price is managed as a gross price, so taxes will be calculated by separation/exclusion + | */ - //'calculator' => \Gloudemans\Shoppingcart\Calculation\DefaultCalculator::class, + // 'calculator' => \Gloudemans\Shoppingcart\Calculation\DefaultCalculator::class, 'calculator' => \App\Lib\LDC\CartCalculator::class, /* - |-------------------------------------------------------------------------- - | Default tax rate - |-------------------------------------------------------------------------- - | - | This default tax rate will be used when you make a class implement the - | Taxable interface and use the HasTax trait. - | + |-------------------------------------------------------------------------- + | Default tax rate + |-------------------------------------------------------------------------- + | + | This default tax rate will be used when you make a class implement the + | Taxable interface and use the HasTax trait. + | */ 'tax' => 20, /* - |-------------------------------------------------------------------------- - | Shoppingcart database settings - |-------------------------------------------------------------------------- - | - | Here you can set the connection that the shoppingcart should use when - | storing and restoring a cart. - | + |-------------------------------------------------------------------------- + | Shoppingcart database settings + |-------------------------------------------------------------------------- + | + | Here you can set the connection that the shoppingcart should use when + | storing and restoring a cart. + | */ 'database' => [ @@ -46,25 +46,25 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Destroy the cart on user logout - |-------------------------------------------------------------------------- - | - | When this option is set to 'true' the cart will automatically - | destroy all cart instances when the user logs out. - | + |-------------------------------------------------------------------------- + | Destroy the cart on user logout + |-------------------------------------------------------------------------- + | + | When this option is set to 'true' the cart will automatically + | destroy all cart instances when the user logs out. + | */ 'destroy_on_logout' => false, /* - |-------------------------------------------------------------------------- - | Default number format - |-------------------------------------------------------------------------- - | - | This defaults will be used for the formatted numbers if you don't - | set them in the method call. - | + |-------------------------------------------------------------------------- + | Default number format + |-------------------------------------------------------------------------- + | + | This defaults will be used for the formatted numbers if you don't + | set them in the method call. + | */ 'format' => [ diff --git a/config/cors.php b/config/cors.php index 558369d..caccf68 100644 --- a/config/cors.php +++ b/config/cors.php @@ -3,16 +3,16 @@ return [ /* - |-------------------------------------------------------------------------- - | Cross-Origin Resource Sharing (CORS) Configuration - |-------------------------------------------------------------------------- - | - | Here you may configure your settings for cross-origin resource sharing - | or "CORS". This determines what cross-origin operations may execute - | in web browsers. You are free to adjust these settings as needed. - | - | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS - | + |-------------------------------------------------------------------------- + | Cross-Origin Resource Sharing (CORS) Configuration + |-------------------------------------------------------------------------- + | + | Here you may configure your settings for cross-origin resource sharing + | or "CORS". This determines what cross-origin operations may execute + | in web browsers. You are free to adjust these settings as needed. + | + | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS + | */ 'paths' => ['api/*'], diff --git a/config/database.php b/config/database.php index b42d9b3..ac4559f 100644 --- a/config/database.php +++ b/config/database.php @@ -5,32 +5,32 @@ use Illuminate\Support\Str; return [ /* - |-------------------------------------------------------------------------- - | Default Database Connection Name - |-------------------------------------------------------------------------- - | - | Here you may specify which of the database connections below you wish - | to use as your default connection for all database work. Of course - | you may use many connections at once using the Database library. - | + |-------------------------------------------------------------------------- + | Default Database Connection Name + |-------------------------------------------------------------------------- + | + | Here you may specify which of the database connections below you wish + | to use as your default connection for all database work. Of course + | you may use many connections at once using the Database library. + | */ 'default' => env('DB_CONNECTION', 'mysql'), /* - |-------------------------------------------------------------------------- - | Database Connections - |-------------------------------------------------------------------------- - | - | Here are each of the database connections setup for your application. - | Of course, examples of configuring each database platform that is - | supported by Laravel is shown below to make development simple. - | - | - | All database work in Laravel is done through the PHP PDO facilities - | so make sure you have the driver for your particular database of - | choice installed on your machine before you begin development. - | + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | */ 'connections' => [ @@ -94,27 +94,27 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Migration Repository Table - |-------------------------------------------------------------------------- - | - | This table keeps track of all the migrations that have already run for - | your application. Using this information, we can determine which of - | the migrations on disk haven't actually been run in the database. - | + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | */ 'migrations' => 'migrations', /* - |-------------------------------------------------------------------------- - | Redis Databases - |-------------------------------------------------------------------------- - | - | Redis is an open source, fast, and advanced key-value store that also - | provides a richer body of commands than a typical key-value system - | such as APC or Memcached. Laravel makes it easy to dig right in. - | + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | */ 'redis' => [ @@ -123,7 +123,7 @@ return [ 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'), ], 'default' => [ diff --git a/config/filesystems.php b/config/filesystems.php index 06c406e..03ed7d2 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -3,42 +3,42 @@ return [ /* - |-------------------------------------------------------------------------- - | Default Filesystem Disk - |-------------------------------------------------------------------------- - | - | Here you may specify the default filesystem disk that should be used - | by the framework. The "local" disk, as well as a variety of cloud - | based disks are available to your application. Just store away! - | + |-------------------------------------------------------------------------- + | Default Filesystem Disk + |-------------------------------------------------------------------------- + | + | Here you may specify the default filesystem disk that should be used + | by the framework. The "local" disk, as well as a variety of cloud + | based disks are available to your application. Just store away! + | */ 'default' => env('FILESYSTEM_DRIVER', 'local'), /* - |-------------------------------------------------------------------------- - | Default Cloud Filesystem Disk - |-------------------------------------------------------------------------- - | - | Many applications store files both locally and in the cloud. For this - | reason, you may specify a default "cloud" driver here. This driver - | will be bound as the Cloud disk implementation in the container. - | + |-------------------------------------------------------------------------- + | Default Cloud Filesystem Disk + |-------------------------------------------------------------------------- + | + | Many applications store files both locally and in the cloud. For this + | reason, you may specify a default "cloud" driver here. This driver + | will be bound as the Cloud disk implementation in the container. + | */ 'cloud' => env('FILESYSTEM_CLOUD', 's3'), /* - |-------------------------------------------------------------------------- - | Filesystem Disks - |-------------------------------------------------------------------------- - | - | Here you may configure as many filesystem "disks" as you wish, and you - | may even configure multiple disks of the same driver. Defaults have - | been setup for each driver as an example of the required options. - | - | Supported Drivers: "local", "ftp", "sftp", "s3" - | + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | */ 'disks' => [ @@ -51,7 +51,7 @@ return [ 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'url' => env('APP_URL') . '/storage', 'visibility' => 'public', ], @@ -87,14 +87,14 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Symbolic Links - |-------------------------------------------------------------------------- - | - | Here you may configure the symbolic links that will be created when the - | `storage:link` Artisan command is executed. The array keys should be - | the locations of the links and the values should be their targets. - | + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | */ 'links' => [ diff --git a/config/hashing.php b/config/hashing.php index 8425770..6641c8c 100644 --- a/config/hashing.php +++ b/config/hashing.php @@ -3,29 +3,29 @@ return [ /* - |-------------------------------------------------------------------------- - | Default Hash Driver - |-------------------------------------------------------------------------- - | - | This option controls the default hash driver that will be used to hash - | passwords for your application. By default, the bcrypt algorithm is - | used; however, you remain free to modify this option if you wish. - | - | Supported: "bcrypt", "argon", "argon2id" - | + |-------------------------------------------------------------------------- + | Default Hash Driver + |-------------------------------------------------------------------------- + | + | This option controls the default hash driver that will be used to hash + | passwords for your application. By default, the bcrypt algorithm is + | used; however, you remain free to modify this option if you wish. + | + | Supported: "bcrypt", "argon", "argon2id" + | */ 'driver' => 'bcrypt', /* - |-------------------------------------------------------------------------- - | Bcrypt Options - |-------------------------------------------------------------------------- - | - | Here you may specify the configuration options that should be used when - | passwords are hashed using the Bcrypt algorithm. This will allow you - | to control the amount of time it takes to hash the given password. - | + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | */ 'bcrypt' => [ @@ -33,14 +33,14 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Argon Options - |-------------------------------------------------------------------------- - | - | Here you may specify the configuration options that should be used when - | passwords are hashed using the Argon algorithm. These will allow you - | to control the amount of time it takes to hash the given password. - | + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | */ 'argon' => [ diff --git a/config/logging.php b/config/logging.php index 1cd786e..0c87551 100644 --- a/config/logging.php +++ b/config/logging.php @@ -7,31 +7,31 @@ use Monolog\Handler\SyslogUdpHandler; return [ /* - |-------------------------------------------------------------------------- - | Default Log Channel - |-------------------------------------------------------------------------- - | - | This option defines the default log channel that gets used when writing - | messages to the logs. The name specified in this option should match - | one of the channels defined in the "channels" configuration array. - | + |-------------------------------------------------------------------------- + | Default Log Channel + |-------------------------------------------------------------------------- + | + | This option defines the default log channel that gets used when writing + | messages to the logs. The name specified in this option should match + | one of the channels defined in the "channels" configuration array. + | */ 'default' => env('LOG_CHANNEL', 'stack'), /* - |-------------------------------------------------------------------------- - | Log Channels - |-------------------------------------------------------------------------- - | - | Here you may configure the log channels for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. - | - | Available Drivers: "single", "daily", "slack", "syslog", - | "errorlog", "monolog", - | "custom", "stack" - | + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | */ 'channels' => [ diff --git a/config/mail.php b/config/mail.php index bda467e..6ed5015 100644 --- a/config/mail.php +++ b/config/mail.php @@ -3,34 +3,34 @@ return [ /* - |-------------------------------------------------------------------------- - | Default Mailer - |-------------------------------------------------------------------------- - | - | This option controls the default mailer that is used to send any email - | messages sent by your application. Alternative mailers may be setup - | and used as needed; however, this mailer will be used by default. - | + |-------------------------------------------------------------------------- + | Default Mailer + |-------------------------------------------------------------------------- + | + | This option controls the default mailer that is used to send any email + | messages sent by your application. Alternative mailers may be setup + | and used as needed; however, this mailer will be used by default. + | */ 'default' => env('MAIL_MAILER', 'smtp'), /* - |-------------------------------------------------------------------------- - | Mailer Configurations - |-------------------------------------------------------------------------- - | - | Here you may configure all of the mailers used by your application plus - | their respective settings. Several examples have been configured for - | you and you are free to add your own as your application requires. - | - | Laravel supports a variety of mail "transport" drivers to be used while - | sending an e-mail. You will specify which one you are using for your - | mailers below. You are free to add additional mailers as required. - | - | Supported: "smtp", "sendmail", "mailgun", "ses", - | "postmark", "log", "array" - | + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array" + | */ 'mailers' => [ @@ -73,14 +73,14 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Global "From" Address - |-------------------------------------------------------------------------- - | - | You may wish for all e-mails sent by your application to be sent from - | the same address. Here, you may specify a name and address that is - | used globally for all e-mails that are sent by your application. - | + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | */ 'from' => [ @@ -89,19 +89,19 @@ return [ ], 'contactsList' => [ - 'serviceweb' => explode(",", env('MAIL_LIST_SERVICEWEB', 'informatique.internet@ldc.fr')), - 'invalidInco' => explode(",", env('MAIL_LIST_INVALIDINCO', 'informatique.internet@ldc.fr,vincent.pierre@ldc.fr,christelle.manceau@ldc.fr')), + 'serviceweb' => explode(",", env('MAIL_LIST_SERVICEWEB', 'equipe.web@ldc.fr')), + 'invalidInco' => explode(",", env('MAIL_LIST_INVALIDINCO', 'equipe.web@ldc.fr,vincent.pierre@ldc.fr,christelle.manceau@ldc.fr')), ], /* - |-------------------------------------------------------------------------- - | Markdown Mail Settings - |-------------------------------------------------------------------------- - | - | If you are using Markdown based email rendering, you may configure your - | theme and component paths here, allowing you to customize the design - | of the emails. Or, you may simply stick with the Laravel defaults! - | + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | */ 'markdown' => [ diff --git a/config/queue.php b/config/queue.php index 1222296..08e1704 100644 --- a/config/queue.php +++ b/config/queue.php @@ -3,29 +3,29 @@ return [ /* - |-------------------------------------------------------------------------- - | Default Queue Connection Name - |-------------------------------------------------------------------------- - | - | Laravel's queue API supports an assortment of back-ends via a single - | API, giving you convenient access to each back-end using the same - | syntax for every one. Here you may define a default connection. - | + |-------------------------------------------------------------------------- + | Default Queue Connection Name + |-------------------------------------------------------------------------- + | + | Laravel's queue API supports an assortment of back-ends via a single + | API, giving you convenient access to each back-end using the same + | syntax for every one. Here you may define a default connection. + | */ 'default' => env('QUEUE_CONNECTION', 'sync'), /* - |-------------------------------------------------------------------------- - | Queue Connections - |-------------------------------------------------------------------------- - | - | Here you may configure the connection information for each server that - | is used by your application. A default configuration has been added - | for each back-end shipped with Laravel. You are free to add more. - | - | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" - | + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | */ 'connections' => [ @@ -70,14 +70,14 @@ return [ ], /* - |-------------------------------------------------------------------------- - | Failed Queue Jobs - |-------------------------------------------------------------------------- - | - | These options configure the behavior of failed queue job logging so you - | can control which database and table are used to store the jobs that - | have failed. You may change them to any database / table you wish. - | + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | */ 'failed' => [ diff --git a/config/services.php b/config/services.php index 2a1d616..915dfe7 100644 --- a/config/services.php +++ b/config/services.php @@ -3,15 +3,15 @@ return [ /* - |-------------------------------------------------------------------------- - | Third Party Services - |-------------------------------------------------------------------------- - | - | This file is for storing the credentials for third party services such - | as Mailgun, Postmark, AWS and more. This file provides the de facto - | location for this type of information, allowing packages to have - | a conventional file to locate the various service credentials. - | + |-------------------------------------------------------------------------- + | Third Party Services + |-------------------------------------------------------------------------- + | + | This file is for storing the credentials for third party services such + | as Mailgun, Postmark, AWS and more. This file provides the de facto + | location for this type of information, allowing packages to have + | a conventional file to locate the various service credentials. + | */ 'mailgun' => [ diff --git a/config/session.php b/config/session.php index 4e0f66c..13ef89b 100644 --- a/config/session.php +++ b/config/session.php @@ -5,30 +5,30 @@ use Illuminate\Support\Str; return [ /* - |-------------------------------------------------------------------------- - | Default Session Driver - |-------------------------------------------------------------------------- - | - | This option controls the default session "driver" that will be used on - | requests. By default, we will use the lightweight native driver but - | you may specify any of the other wonderful drivers provided here. - | - | Supported: "file", "cookie", "database", "apc", - | "memcached", "redis", "dynamodb", "array" - | + |-------------------------------------------------------------------------- + | Default Session Driver + |-------------------------------------------------------------------------- + | + | This option controls the default session "driver" that will be used on + | requests. By default, we will use the lightweight native driver but + | you may specify any of the other wonderful drivers provided here. + | + | Supported: "file", "cookie", "database", "apc", + | "memcached", "redis", "dynamodb", "array" + | */ 'driver' => env('SESSION_DRIVER', 'file'), /* - |-------------------------------------------------------------------------- - | Session Lifetime - |-------------------------------------------------------------------------- - | - | Here you may specify the number of minutes that you wish the session - | to be allowed to remain idle before it expires. If you want them - | to immediately expire on the browser closing, set that option. - | + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | */ 'lifetime' => env('SESSION_LIFETIME', 120), @@ -36,164 +36,164 @@ return [ 'expire_on_close' => false, /* - |-------------------------------------------------------------------------- - | Session Encryption - |-------------------------------------------------------------------------- - | - | This option allows you to easily specify that all of your session data - | should be encrypted before it is stored. All encryption will be run - | automatically by Laravel and you can use the Session like normal. - | + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | */ 'encrypt' => false, /* - |-------------------------------------------------------------------------- - | Session File Location - |-------------------------------------------------------------------------- - | - | When using the native session driver, we need a location where session - | files may be stored. A default has been set for you but a different - | location may be specified. This is only needed for file sessions. - | + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | */ 'files' => storage_path('framework/sessions'), /* - |-------------------------------------------------------------------------- - | Session Database Connection - |-------------------------------------------------------------------------- - | - | When using the "database" or "redis" session drivers, you may specify a - | connection that should be used to manage these sessions. This should - | correspond to a connection in your database configuration options. - | + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | */ 'connection' => env('SESSION_CONNECTION', null), /* - |-------------------------------------------------------------------------- - | Session Database Table - |-------------------------------------------------------------------------- - | - | When using the "database" session driver, you may specify the table we - | should use to manage the sessions. Of course, a sensible default is - | provided for you; however, you are free to change this as needed. - | + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | */ 'table' => 'sessions', /* - |-------------------------------------------------------------------------- - | Session Cache Store - |-------------------------------------------------------------------------- - | - | While using one of the framework's cache driven session backends you may - | list a cache store that should be used for these sessions. This value - | must match with one of the application's configured cache "stores". - | - | Affects: "apc", "dynamodb", "memcached", "redis" - | + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | */ 'store' => env('SESSION_STORE', null), /* - |-------------------------------------------------------------------------- - | Session Sweeping Lottery - |-------------------------------------------------------------------------- - | - | Some session drivers must manually sweep their storage location to get - | rid of old sessions from storage. Here are the chances that it will - | happen on a given request. By default, the odds are 2 out of 100. - | + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | */ 'lottery' => [2, 100], /* - |-------------------------------------------------------------------------- - | Session Cookie Name - |-------------------------------------------------------------------------- - | - | Here you may change the name of the cookie used to identify a session - | instance by ID. The name specified here will get used every time a - | new session cookie is created by the framework for every driver. - | + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | */ 'cookie' => env( 'SESSION_COOKIE', - Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + Str::slug(env('APP_NAME', 'laravel'), '_') . '_session' ), /* - |-------------------------------------------------------------------------- - | Session Cookie Path - |-------------------------------------------------------------------------- - | - | The session cookie path determines the path for which the cookie will - | be regarded as available. Typically, this will be the root path of - | your application but you are free to change this when necessary. - | + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | */ 'path' => '/', /* - |-------------------------------------------------------------------------- - | Session Cookie Domain - |-------------------------------------------------------------------------- - | - | Here you may change the domain of the cookie used to identify a session - | in your application. This will determine which domains the cookie is - | available to in your application. A sensible default has been set. - | + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | */ 'domain' => env('SESSION_DOMAIN', null), /* - |-------------------------------------------------------------------------- - | HTTPS Only Cookies - |-------------------------------------------------------------------------- - | - | By setting this option to true, session cookies will only be sent back - | to the server if the browser has a HTTPS connection. This will keep - | the cookie from being sent to you if it can not be done securely. - | + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | */ 'secure' => env('SESSION_SECURE_COOKIE'), /* - |-------------------------------------------------------------------------- - | HTTP Access Only - |-------------------------------------------------------------------------- - | - | Setting this value to true will prevent JavaScript from accessing the - | value of the cookie and the cookie will only be accessible through - | the HTTP protocol. You are free to modify this option if needed. - | + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | */ 'http_only' => true, /* - |-------------------------------------------------------------------------- - | Same-Site Cookies - |-------------------------------------------------------------------------- - | - | This option determines how your cookies behave when cross-site requests - | take place, and can be used to mitigate CSRF attacks. By default, we - | will set this value to "lax" since this is a secure default value. - | - | Supported: "lax", "strict", "none", null - | + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | */ 'same_site' => 'lax', diff --git a/config/view.php b/config/view.php index 9b3ee8e..8071c43 100644 --- a/config/view.php +++ b/config/view.php @@ -3,30 +3,30 @@ return [ /* - |-------------------------------------------------------------------------- - | View Storage Paths - |-------------------------------------------------------------------------- - | - | Most templating systems load templates from disk. Here you may specify - | an array of paths that should be checked for your views. Of course - | the usual Laravel view path has already been registered for you. - | + |-------------------------------------------------------------------------- + | View Storage Paths + |-------------------------------------------------------------------------- + | + | Most templating systems load templates from disk. Here you may specify + | an array of paths that should be checked for your views. Of course + | the usual Laravel view path has already been registered for you. + | */ 'paths' => [ - resource_path('views/front/'.config('app.theme')), + resource_path('views/front/' . config('app.theme')), resource_path('views'), ], /* - |-------------------------------------------------------------------------- - | Compiled View Path - |-------------------------------------------------------------------------- - | - | This option determines where all the compiled Blade templates will be - | stored for your application. Typically, this is within the storage - | directory. However, as usual, you are free to change this value. - | + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | */ 'compiled' => env( diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index bdea1a3..a7d2e31 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -26,7 +26,8 @@ class UserFactory extends Factory 'name' => $this->faker->name, 'email' => $this->faker->unique()->safeEmail, 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', +// password 'remember_token' => Str::random(10), ]; } diff --git a/phpcs.xml b/phpcs.xml index 963cf6a..9127c93 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -1,103 +1,102 @@ - + Created with the PHP Coding Standard Generator. http://edorian.github.com/php-coding-standard-generator/ app/ config/ database/factories - database/seeders routes/ - tests/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - - + + @@ -105,20 +104,20 @@ - - + + - + - - + + diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index 4ae4d97..0000000 --- a/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - diff --git a/public/b-o/css/app.css b/public/b-o/css/app.css deleted file mode 100644 index 2defcd0..0000000 --- a/public/b-o/css/app.css +++ /dev/null @@ -1,18434 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Nunito);.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}.tippy-box[data-theme~=light]{color:#26323d;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);background-color:#fff}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=light-border]{background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,8,16,.15);color:#333;box-shadow:0 4px 14px -2px rgba(0,8,16,.08)}.tippy-box[data-theme~=light-border]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light-border]>.tippy-arrow:after,.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=light-border]>.tippy-arrow:after{border-color:transparent;border-style:solid}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:after{border-top-color:rgba(0,8,16,.2);border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:rgba(0,8,16,.2);border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:after{border-left-color:rgba(0,8,16,.2);border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:rgba(0,8,16,.2)}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.tippy-box[data-theme~=translucent]{background-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent]>.tippy-arrow{width:14px;height:14px}.tippy-box[data-theme~=translucent][data-placement^=top]>.tippy-arrow:before{border-width:7px 7px 0;border-top-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent][data-placement^=bottom]>.tippy-arrow:before{border-width:0 7px 7px;border-bottom-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent][data-placement^=left]>.tippy-arrow:before{border-width:7px 0 7px 7px;border-left-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent][data-placement^=right]>.tippy-arrow:before{border-width:7px 7px 7px 0;border-right-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent]>.tippy-backdrop{background-color:rgba(0,0,0,.7)}.tippy-box[data-theme~=translucent]>.tippy-svg-arrow{fill:rgba(0,0,0,.7)}@charset "UTF-8"; -.fa, -.fas, -.far, -.fal, -.fad, -.fab{ - -moz-osx-font-smoothing:grayscale; - -webkit-font-smoothing:antialiased; - display:inline-block; - font-style:normal; - font-variant:normal; - text-rendering:auto; - line-height:1; -} - -.fa-lg{ - font-size:1.3333333333em; - line-height:0.75em; - vertical-align:-0.0667em; -} - -.fa-xs{ - font-size:0.75em; -} - -.fa-sm{ - font-size:0.875em; -} - -.fa-1x{ - font-size:1em; -} - -.fa-2x{ - font-size:2em; -} - -.fa-3x{ - font-size:3em; -} - -.fa-4x{ - font-size:4em; -} - -.fa-5x{ - font-size:5em; -} - -.fa-6x{ - font-size:6em; -} - -.fa-7x{ - font-size:7em; -} - -.fa-8x{ - font-size:8em; -} - -.fa-9x{ - font-size:9em; -} - -.fa-10x{ - font-size:10em; -} - -.fa-fw{ - text-align:center; - width:1.25em; -} - -.fa-ul{ - list-style-type:none; - margin-left:2.5em; - padding-left:0; -} -.fa-ul > li{ - position:relative; -} - -.fa-li{ - left:-2em; - position:absolute; - text-align:center; - width:2em; - line-height:inherit; -} - -.fa-border{ - border:solid 0.08em #eee; - border-radius:0.1em; - padding:0.2em 0.25em 0.15em; -} - -.fa-pull-left{ - float:left; -} - -.fa-pull-right{ - float:right; -} - -.fa.fa-pull-left, -.fas.fa-pull-left, -.far.fa-pull-left, -.fal.fa-pull-left, -.fab.fa-pull-left{ - margin-right:0.3em; -} -.fa.fa-pull-right, -.fas.fa-pull-right, -.far.fa-pull-right, -.fal.fa-pull-right, -.fab.fa-pull-right{ - margin-left:0.3em; -} - -.fa-spin{ - -webkit-animation:fa-spin 2s infinite linear; - animation:fa-spin 2s infinite linear; -} - -.fa-pulse{ - -webkit-animation:fa-spin 1s infinite steps(8); - animation:fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin{ - 0%{ - transform:rotate(0deg); - } - 100%{ - transform:rotate(360deg); - } -} - -@keyframes fa-spin{ - 0%{ - transform:rotate(0deg); - } - 100%{ - transform:rotate(360deg); - } -} -.fa-rotate-90{ - -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - transform:rotate(90deg); -} - -.fa-rotate-180{ - -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - transform:rotate(180deg); -} - -.fa-rotate-270{ - -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - transform:rotate(270deg); -} - -.fa-flip-horizontal{ - -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - transform:scale(-1, 1); -} - -.fa-flip-vertical{ - -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - transform:scale(1, -1); -} - -.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical{ - -ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - transform:scale(-1, -1); -} - -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical, -:root .fa-flip-both{ - filter:none; -} - -.fa-stack{ - display:inline-block; - height:2em; - line-height:2em; - position:relative; - vertical-align:middle; - width:2.5em; -} - -.fa-stack-1x, -.fa-stack-2x{ - left:0; - position:absolute; - text-align:center; - width:100%; -} - -.fa-stack-1x{ - line-height:inherit; -} - -.fa-stack-2x{ - font-size:2em; -} - -.fa-inverse{ - color:#fff; -} -.fa-500px:before{ - content:"\F26E"; -} - -.fa-accessible-icon:before{ - content:"\F368"; -} - -.fa-accusoft:before{ - content:"\F369"; -} - -.fa-acquisitions-incorporated:before{ - content:"\F6AF"; -} - -.fa-ad:before{ - content:"\F641"; -} - -.fa-address-book:before{ - content:"\F2B9"; -} - -.fa-address-card:before{ - content:"\F2BB"; -} - -.fa-adjust:before{ - content:"\F042"; -} - -.fa-adn:before{ - content:"\F170"; -} - -.fa-adversal:before{ - content:"\F36A"; -} - -.fa-affiliatetheme:before{ - content:"\F36B"; -} - -.fa-air-freshener:before{ - content:"\F5D0"; -} - -.fa-airbnb:before{ - content:"\F834"; -} - -.fa-algolia:before{ - content:"\F36C"; -} - -.fa-align-center:before{ - content:"\F037"; -} - -.fa-align-justify:before{ - content:"\F039"; -} - -.fa-align-left:before{ - content:"\F036"; -} - -.fa-align-right:before{ - content:"\F038"; -} - -.fa-alipay:before{ - content:"\F642"; -} - -.fa-allergies:before{ - content:"\F461"; -} - -.fa-amazon:before{ - content:"\F270"; -} - -.fa-amazon-pay:before{ - content:"\F42C"; -} - -.fa-ambulance:before{ - content:"\F0F9"; -} - -.fa-american-sign-language-interpreting:before{ - content:"\F2A3"; -} - -.fa-amilia:before{ - content:"\F36D"; -} - -.fa-anchor:before{ - content:"\F13D"; -} - -.fa-android:before{ - content:"\F17B"; -} - -.fa-angellist:before{ - content:"\F209"; -} - -.fa-angle-double-down:before{ - content:"\F103"; -} - -.fa-angle-double-left:before{ - content:"\F100"; -} - -.fa-angle-double-right:before{ - content:"\F101"; -} - -.fa-angle-double-up:before{ - content:"\F102"; -} - -.fa-angle-down:before{ - content:"\F107"; -} - -.fa-angle-left:before{ - content:"\F104"; -} - -.fa-angle-right:before{ - content:"\F105"; -} - -.fa-angle-up:before{ - content:"\F106"; -} - -.fa-angry:before{ - content:"\F556"; -} - -.fa-angrycreative:before{ - content:"\F36E"; -} - -.fa-angular:before{ - content:"\F420"; -} - -.fa-ankh:before{ - content:"\F644"; -} - -.fa-app-store:before{ - content:"\F36F"; -} - -.fa-app-store-ios:before{ - content:"\F370"; -} - -.fa-apper:before{ - content:"\F371"; -} - -.fa-apple:before{ - content:"\F179"; -} - -.fa-apple-alt:before{ - content:"\F5D1"; -} - -.fa-apple-pay:before{ - content:"\F415"; -} - -.fa-archive:before{ - content:"\F187"; -} - -.fa-archway:before{ - content:"\F557"; -} - -.fa-arrow-alt-circle-down:before{ - content:"\F358"; -} - -.fa-arrow-alt-circle-left:before{ - content:"\F359"; -} - -.fa-arrow-alt-circle-right:before{ - content:"\F35A"; -} - -.fa-arrow-alt-circle-up:before{ - content:"\F35B"; -} - -.fa-arrow-circle-down:before{ - content:"\F0AB"; -} - -.fa-arrow-circle-left:before{ - content:"\F0A8"; -} - -.fa-arrow-circle-right:before{ - content:"\F0A9"; -} - -.fa-arrow-circle-up:before{ - content:"\F0AA"; -} - -.fa-arrow-down:before{ - content:"\F063"; -} - -.fa-arrow-left:before{ - content:"\F060"; -} - -.fa-arrow-right:before{ - content:"\F061"; -} - -.fa-arrow-up:before{ - content:"\F062"; -} - -.fa-arrows-alt:before{ - content:"\F0B2"; -} - -.fa-arrows-alt-h:before{ - content:"\F337"; -} - -.fa-arrows-alt-v:before{ - content:"\F338"; -} - -.fa-artstation:before{ - content:"\F77A"; -} - -.fa-assistive-listening-systems:before{ - content:"\F2A2"; -} - -.fa-asterisk:before{ - content:"\F069"; -} - -.fa-asymmetrik:before{ - content:"\F372"; -} - -.fa-at:before{ - content:"\F1FA"; -} - -.fa-atlas:before{ - content:"\F558"; -} - -.fa-atlassian:before{ - content:"\F77B"; -} - -.fa-atom:before{ - content:"\F5D2"; -} - -.fa-audible:before{ - content:"\F373"; -} - -.fa-audio-description:before{ - content:"\F29E"; -} - -.fa-autoprefixer:before{ - content:"\F41C"; -} - -.fa-avianex:before{ - content:"\F374"; -} - -.fa-aviato:before{ - content:"\F421"; -} - -.fa-award:before{ - content:"\F559"; -} - -.fa-aws:before{ - content:"\F375"; -} - -.fa-baby:before{ - content:"\F77C"; -} - -.fa-baby-carriage:before{ - content:"\F77D"; -} - -.fa-backspace:before{ - content:"\F55A"; -} - -.fa-backward:before{ - content:"\F04A"; -} - -.fa-bacon:before{ - content:"\F7E5"; -} - -.fa-bacteria:before{ - content:"\E059"; -} - -.fa-bacterium:before{ - content:"\E05A"; -} - -.fa-bahai:before{ - content:"\F666"; -} - -.fa-balance-scale:before{ - content:"\F24E"; -} - -.fa-balance-scale-left:before{ - content:"\F515"; -} - -.fa-balance-scale-right:before{ - content:"\F516"; -} - -.fa-ban:before{ - content:"\F05E"; -} - -.fa-band-aid:before{ - content:"\F462"; -} - -.fa-bandcamp:before{ - content:"\F2D5"; -} - -.fa-barcode:before{ - content:"\F02A"; -} - -.fa-bars:before{ - content:"\F0C9"; -} - -.fa-baseball-ball:before{ - content:"\F433"; -} - -.fa-basketball-ball:before{ - content:"\F434"; -} - -.fa-bath:before{ - content:"\F2CD"; -} - -.fa-battery-empty:before{ - content:"\F244"; -} - -.fa-battery-full:before{ - content:"\F240"; -} - -.fa-battery-half:before{ - content:"\F242"; -} - -.fa-battery-quarter:before{ - content:"\F243"; -} - -.fa-battery-three-quarters:before{ - content:"\F241"; -} - -.fa-battle-net:before{ - content:"\F835"; -} - -.fa-bed:before{ - content:"\F236"; -} - -.fa-beer:before{ - content:"\F0FC"; -} - -.fa-behance:before{ - content:"\F1B4"; -} - -.fa-behance-square:before{ - content:"\F1B5"; -} - -.fa-bell:before{ - content:"\F0F3"; -} - -.fa-bell-slash:before{ - content:"\F1F6"; -} - -.fa-bezier-curve:before{ - content:"\F55B"; -} - -.fa-bible:before{ - content:"\F647"; -} - -.fa-bicycle:before{ - content:"\F206"; -} - -.fa-biking:before{ - content:"\F84A"; -} - -.fa-bimobject:before{ - content:"\F378"; -} - -.fa-binoculars:before{ - content:"\F1E5"; -} - -.fa-biohazard:before{ - content:"\F780"; -} - -.fa-birthday-cake:before{ - content:"\F1FD"; -} - -.fa-bitbucket:before{ - content:"\F171"; -} - -.fa-bitcoin:before{ - content:"\F379"; -} - -.fa-bity:before{ - content:"\F37A"; -} - -.fa-black-tie:before{ - content:"\F27E"; -} - -.fa-blackberry:before{ - content:"\F37B"; -} - -.fa-blender:before{ - content:"\F517"; -} - -.fa-blender-phone:before{ - content:"\F6B6"; -} - -.fa-blind:before{ - content:"\F29D"; -} - -.fa-blog:before{ - content:"\F781"; -} - -.fa-blogger:before{ - content:"\F37C"; -} - -.fa-blogger-b:before{ - content:"\F37D"; -} - -.fa-bluetooth:before{ - content:"\F293"; -} - -.fa-bluetooth-b:before{ - content:"\F294"; -} - -.fa-bold:before{ - content:"\F032"; -} - -.fa-bolt:before{ - content:"\F0E7"; -} - -.fa-bomb:before{ - content:"\F1E2"; -} - -.fa-bone:before{ - content:"\F5D7"; -} - -.fa-bong:before{ - content:"\F55C"; -} - -.fa-book:before{ - content:"\F02D"; -} - -.fa-book-dead:before{ - content:"\F6B7"; -} - -.fa-book-medical:before{ - content:"\F7E6"; -} - -.fa-book-open:before{ - content:"\F518"; -} - -.fa-book-reader:before{ - content:"\F5DA"; -} - -.fa-bookmark:before{ - content:"\F02E"; -} - -.fa-bootstrap:before{ - content:"\F836"; -} - -.fa-border-all:before{ - content:"\F84C"; -} - -.fa-border-none:before{ - content:"\F850"; -} - -.fa-border-style:before{ - content:"\F853"; -} - -.fa-bowling-ball:before{ - content:"\F436"; -} - -.fa-box:before{ - content:"\F466"; -} - -.fa-box-open:before{ - content:"\F49E"; -} - -.fa-box-tissue:before{ - content:"\E05B"; -} - -.fa-boxes:before{ - content:"\F468"; -} - -.fa-braille:before{ - content:"\F2A1"; -} - -.fa-brain:before{ - content:"\F5DC"; -} - -.fa-bread-slice:before{ - content:"\F7EC"; -} - -.fa-briefcase:before{ - content:"\F0B1"; -} - -.fa-briefcase-medical:before{ - content:"\F469"; -} - -.fa-broadcast-tower:before{ - content:"\F519"; -} - -.fa-broom:before{ - content:"\F51A"; -} - -.fa-brush:before{ - content:"\F55D"; -} - -.fa-btc:before{ - content:"\F15A"; -} - -.fa-buffer:before{ - content:"\F837"; -} - -.fa-bug:before{ - content:"\F188"; -} - -.fa-building:before{ - content:"\F1AD"; -} - -.fa-bullhorn:before{ - content:"\F0A1"; -} - -.fa-bullseye:before{ - content:"\F140"; -} - -.fa-burn:before{ - content:"\F46A"; -} - -.fa-buromobelexperte:before{ - content:"\F37F"; -} - -.fa-bus:before{ - content:"\F207"; -} - -.fa-bus-alt:before{ - content:"\F55E"; -} - -.fa-business-time:before{ - content:"\F64A"; -} - -.fa-buy-n-large:before{ - content:"\F8A6"; -} - -.fa-buysellads:before{ - content:"\F20D"; -} - -.fa-calculator:before{ - content:"\F1EC"; -} - -.fa-calendar:before{ - content:"\F133"; -} - -.fa-calendar-alt:before{ - content:"\F073"; -} - -.fa-calendar-check:before{ - content:"\F274"; -} - -.fa-calendar-day:before{ - content:"\F783"; -} - -.fa-calendar-minus:before{ - content:"\F272"; -} - -.fa-calendar-plus:before{ - content:"\F271"; -} - -.fa-calendar-times:before{ - content:"\F273"; -} - -.fa-calendar-week:before{ - content:"\F784"; -} - -.fa-camera:before{ - content:"\F030"; -} - -.fa-camera-retro:before{ - content:"\F083"; -} - -.fa-campground:before{ - content:"\F6BB"; -} - -.fa-canadian-maple-leaf:before{ - content:"\F785"; -} - -.fa-candy-cane:before{ - content:"\F786"; -} - -.fa-cannabis:before{ - content:"\F55F"; -} - -.fa-capsules:before{ - content:"\F46B"; -} - -.fa-car:before{ - content:"\F1B9"; -} - -.fa-car-alt:before{ - content:"\F5DE"; -} - -.fa-car-battery:before{ - content:"\F5DF"; -} - -.fa-car-crash:before{ - content:"\F5E1"; -} - -.fa-car-side:before{ - content:"\F5E4"; -} - -.fa-caravan:before{ - content:"\F8FF"; -} - -.fa-caret-down:before{ - content:"\F0D7"; -} - -.fa-caret-left:before{ - content:"\F0D9"; -} - -.fa-caret-right:before{ - content:"\F0DA"; -} - -.fa-caret-square-down:before{ - content:"\F150"; -} - -.fa-caret-square-left:before{ - content:"\F191"; -} - -.fa-caret-square-right:before{ - content:"\F152"; -} - -.fa-caret-square-up:before{ - content:"\F151"; -} - -.fa-caret-up:before{ - content:"\F0D8"; -} - -.fa-carrot:before{ - content:"\F787"; -} - -.fa-cart-arrow-down:before{ - content:"\F218"; -} - -.fa-cart-plus:before{ - content:"\F217"; -} - -.fa-cash-register:before{ - content:"\F788"; -} - -.fa-cat:before{ - content:"\F6BE"; -} - -.fa-cc-amazon-pay:before{ - content:"\F42D"; -} - -.fa-cc-amex:before{ - content:"\F1F3"; -} - -.fa-cc-apple-pay:before{ - content:"\F416"; -} - -.fa-cc-diners-club:before{ - content:"\F24C"; -} - -.fa-cc-discover:before{ - content:"\F1F2"; -} - -.fa-cc-jcb:before{ - content:"\F24B"; -} - -.fa-cc-mastercard:before{ - content:"\F1F1"; -} - -.fa-cc-paypal:before{ - content:"\F1F4"; -} - -.fa-cc-stripe:before{ - content:"\F1F5"; -} - -.fa-cc-visa:before{ - content:"\F1F0"; -} - -.fa-centercode:before{ - content:"\F380"; -} - -.fa-centos:before{ - content:"\F789"; -} - -.fa-certificate:before{ - content:"\F0A3"; -} - -.fa-chair:before{ - content:"\F6C0"; -} - -.fa-chalkboard:before{ - content:"\F51B"; -} - -.fa-chalkboard-teacher:before{ - content:"\F51C"; -} - -.fa-charging-station:before{ - content:"\F5E7"; -} - -.fa-chart-area:before{ - content:"\F1FE"; -} - -.fa-chart-bar:before{ - content:"\F080"; -} - -.fa-chart-line:before{ - content:"\F201"; -} - -.fa-chart-pie:before{ - content:"\F200"; -} - -.fa-check:before{ - content:"\F00C"; -} - -.fa-check-circle:before{ - content:"\F058"; -} - -.fa-check-double:before{ - content:"\F560"; -} - -.fa-check-square:before{ - content:"\F14A"; -} - -.fa-cheese:before{ - content:"\F7EF"; -} - -.fa-chess:before{ - content:"\F439"; -} - -.fa-chess-bishop:before{ - content:"\F43A"; -} - -.fa-chess-board:before{ - content:"\F43C"; -} - -.fa-chess-king:before{ - content:"\F43F"; -} - -.fa-chess-knight:before{ - content:"\F441"; -} - -.fa-chess-pawn:before{ - content:"\F443"; -} - -.fa-chess-queen:before{ - content:"\F445"; -} - -.fa-chess-rook:before{ - content:"\F447"; -} - -.fa-chevron-circle-down:before{ - content:"\F13A"; -} - -.fa-chevron-circle-left:before{ - content:"\F137"; -} - -.fa-chevron-circle-right:before{ - content:"\F138"; -} - -.fa-chevron-circle-up:before{ - content:"\F139"; -} - -.fa-chevron-down:before{ - content:"\F078"; -} - -.fa-chevron-left:before{ - content:"\F053"; -} - -.fa-chevron-right:before{ - content:"\F054"; -} - -.fa-chevron-up:before{ - content:"\F077"; -} - -.fa-child:before{ - content:"\F1AE"; -} - -.fa-chrome:before{ - content:"\F268"; -} - -.fa-chromecast:before{ - content:"\F838"; -} - -.fa-church:before{ - content:"\F51D"; -} - -.fa-circle:before{ - content:"\F111"; -} - -.fa-circle-notch:before{ - content:"\F1CE"; -} - -.fa-city:before{ - content:"\F64F"; -} - -.fa-clinic-medical:before{ - content:"\F7F2"; -} - -.fa-clipboard:before{ - content:"\F328"; -} - -.fa-clipboard-check:before{ - content:"\F46C"; -} - -.fa-clipboard-list:before{ - content:"\F46D"; -} - -.fa-clock:before{ - content:"\F017"; -} - -.fa-clone:before{ - content:"\F24D"; -} - -.fa-closed-captioning:before{ - content:"\F20A"; -} - -.fa-cloud:before{ - content:"\F0C2"; -} - -.fa-cloud-download-alt:before{ - content:"\F381"; -} - -.fa-cloud-meatball:before{ - content:"\F73B"; -} - -.fa-cloud-moon:before{ - content:"\F6C3"; -} - -.fa-cloud-moon-rain:before{ - content:"\F73C"; -} - -.fa-cloud-rain:before{ - content:"\F73D"; -} - -.fa-cloud-showers-heavy:before{ - content:"\F740"; -} - -.fa-cloud-sun:before{ - content:"\F6C4"; -} - -.fa-cloud-sun-rain:before{ - content:"\F743"; -} - -.fa-cloud-upload-alt:before{ - content:"\F382"; -} - -.fa-cloudflare:before{ - content:"\E07D"; -} - -.fa-cloudscale:before{ - content:"\F383"; -} - -.fa-cloudsmith:before{ - content:"\F384"; -} - -.fa-cloudversify:before{ - content:"\F385"; -} - -.fa-cocktail:before{ - content:"\F561"; -} - -.fa-code:before{ - content:"\F121"; -} - -.fa-code-branch:before{ - content:"\F126"; -} - -.fa-codepen:before{ - content:"\F1CB"; -} - -.fa-codiepie:before{ - content:"\F284"; -} - -.fa-coffee:before{ - content:"\F0F4"; -} - -.fa-cog:before{ - content:"\F013"; -} - -.fa-cogs:before{ - content:"\F085"; -} - -.fa-coins:before{ - content:"\F51E"; -} - -.fa-columns:before{ - content:"\F0DB"; -} - -.fa-comment:before{ - content:"\F075"; -} - -.fa-comment-alt:before{ - content:"\F27A"; -} - -.fa-comment-dollar:before{ - content:"\F651"; -} - -.fa-comment-dots:before{ - content:"\F4AD"; -} - -.fa-comment-medical:before{ - content:"\F7F5"; -} - -.fa-comment-slash:before{ - content:"\F4B3"; -} - -.fa-comments:before{ - content:"\F086"; -} - -.fa-comments-dollar:before{ - content:"\F653"; -} - -.fa-compact-disc:before{ - content:"\F51F"; -} - -.fa-compass:before{ - content:"\F14E"; -} - -.fa-compress:before{ - content:"\F066"; -} - -.fa-compress-alt:before{ - content:"\F422"; -} - -.fa-compress-arrows-alt:before{ - content:"\F78C"; -} - -.fa-concierge-bell:before{ - content:"\F562"; -} - -.fa-confluence:before{ - content:"\F78D"; -} - -.fa-connectdevelop:before{ - content:"\F20E"; -} - -.fa-contao:before{ - content:"\F26D"; -} - -.fa-cookie:before{ - content:"\F563"; -} - -.fa-cookie-bite:before{ - content:"\F564"; -} - -.fa-copy:before{ - content:"\F0C5"; -} - -.fa-copyright:before{ - content:"\F1F9"; -} - -.fa-cotton-bureau:before{ - content:"\F89E"; -} - -.fa-couch:before{ - content:"\F4B8"; -} - -.fa-cpanel:before{ - content:"\F388"; -} - -.fa-creative-commons:before{ - content:"\F25E"; -} - -.fa-creative-commons-by:before{ - content:"\F4E7"; -} - -.fa-creative-commons-nc:before{ - content:"\F4E8"; -} - -.fa-creative-commons-nc-eu:before{ - content:"\F4E9"; -} - -.fa-creative-commons-nc-jp:before{ - content:"\F4EA"; -} - -.fa-creative-commons-nd:before{ - content:"\F4EB"; -} - -.fa-creative-commons-pd:before{ - content:"\F4EC"; -} - -.fa-creative-commons-pd-alt:before{ - content:"\F4ED"; -} - -.fa-creative-commons-remix:before{ - content:"\F4EE"; -} - -.fa-creative-commons-sa:before{ - content:"\F4EF"; -} - -.fa-creative-commons-sampling:before{ - content:"\F4F0"; -} - -.fa-creative-commons-sampling-plus:before{ - content:"\F4F1"; -} - -.fa-creative-commons-share:before{ - content:"\F4F2"; -} - -.fa-creative-commons-zero:before{ - content:"\F4F3"; -} - -.fa-credit-card:before{ - content:"\F09D"; -} - -.fa-critical-role:before{ - content:"\F6C9"; -} - -.fa-crop:before{ - content:"\F125"; -} - -.fa-crop-alt:before{ - content:"\F565"; -} - -.fa-cross:before{ - content:"\F654"; -} - -.fa-crosshairs:before{ - content:"\F05B"; -} - -.fa-crow:before{ - content:"\F520"; -} - -.fa-crown:before{ - content:"\F521"; -} - -.fa-crutch:before{ - content:"\F7F7"; -} - -.fa-css3:before{ - content:"\F13C"; -} - -.fa-css3-alt:before{ - content:"\F38B"; -} - -.fa-cube:before{ - content:"\F1B2"; -} - -.fa-cubes:before{ - content:"\F1B3"; -} - -.fa-cut:before{ - content:"\F0C4"; -} - -.fa-cuttlefish:before{ - content:"\F38C"; -} - -.fa-d-and-d:before{ - content:"\F38D"; -} - -.fa-d-and-d-beyond:before{ - content:"\F6CA"; -} - -.fa-dailymotion:before{ - content:"\E052"; -} - -.fa-dashcube:before{ - content:"\F210"; -} - -.fa-database:before{ - content:"\F1C0"; -} - -.fa-deaf:before{ - content:"\F2A4"; -} - -.fa-deezer:before{ - content:"\E077"; -} - -.fa-delicious:before{ - content:"\F1A5"; -} - -.fa-democrat:before{ - content:"\F747"; -} - -.fa-deploydog:before{ - content:"\F38E"; -} - -.fa-deskpro:before{ - content:"\F38F"; -} - -.fa-desktop:before{ - content:"\F108"; -} - -.fa-dev:before{ - content:"\F6CC"; -} - -.fa-deviantart:before{ - content:"\F1BD"; -} - -.fa-dharmachakra:before{ - content:"\F655"; -} - -.fa-dhl:before{ - content:"\F790"; -} - -.fa-diagnoses:before{ - content:"\F470"; -} - -.fa-diaspora:before{ - content:"\F791"; -} - -.fa-dice:before{ - content:"\F522"; -} - -.fa-dice-d20:before{ - content:"\F6CF"; -} - -.fa-dice-d6:before{ - content:"\F6D1"; -} - -.fa-dice-five:before{ - content:"\F523"; -} - -.fa-dice-four:before{ - content:"\F524"; -} - -.fa-dice-one:before{ - content:"\F525"; -} - -.fa-dice-six:before{ - content:"\F526"; -} - -.fa-dice-three:before{ - content:"\F527"; -} - -.fa-dice-two:before{ - content:"\F528"; -} - -.fa-digg:before{ - content:"\F1A6"; -} - -.fa-digital-ocean:before{ - content:"\F391"; -} - -.fa-digital-tachograph:before{ - content:"\F566"; -} - -.fa-directions:before{ - content:"\F5EB"; -} - -.fa-discord:before{ - content:"\F392"; -} - -.fa-discourse:before{ - content:"\F393"; -} - -.fa-disease:before{ - content:"\F7FA"; -} - -.fa-divide:before{ - content:"\F529"; -} - -.fa-dizzy:before{ - content:"\F567"; -} - -.fa-dna:before{ - content:"\F471"; -} - -.fa-dochub:before{ - content:"\F394"; -} - -.fa-docker:before{ - content:"\F395"; -} - -.fa-dog:before{ - content:"\F6D3"; -} - -.fa-dollar-sign:before{ - content:"\F155"; -} - -.fa-dolly:before{ - content:"\F472"; -} - -.fa-dolly-flatbed:before{ - content:"\F474"; -} - -.fa-donate:before{ - content:"\F4B9"; -} - -.fa-door-closed:before{ - content:"\F52A"; -} - -.fa-door-open:before{ - content:"\F52B"; -} - -.fa-dot-circle:before{ - content:"\F192"; -} - -.fa-dove:before{ - content:"\F4BA"; -} - -.fa-download:before{ - content:"\F019"; -} - -.fa-draft2digital:before{ - content:"\F396"; -} - -.fa-drafting-compass:before{ - content:"\F568"; -} - -.fa-dragon:before{ - content:"\F6D5"; -} - -.fa-draw-polygon:before{ - content:"\F5EE"; -} - -.fa-dribbble:before{ - content:"\F17D"; -} - -.fa-dribbble-square:before{ - content:"\F397"; -} - -.fa-dropbox:before{ - content:"\F16B"; -} - -.fa-drum:before{ - content:"\F569"; -} - -.fa-drum-steelpan:before{ - content:"\F56A"; -} - -.fa-drumstick-bite:before{ - content:"\F6D7"; -} - -.fa-drupal:before{ - content:"\F1A9"; -} - -.fa-dumbbell:before{ - content:"\F44B"; -} - -.fa-dumpster:before{ - content:"\F793"; -} - -.fa-dumpster-fire:before{ - content:"\F794"; -} - -.fa-dungeon:before{ - content:"\F6D9"; -} - -.fa-dyalog:before{ - content:"\F399"; -} - -.fa-earlybirds:before{ - content:"\F39A"; -} - -.fa-ebay:before{ - content:"\F4F4"; -} - -.fa-edge:before{ - content:"\F282"; -} - -.fa-edge-legacy:before{ - content:"\E078"; -} - -.fa-edit:before{ - content:"\F044"; -} - -.fa-egg:before{ - content:"\F7FB"; -} - -.fa-eject:before{ - content:"\F052"; -} - -.fa-elementor:before{ - content:"\F430"; -} - -.fa-ellipsis-h:before{ - content:"\F141"; -} - -.fa-ellipsis-v:before{ - content:"\F142"; -} - -.fa-ello:before{ - content:"\F5F1"; -} - -.fa-ember:before{ - content:"\F423"; -} - -.fa-empire:before{ - content:"\F1D1"; -} - -.fa-envelope:before{ - content:"\F0E0"; -} - -.fa-envelope-open:before{ - content:"\F2B6"; -} - -.fa-envelope-open-text:before{ - content:"\F658"; -} - -.fa-envelope-square:before{ - content:"\F199"; -} - -.fa-envira:before{ - content:"\F299"; -} - -.fa-equals:before{ - content:"\F52C"; -} - -.fa-eraser:before{ - content:"\F12D"; -} - -.fa-erlang:before{ - content:"\F39D"; -} - -.fa-ethereum:before{ - content:"\F42E"; -} - -.fa-ethernet:before{ - content:"\F796"; -} - -.fa-etsy:before{ - content:"\F2D7"; -} - -.fa-euro-sign:before{ - content:"\F153"; -} - -.fa-evernote:before{ - content:"\F839"; -} - -.fa-exchange-alt:before{ - content:"\F362"; -} - -.fa-exclamation:before{ - content:"\F12A"; -} - -.fa-exclamation-circle:before{ - content:"\F06A"; -} - -.fa-exclamation-triangle:before{ - content:"\F071"; -} - -.fa-expand:before{ - content:"\F065"; -} - -.fa-expand-alt:before{ - content:"\F424"; -} - -.fa-expand-arrows-alt:before{ - content:"\F31E"; -} - -.fa-expeditedssl:before{ - content:"\F23E"; -} - -.fa-external-link-alt:before{ - content:"\F35D"; -} - -.fa-external-link-square-alt:before{ - content:"\F360"; -} - -.fa-eye:before{ - content:"\F06E"; -} - -.fa-eye-dropper:before{ - content:"\F1FB"; -} - -.fa-eye-slash:before{ - content:"\F070"; -} - -.fa-facebook:before{ - content:"\F09A"; -} - -.fa-facebook-f:before{ - content:"\F39E"; -} - -.fa-facebook-messenger:before{ - content:"\F39F"; -} - -.fa-facebook-square:before{ - content:"\F082"; -} - -.fa-fan:before{ - content:"\F863"; -} - -.fa-fantasy-flight-games:before{ - content:"\F6DC"; -} - -.fa-fast-backward:before{ - content:"\F049"; -} - -.fa-fast-forward:before{ - content:"\F050"; -} - -.fa-faucet:before{ - content:"\E005"; -} - -.fa-fax:before{ - content:"\F1AC"; -} - -.fa-feather:before{ - content:"\F52D"; -} - -.fa-feather-alt:before{ - content:"\F56B"; -} - -.fa-fedex:before{ - content:"\F797"; -} - -.fa-fedora:before{ - content:"\F798"; -} - -.fa-female:before{ - content:"\F182"; -} - -.fa-fighter-jet:before{ - content:"\F0FB"; -} - -.fa-figma:before{ - content:"\F799"; -} - -.fa-file:before{ - content:"\F15B"; -} - -.fa-file-alt:before{ - content:"\F15C"; -} - -.fa-file-archive:before{ - content:"\F1C6"; -} - -.fa-file-audio:before{ - content:"\F1C7"; -} - -.fa-file-code:before{ - content:"\F1C9"; -} - -.fa-file-contract:before{ - content:"\F56C"; -} - -.fa-file-csv:before{ - content:"\F6DD"; -} - -.fa-file-download:before{ - content:"\F56D"; -} - -.fa-file-excel:before{ - content:"\F1C3"; -} - -.fa-file-export:before{ - content:"\F56E"; -} - -.fa-file-image:before{ - content:"\F1C5"; -} - -.fa-file-import:before{ - content:"\F56F"; -} - -.fa-file-invoice:before{ - content:"\F570"; -} - -.fa-file-invoice-dollar:before{ - content:"\F571"; -} - -.fa-file-medical:before{ - content:"\F477"; -} - -.fa-file-medical-alt:before{ - content:"\F478"; -} - -.fa-file-pdf:before{ - content:"\F1C1"; -} - -.fa-file-powerpoint:before{ - content:"\F1C4"; -} - -.fa-file-prescription:before{ - content:"\F572"; -} - -.fa-file-signature:before{ - content:"\F573"; -} - -.fa-file-upload:before{ - content:"\F574"; -} - -.fa-file-video:before{ - content:"\F1C8"; -} - -.fa-file-word:before{ - content:"\F1C2"; -} - -.fa-fill:before{ - content:"\F575"; -} - -.fa-fill-drip:before{ - content:"\F576"; -} - -.fa-film:before{ - content:"\F008"; -} - -.fa-filter:before{ - content:"\F0B0"; -} - -.fa-fingerprint:before{ - content:"\F577"; -} - -.fa-fire:before{ - content:"\F06D"; -} - -.fa-fire-alt:before{ - content:"\F7E4"; -} - -.fa-fire-extinguisher:before{ - content:"\F134"; -} - -.fa-firefox:before{ - content:"\F269"; -} - -.fa-firefox-browser:before{ - content:"\E007"; -} - -.fa-first-aid:before{ - content:"\F479"; -} - -.fa-first-order:before{ - content:"\F2B0"; -} - -.fa-first-order-alt:before{ - content:"\F50A"; -} - -.fa-firstdraft:before{ - content:"\F3A1"; -} - -.fa-fish:before{ - content:"\F578"; -} - -.fa-fist-raised:before{ - content:"\F6DE"; -} - -.fa-flag:before{ - content:"\F024"; -} - -.fa-flag-checkered:before{ - content:"\F11E"; -} - -.fa-flag-usa:before{ - content:"\F74D"; -} - -.fa-flask:before{ - content:"\F0C3"; -} - -.fa-flickr:before{ - content:"\F16E"; -} - -.fa-flipboard:before{ - content:"\F44D"; -} - -.fa-flushed:before{ - content:"\F579"; -} - -.fa-fly:before{ - content:"\F417"; -} - -.fa-folder:before{ - content:"\F07B"; -} - -.fa-folder-minus:before{ - content:"\F65D"; -} - -.fa-folder-open:before{ - content:"\F07C"; -} - -.fa-folder-plus:before{ - content:"\F65E"; -} - -.fa-font:before{ - content:"\F031"; -} - -.fa-font-awesome:before{ - content:"\F2B4"; -} - -.fa-font-awesome-alt:before{ - content:"\F35C"; -} - -.fa-font-awesome-flag:before{ - content:"\F425"; -} - -.fa-font-awesome-logo-full:before{ - content:"\F4E6"; -} - -.fa-fonticons:before{ - content:"\F280"; -} - -.fa-fonticons-fi:before{ - content:"\F3A2"; -} - -.fa-football-ball:before{ - content:"\F44E"; -} - -.fa-fort-awesome:before{ - content:"\F286"; -} - -.fa-fort-awesome-alt:before{ - content:"\F3A3"; -} - -.fa-forumbee:before{ - content:"\F211"; -} - -.fa-forward:before{ - content:"\F04E"; -} - -.fa-foursquare:before{ - content:"\F180"; -} - -.fa-free-code-camp:before{ - content:"\F2C5"; -} - -.fa-freebsd:before{ - content:"\F3A4"; -} - -.fa-frog:before{ - content:"\F52E"; -} - -.fa-frown:before{ - content:"\F119"; -} - -.fa-frown-open:before{ - content:"\F57A"; -} - -.fa-fulcrum:before{ - content:"\F50B"; -} - -.fa-funnel-dollar:before{ - content:"\F662"; -} - -.fa-futbol:before{ - content:"\F1E3"; -} - -.fa-galactic-republic:before{ - content:"\F50C"; -} - -.fa-galactic-senate:before{ - content:"\F50D"; -} - -.fa-gamepad:before{ - content:"\F11B"; -} - -.fa-gas-pump:before{ - content:"\F52F"; -} - -.fa-gavel:before{ - content:"\F0E3"; -} - -.fa-gem:before{ - content:"\F3A5"; -} - -.fa-genderless:before{ - content:"\F22D"; -} - -.fa-get-pocket:before{ - content:"\F265"; -} - -.fa-gg:before{ - content:"\F260"; -} - -.fa-gg-circle:before{ - content:"\F261"; -} - -.fa-ghost:before{ - content:"\F6E2"; -} - -.fa-gift:before{ - content:"\F06B"; -} - -.fa-gifts:before{ - content:"\F79C"; -} - -.fa-git:before{ - content:"\F1D3"; -} - -.fa-git-alt:before{ - content:"\F841"; -} - -.fa-git-square:before{ - content:"\F1D2"; -} - -.fa-github:before{ - content:"\F09B"; -} - -.fa-github-alt:before{ - content:"\F113"; -} - -.fa-github-square:before{ - content:"\F092"; -} - -.fa-gitkraken:before{ - content:"\F3A6"; -} - -.fa-gitlab:before{ - content:"\F296"; -} - -.fa-gitter:before{ - content:"\F426"; -} - -.fa-glass-cheers:before{ - content:"\F79F"; -} - -.fa-glass-martini:before{ - content:"\F000"; -} - -.fa-glass-martini-alt:before{ - content:"\F57B"; -} - -.fa-glass-whiskey:before{ - content:"\F7A0"; -} - -.fa-glasses:before{ - content:"\F530"; -} - -.fa-glide:before{ - content:"\F2A5"; -} - -.fa-glide-g:before{ - content:"\F2A6"; -} - -.fa-globe:before{ - content:"\F0AC"; -} - -.fa-globe-africa:before{ - content:"\F57C"; -} - -.fa-globe-americas:before{ - content:"\F57D"; -} - -.fa-globe-asia:before{ - content:"\F57E"; -} - -.fa-globe-europe:before{ - content:"\F7A2"; -} - -.fa-gofore:before{ - content:"\F3A7"; -} - -.fa-golf-ball:before{ - content:"\F450"; -} - -.fa-goodreads:before{ - content:"\F3A8"; -} - -.fa-goodreads-g:before{ - content:"\F3A9"; -} - -.fa-google:before{ - content:"\F1A0"; -} - -.fa-google-drive:before{ - content:"\F3AA"; -} - -.fa-google-pay:before{ - content:"\E079"; -} - -.fa-google-play:before{ - content:"\F3AB"; -} - -.fa-google-plus:before{ - content:"\F2B3"; -} - -.fa-google-plus-g:before{ - content:"\F0D5"; -} - -.fa-google-plus-square:before{ - content:"\F0D4"; -} - -.fa-google-wallet:before{ - content:"\F1EE"; -} - -.fa-gopuram:before{ - content:"\F664"; -} - -.fa-graduation-cap:before{ - content:"\F19D"; -} - -.fa-gratipay:before{ - content:"\F184"; -} - -.fa-grav:before{ - content:"\F2D6"; -} - -.fa-greater-than:before{ - content:"\F531"; -} - -.fa-greater-than-equal:before{ - content:"\F532"; -} - -.fa-grimace:before{ - content:"\F57F"; -} - -.fa-grin:before{ - content:"\F580"; -} - -.fa-grin-alt:before{ - content:"\F581"; -} - -.fa-grin-beam:before{ - content:"\F582"; -} - -.fa-grin-beam-sweat:before{ - content:"\F583"; -} - -.fa-grin-hearts:before{ - content:"\F584"; -} - -.fa-grin-squint:before{ - content:"\F585"; -} - -.fa-grin-squint-tears:before{ - content:"\F586"; -} - -.fa-grin-stars:before{ - content:"\F587"; -} - -.fa-grin-tears:before{ - content:"\F588"; -} - -.fa-grin-tongue:before{ - content:"\F589"; -} - -.fa-grin-tongue-squint:before{ - content:"\F58A"; -} - -.fa-grin-tongue-wink:before{ - content:"\F58B"; -} - -.fa-grin-wink:before{ - content:"\F58C"; -} - -.fa-grip-horizontal:before{ - content:"\F58D"; -} - -.fa-grip-lines:before{ - content:"\F7A4"; -} - -.fa-grip-lines-vertical:before{ - content:"\F7A5"; -} - -.fa-grip-vertical:before{ - content:"\F58E"; -} - -.fa-gripfire:before{ - content:"\F3AC"; -} - -.fa-grunt:before{ - content:"\F3AD"; -} - -.fa-guilded:before{ - content:"\E07E"; -} - -.fa-guitar:before{ - content:"\F7A6"; -} - -.fa-gulp:before{ - content:"\F3AE"; -} - -.fa-h-square:before{ - content:"\F0FD"; -} - -.fa-hacker-news:before{ - content:"\F1D4"; -} - -.fa-hacker-news-square:before{ - content:"\F3AF"; -} - -.fa-hackerrank:before{ - content:"\F5F7"; -} - -.fa-hamburger:before{ - content:"\F805"; -} - -.fa-hammer:before{ - content:"\F6E3"; -} - -.fa-hamsa:before{ - content:"\F665"; -} - -.fa-hand-holding:before{ - content:"\F4BD"; -} - -.fa-hand-holding-heart:before{ - content:"\F4BE"; -} - -.fa-hand-holding-medical:before{ - content:"\E05C"; -} - -.fa-hand-holding-usd:before{ - content:"\F4C0"; -} - -.fa-hand-holding-water:before{ - content:"\F4C1"; -} - -.fa-hand-lizard:before{ - content:"\F258"; -} - -.fa-hand-middle-finger:before{ - content:"\F806"; -} - -.fa-hand-paper:before{ - content:"\F256"; -} - -.fa-hand-peace:before{ - content:"\F25B"; -} - -.fa-hand-point-down:before{ - content:"\F0A7"; -} - -.fa-hand-point-left:before{ - content:"\F0A5"; -} - -.fa-hand-point-right:before{ - content:"\F0A4"; -} - -.fa-hand-point-up:before{ - content:"\F0A6"; -} - -.fa-hand-pointer:before{ - content:"\F25A"; -} - -.fa-hand-rock:before{ - content:"\F255"; -} - -.fa-hand-scissors:before{ - content:"\F257"; -} - -.fa-hand-sparkles:before{ - content:"\E05D"; -} - -.fa-hand-spock:before{ - content:"\F259"; -} - -.fa-hands:before{ - content:"\F4C2"; -} - -.fa-hands-helping:before{ - content:"\F4C4"; -} - -.fa-hands-wash:before{ - content:"\E05E"; -} - -.fa-handshake:before{ - content:"\F2B5"; -} - -.fa-handshake-alt-slash:before{ - content:"\E05F"; -} - -.fa-handshake-slash:before{ - content:"\E060"; -} - -.fa-hanukiah:before{ - content:"\F6E6"; -} - -.fa-hard-hat:before{ - content:"\F807"; -} - -.fa-hashtag:before{ - content:"\F292"; -} - -.fa-hat-cowboy:before{ - content:"\F8C0"; -} - -.fa-hat-cowboy-side:before{ - content:"\F8C1"; -} - -.fa-hat-wizard:before{ - content:"\F6E8"; -} - -.fa-hdd:before{ - content:"\F0A0"; -} - -.fa-head-side-cough:before{ - content:"\E061"; -} - -.fa-head-side-cough-slash:before{ - content:"\E062"; -} - -.fa-head-side-mask:before{ - content:"\E063"; -} - -.fa-head-side-virus:before{ - content:"\E064"; -} - -.fa-heading:before{ - content:"\F1DC"; -} - -.fa-headphones:before{ - content:"\F025"; -} - -.fa-headphones-alt:before{ - content:"\F58F"; -} - -.fa-headset:before{ - content:"\F590"; -} - -.fa-heart:before{ - content:"\F004"; -} - -.fa-heart-broken:before{ - content:"\F7A9"; -} - -.fa-heartbeat:before{ - content:"\F21E"; -} - -.fa-helicopter:before{ - content:"\F533"; -} - -.fa-highlighter:before{ - content:"\F591"; -} - -.fa-hiking:before{ - content:"\F6EC"; -} - -.fa-hippo:before{ - content:"\F6ED"; -} - -.fa-hips:before{ - content:"\F452"; -} - -.fa-hire-a-helper:before{ - content:"\F3B0"; -} - -.fa-history:before{ - content:"\F1DA"; -} - -.fa-hive:before{ - content:"\E07F"; -} - -.fa-hockey-puck:before{ - content:"\F453"; -} - -.fa-holly-berry:before{ - content:"\F7AA"; -} - -.fa-home:before{ - content:"\F015"; -} - -.fa-hooli:before{ - content:"\F427"; -} - -.fa-hornbill:before{ - content:"\F592"; -} - -.fa-horse:before{ - content:"\F6F0"; -} - -.fa-horse-head:before{ - content:"\F7AB"; -} - -.fa-hospital:before{ - content:"\F0F8"; -} - -.fa-hospital-alt:before{ - content:"\F47D"; -} - -.fa-hospital-symbol:before{ - content:"\F47E"; -} - -.fa-hospital-user:before{ - content:"\F80D"; -} - -.fa-hot-tub:before{ - content:"\F593"; -} - -.fa-hotdog:before{ - content:"\F80F"; -} - -.fa-hotel:before{ - content:"\F594"; -} - -.fa-hotjar:before{ - content:"\F3B1"; -} - -.fa-hourglass:before{ - content:"\F254"; -} - -.fa-hourglass-end:before{ - content:"\F253"; -} - -.fa-hourglass-half:before{ - content:"\F252"; -} - -.fa-hourglass-start:before{ - content:"\F251"; -} - -.fa-house-damage:before{ - content:"\F6F1"; -} - -.fa-house-user:before{ - content:"\E065"; -} - -.fa-houzz:before{ - content:"\F27C"; -} - -.fa-hryvnia:before{ - content:"\F6F2"; -} - -.fa-html5:before{ - content:"\F13B"; -} - -.fa-hubspot:before{ - content:"\F3B2"; -} - -.fa-i-cursor:before{ - content:"\F246"; -} - -.fa-ice-cream:before{ - content:"\F810"; -} - -.fa-icicles:before{ - content:"\F7AD"; -} - -.fa-icons:before{ - content:"\F86D"; -} - -.fa-id-badge:before{ - content:"\F2C1"; -} - -.fa-id-card:before{ - content:"\F2C2"; -} - -.fa-id-card-alt:before{ - content:"\F47F"; -} - -.fa-ideal:before{ - content:"\E013"; -} - -.fa-igloo:before{ - content:"\F7AE"; -} - -.fa-image:before{ - content:"\F03E"; -} - -.fa-images:before{ - content:"\F302"; -} - -.fa-imdb:before{ - content:"\F2D8"; -} - -.fa-inbox:before{ - content:"\F01C"; -} - -.fa-indent:before{ - content:"\F03C"; -} - -.fa-industry:before{ - content:"\F275"; -} - -.fa-infinity:before{ - content:"\F534"; -} - -.fa-info:before{ - content:"\F129"; -} - -.fa-info-circle:before{ - content:"\F05A"; -} - -.fa-innosoft:before{ - content:"\E080"; -} - -.fa-instagram:before{ - content:"\F16D"; -} - -.fa-instagram-square:before{ - content:"\E055"; -} - -.fa-instalod:before{ - content:"\E081"; -} - -.fa-intercom:before{ - content:"\F7AF"; -} - -.fa-internet-explorer:before{ - content:"\F26B"; -} - -.fa-invision:before{ - content:"\F7B0"; -} - -.fa-ioxhost:before{ - content:"\F208"; -} - -.fa-italic:before{ - content:"\F033"; -} - -.fa-itch-io:before{ - content:"\F83A"; -} - -.fa-itunes:before{ - content:"\F3B4"; -} - -.fa-itunes-note:before{ - content:"\F3B5"; -} - -.fa-java:before{ - content:"\F4E4"; -} - -.fa-jedi:before{ - content:"\F669"; -} - -.fa-jedi-order:before{ - content:"\F50E"; -} - -.fa-jenkins:before{ - content:"\F3B6"; -} - -.fa-jira:before{ - content:"\F7B1"; -} - -.fa-joget:before{ - content:"\F3B7"; -} - -.fa-joint:before{ - content:"\F595"; -} - -.fa-joomla:before{ - content:"\F1AA"; -} - -.fa-journal-whills:before{ - content:"\F66A"; -} - -.fa-js:before{ - content:"\F3B8"; -} - -.fa-js-square:before{ - content:"\F3B9"; -} - -.fa-jsfiddle:before{ - content:"\F1CC"; -} - -.fa-kaaba:before{ - content:"\F66B"; -} - -.fa-kaggle:before{ - content:"\F5FA"; -} - -.fa-key:before{ - content:"\F084"; -} - -.fa-keybase:before{ - content:"\F4F5"; -} - -.fa-keyboard:before{ - content:"\F11C"; -} - -.fa-keycdn:before{ - content:"\F3BA"; -} - -.fa-khanda:before{ - content:"\F66D"; -} - -.fa-kickstarter:before{ - content:"\F3BB"; -} - -.fa-kickstarter-k:before{ - content:"\F3BC"; -} - -.fa-kiss:before{ - content:"\F596"; -} - -.fa-kiss-beam:before{ - content:"\F597"; -} - -.fa-kiss-wink-heart:before{ - content:"\F598"; -} - -.fa-kiwi-bird:before{ - content:"\F535"; -} - -.fa-korvue:before{ - content:"\F42F"; -} - -.fa-landmark:before{ - content:"\F66F"; -} - -.fa-language:before{ - content:"\F1AB"; -} - -.fa-laptop:before{ - content:"\F109"; -} - -.fa-laptop-code:before{ - content:"\F5FC"; -} - -.fa-laptop-house:before{ - content:"\E066"; -} - -.fa-laptop-medical:before{ - content:"\F812"; -} - -.fa-laravel:before{ - content:"\F3BD"; -} - -.fa-lastfm:before{ - content:"\F202"; -} - -.fa-lastfm-square:before{ - content:"\F203"; -} - -.fa-laugh:before{ - content:"\F599"; -} - -.fa-laugh-beam:before{ - content:"\F59A"; -} - -.fa-laugh-squint:before{ - content:"\F59B"; -} - -.fa-laugh-wink:before{ - content:"\F59C"; -} - -.fa-layer-group:before{ - content:"\F5FD"; -} - -.fa-leaf:before{ - content:"\F06C"; -} - -.fa-leanpub:before{ - content:"\F212"; -} - -.fa-lemon:before{ - content:"\F094"; -} - -.fa-less:before{ - content:"\F41D"; -} - -.fa-less-than:before{ - content:"\F536"; -} - -.fa-less-than-equal:before{ - content:"\F537"; -} - -.fa-level-down-alt:before{ - content:"\F3BE"; -} - -.fa-level-up-alt:before{ - content:"\F3BF"; -} - -.fa-life-ring:before{ - content:"\F1CD"; -} - -.fa-lightbulb:before{ - content:"\F0EB"; -} - -.fa-line:before{ - content:"\F3C0"; -} - -.fa-link:before{ - content:"\F0C1"; -} - -.fa-linkedin:before{ - content:"\F08C"; -} - -.fa-linkedin-in:before{ - content:"\F0E1"; -} - -.fa-linode:before{ - content:"\F2B8"; -} - -.fa-linux:before{ - content:"\F17C"; -} - -.fa-lira-sign:before{ - content:"\F195"; -} - -.fa-list:before{ - content:"\F03A"; -} - -.fa-list-alt:before{ - content:"\F022"; -} - -.fa-list-ol:before{ - content:"\F0CB"; -} - -.fa-list-ul:before{ - content:"\F0CA"; -} - -.fa-location-arrow:before{ - content:"\F124"; -} - -.fa-lock:before{ - content:"\F023"; -} - -.fa-lock-open:before{ - content:"\F3C1"; -} - -.fa-long-arrow-alt-down:before{ - content:"\F309"; -} - -.fa-long-arrow-alt-left:before{ - content:"\F30A"; -} - -.fa-long-arrow-alt-right:before{ - content:"\F30B"; -} - -.fa-long-arrow-alt-up:before{ - content:"\F30C"; -} - -.fa-low-vision:before{ - content:"\F2A8"; -} - -.fa-luggage-cart:before{ - content:"\F59D"; -} - -.fa-lungs:before{ - content:"\F604"; -} - -.fa-lungs-virus:before{ - content:"\E067"; -} - -.fa-lyft:before{ - content:"\F3C3"; -} - -.fa-magento:before{ - content:"\F3C4"; -} - -.fa-magic:before{ - content:"\F0D0"; -} - -.fa-magnet:before{ - content:"\F076"; -} - -.fa-mail-bulk:before{ - content:"\F674"; -} - -.fa-mailchimp:before{ - content:"\F59E"; -} - -.fa-male:before{ - content:"\F183"; -} - -.fa-mandalorian:before{ - content:"\F50F"; -} - -.fa-map:before{ - content:"\F279"; -} - -.fa-map-marked:before{ - content:"\F59F"; -} - -.fa-map-marked-alt:before{ - content:"\F5A0"; -} - -.fa-map-marker:before{ - content:"\F041"; -} - -.fa-map-marker-alt:before{ - content:"\F3C5"; -} - -.fa-map-pin:before{ - content:"\F276"; -} - -.fa-map-signs:before{ - content:"\F277"; -} - -.fa-markdown:before{ - content:"\F60F"; -} - -.fa-marker:before{ - content:"\F5A1"; -} - -.fa-mars:before{ - content:"\F222"; -} - -.fa-mars-double:before{ - content:"\F227"; -} - -.fa-mars-stroke:before{ - content:"\F229"; -} - -.fa-mars-stroke-h:before{ - content:"\F22B"; -} - -.fa-mars-stroke-v:before{ - content:"\F22A"; -} - -.fa-mask:before{ - content:"\F6FA"; -} - -.fa-mastodon:before{ - content:"\F4F6"; -} - -.fa-maxcdn:before{ - content:"\F136"; -} - -.fa-mdb:before{ - content:"\F8CA"; -} - -.fa-medal:before{ - content:"\F5A2"; -} - -.fa-medapps:before{ - content:"\F3C6"; -} - -.fa-medium:before{ - content:"\F23A"; -} - -.fa-medium-m:before{ - content:"\F3C7"; -} - -.fa-medkit:before{ - content:"\F0FA"; -} - -.fa-medrt:before{ - content:"\F3C8"; -} - -.fa-meetup:before{ - content:"\F2E0"; -} - -.fa-megaport:before{ - content:"\F5A3"; -} - -.fa-meh:before{ - content:"\F11A"; -} - -.fa-meh-blank:before{ - content:"\F5A4"; -} - -.fa-meh-rolling-eyes:before{ - content:"\F5A5"; -} - -.fa-memory:before{ - content:"\F538"; -} - -.fa-mendeley:before{ - content:"\F7B3"; -} - -.fa-menorah:before{ - content:"\F676"; -} - -.fa-mercury:before{ - content:"\F223"; -} - -.fa-meteor:before{ - content:"\F753"; -} - -.fa-microblog:before{ - content:"\E01A"; -} - -.fa-microchip:before{ - content:"\F2DB"; -} - -.fa-microphone:before{ - content:"\F130"; -} - -.fa-microphone-alt:before{ - content:"\F3C9"; -} - -.fa-microphone-alt-slash:before{ - content:"\F539"; -} - -.fa-microphone-slash:before{ - content:"\F131"; -} - -.fa-microscope:before{ - content:"\F610"; -} - -.fa-microsoft:before{ - content:"\F3CA"; -} - -.fa-minus:before{ - content:"\F068"; -} - -.fa-minus-circle:before{ - content:"\F056"; -} - -.fa-minus-square:before{ - content:"\F146"; -} - -.fa-mitten:before{ - content:"\F7B5"; -} - -.fa-mix:before{ - content:"\F3CB"; -} - -.fa-mixcloud:before{ - content:"\F289"; -} - -.fa-mixer:before{ - content:"\E056"; -} - -.fa-mizuni:before{ - content:"\F3CC"; -} - -.fa-mobile:before{ - content:"\F10B"; -} - -.fa-mobile-alt:before{ - content:"\F3CD"; -} - -.fa-modx:before{ - content:"\F285"; -} - -.fa-monero:before{ - content:"\F3D0"; -} - -.fa-money-bill:before{ - content:"\F0D6"; -} - -.fa-money-bill-alt:before{ - content:"\F3D1"; -} - -.fa-money-bill-wave:before{ - content:"\F53A"; -} - -.fa-money-bill-wave-alt:before{ - content:"\F53B"; -} - -.fa-money-check:before{ - content:"\F53C"; -} - -.fa-money-check-alt:before{ - content:"\F53D"; -} - -.fa-monument:before{ - content:"\F5A6"; -} - -.fa-moon:before{ - content:"\F186"; -} - -.fa-mortar-pestle:before{ - content:"\F5A7"; -} - -.fa-mosque:before{ - content:"\F678"; -} - -.fa-motorcycle:before{ - content:"\F21C"; -} - -.fa-mountain:before{ - content:"\F6FC"; -} - -.fa-mouse:before{ - content:"\F8CC"; -} - -.fa-mouse-pointer:before{ - content:"\F245"; -} - -.fa-mug-hot:before{ - content:"\F7B6"; -} - -.fa-music:before{ - content:"\F001"; -} - -.fa-napster:before{ - content:"\F3D2"; -} - -.fa-neos:before{ - content:"\F612"; -} - -.fa-network-wired:before{ - content:"\F6FF"; -} - -.fa-neuter:before{ - content:"\F22C"; -} - -.fa-newspaper:before{ - content:"\F1EA"; -} - -.fa-nimblr:before{ - content:"\F5A8"; -} - -.fa-node:before{ - content:"\F419"; -} - -.fa-node-js:before{ - content:"\F3D3"; -} - -.fa-not-equal:before{ - content:"\F53E"; -} - -.fa-notes-medical:before{ - content:"\F481"; -} - -.fa-npm:before{ - content:"\F3D4"; -} - -.fa-ns8:before{ - content:"\F3D5"; -} - -.fa-nutritionix:before{ - content:"\F3D6"; -} - -.fa-object-group:before{ - content:"\F247"; -} - -.fa-object-ungroup:before{ - content:"\F248"; -} - -.fa-octopus-deploy:before{ - content:"\E082"; -} - -.fa-odnoklassniki:before{ - content:"\F263"; -} - -.fa-odnoklassniki-square:before{ - content:"\F264"; -} - -.fa-oil-can:before{ - content:"\F613"; -} - -.fa-old-republic:before{ - content:"\F510"; -} - -.fa-om:before{ - content:"\F679"; -} - -.fa-opencart:before{ - content:"\F23D"; -} - -.fa-openid:before{ - content:"\F19B"; -} - -.fa-opera:before{ - content:"\F26A"; -} - -.fa-optin-monster:before{ - content:"\F23C"; -} - -.fa-orcid:before{ - content:"\F8D2"; -} - -.fa-osi:before{ - content:"\F41A"; -} - -.fa-otter:before{ - content:"\F700"; -} - -.fa-outdent:before{ - content:"\F03B"; -} - -.fa-page4:before{ - content:"\F3D7"; -} - -.fa-pagelines:before{ - content:"\F18C"; -} - -.fa-pager:before{ - content:"\F815"; -} - -.fa-paint-brush:before{ - content:"\F1FC"; -} - -.fa-paint-roller:before{ - content:"\F5AA"; -} - -.fa-palette:before{ - content:"\F53F"; -} - -.fa-palfed:before{ - content:"\F3D8"; -} - -.fa-pallet:before{ - content:"\F482"; -} - -.fa-paper-plane:before{ - content:"\F1D8"; -} - -.fa-paperclip:before{ - content:"\F0C6"; -} - -.fa-parachute-box:before{ - content:"\F4CD"; -} - -.fa-paragraph:before{ - content:"\F1DD"; -} - -.fa-parking:before{ - content:"\F540"; -} - -.fa-passport:before{ - content:"\F5AB"; -} - -.fa-pastafarianism:before{ - content:"\F67B"; -} - -.fa-paste:before{ - content:"\F0EA"; -} - -.fa-patreon:before{ - content:"\F3D9"; -} - -.fa-pause:before{ - content:"\F04C"; -} - -.fa-pause-circle:before{ - content:"\F28B"; -} - -.fa-paw:before{ - content:"\F1B0"; -} - -.fa-paypal:before{ - content:"\F1ED"; -} - -.fa-peace:before{ - content:"\F67C"; -} - -.fa-pen:before{ - content:"\F304"; -} - -.fa-pen-alt:before{ - content:"\F305"; -} - -.fa-pen-fancy:before{ - content:"\F5AC"; -} - -.fa-pen-nib:before{ - content:"\F5AD"; -} - -.fa-pen-square:before{ - content:"\F14B"; -} - -.fa-pencil-alt:before{ - content:"\F303"; -} - -.fa-pencil-ruler:before{ - content:"\F5AE"; -} - -.fa-penny-arcade:before{ - content:"\F704"; -} - -.fa-people-arrows:before{ - content:"\E068"; -} - -.fa-people-carry:before{ - content:"\F4CE"; -} - -.fa-pepper-hot:before{ - content:"\F816"; -} - -.fa-perbyte:before{ - content:"\E083"; -} - -.fa-percent:before{ - content:"\F295"; -} - -.fa-percentage:before{ - content:"\F541"; -} - -.fa-periscope:before{ - content:"\F3DA"; -} - -.fa-person-booth:before{ - content:"\F756"; -} - -.fa-phabricator:before{ - content:"\F3DB"; -} - -.fa-phoenix-framework:before{ - content:"\F3DC"; -} - -.fa-phoenix-squadron:before{ - content:"\F511"; -} - -.fa-phone:before{ - content:"\F095"; -} - -.fa-phone-alt:before{ - content:"\F879"; -} - -.fa-phone-slash:before{ - content:"\F3DD"; -} - -.fa-phone-square:before{ - content:"\F098"; -} - -.fa-phone-square-alt:before{ - content:"\F87B"; -} - -.fa-phone-volume:before{ - content:"\F2A0"; -} - -.fa-photo-video:before{ - content:"\F87C"; -} - -.fa-php:before{ - content:"\F457"; -} - -.fa-pied-piper:before{ - content:"\F2AE"; -} - -.fa-pied-piper-alt:before{ - content:"\F1A8"; -} - -.fa-pied-piper-hat:before{ - content:"\F4E5"; -} - -.fa-pied-piper-pp:before{ - content:"\F1A7"; -} - -.fa-pied-piper-square:before{ - content:"\E01E"; -} - -.fa-piggy-bank:before{ - content:"\F4D3"; -} - -.fa-pills:before{ - content:"\F484"; -} - -.fa-pinterest:before{ - content:"\F0D2"; -} - -.fa-pinterest-p:before{ - content:"\F231"; -} - -.fa-pinterest-square:before{ - content:"\F0D3"; -} - -.fa-pizza-slice:before{ - content:"\F818"; -} - -.fa-place-of-worship:before{ - content:"\F67F"; -} - -.fa-plane:before{ - content:"\F072"; -} - -.fa-plane-arrival:before{ - content:"\F5AF"; -} - -.fa-plane-departure:before{ - content:"\F5B0"; -} - -.fa-plane-slash:before{ - content:"\E069"; -} - -.fa-play:before{ - content:"\F04B"; -} - -.fa-play-circle:before{ - content:"\F144"; -} - -.fa-playstation:before{ - content:"\F3DF"; -} - -.fa-plug:before{ - content:"\F1E6"; -} - -.fa-plus:before{ - content:"\F067"; -} - -.fa-plus-circle:before{ - content:"\F055"; -} - -.fa-plus-square:before{ - content:"\F0FE"; -} - -.fa-podcast:before{ - content:"\F2CE"; -} - -.fa-poll:before{ - content:"\F681"; -} - -.fa-poll-h:before{ - content:"\F682"; -} - -.fa-poo:before{ - content:"\F2FE"; -} - -.fa-poo-storm:before{ - content:"\F75A"; -} - -.fa-poop:before{ - content:"\F619"; -} - -.fa-portrait:before{ - content:"\F3E0"; -} - -.fa-pound-sign:before{ - content:"\F154"; -} - -.fa-power-off:before{ - content:"\F011"; -} - -.fa-pray:before{ - content:"\F683"; -} - -.fa-praying-hands:before{ - content:"\F684"; -} - -.fa-prescription:before{ - content:"\F5B1"; -} - -.fa-prescription-bottle:before{ - content:"\F485"; -} - -.fa-prescription-bottle-alt:before{ - content:"\F486"; -} - -.fa-print:before{ - content:"\F02F"; -} - -.fa-procedures:before{ - content:"\F487"; -} - -.fa-product-hunt:before{ - content:"\F288"; -} - -.fa-project-diagram:before{ - content:"\F542"; -} - -.fa-pump-medical:before{ - content:"\E06A"; -} - -.fa-pump-soap:before{ - content:"\E06B"; -} - -.fa-pushed:before{ - content:"\F3E1"; -} - -.fa-puzzle-piece:before{ - content:"\F12E"; -} - -.fa-python:before{ - content:"\F3E2"; -} - -.fa-qq:before{ - content:"\F1D6"; -} - -.fa-qrcode:before{ - content:"\F029"; -} - -.fa-question:before{ - content:"\F128"; -} - -.fa-question-circle:before{ - content:"\F059"; -} - -.fa-quidditch:before{ - content:"\F458"; -} - -.fa-quinscape:before{ - content:"\F459"; -} - -.fa-quora:before{ - content:"\F2C4"; -} - -.fa-quote-left:before{ - content:"\F10D"; -} - -.fa-quote-right:before{ - content:"\F10E"; -} - -.fa-quran:before{ - content:"\F687"; -} - -.fa-r-project:before{ - content:"\F4F7"; -} - -.fa-radiation:before{ - content:"\F7B9"; -} - -.fa-radiation-alt:before{ - content:"\F7BA"; -} - -.fa-rainbow:before{ - content:"\F75B"; -} - -.fa-random:before{ - content:"\F074"; -} - -.fa-raspberry-pi:before{ - content:"\F7BB"; -} - -.fa-ravelry:before{ - content:"\F2D9"; -} - -.fa-react:before{ - content:"\F41B"; -} - -.fa-reacteurope:before{ - content:"\F75D"; -} - -.fa-readme:before{ - content:"\F4D5"; -} - -.fa-rebel:before{ - content:"\F1D0"; -} - -.fa-receipt:before{ - content:"\F543"; -} - -.fa-record-vinyl:before{ - content:"\F8D9"; -} - -.fa-recycle:before{ - content:"\F1B8"; -} - -.fa-red-river:before{ - content:"\F3E3"; -} - -.fa-reddit:before{ - content:"\F1A1"; -} - -.fa-reddit-alien:before{ - content:"\F281"; -} - -.fa-reddit-square:before{ - content:"\F1A2"; -} - -.fa-redhat:before{ - content:"\F7BC"; -} - -.fa-redo:before{ - content:"\F01E"; -} - -.fa-redo-alt:before{ - content:"\F2F9"; -} - -.fa-registered:before{ - content:"\F25D"; -} - -.fa-remove-format:before{ - content:"\F87D"; -} - -.fa-renren:before{ - content:"\F18B"; -} - -.fa-reply:before{ - content:"\F3E5"; -} - -.fa-reply-all:before{ - content:"\F122"; -} - -.fa-replyd:before{ - content:"\F3E6"; -} - -.fa-republican:before{ - content:"\F75E"; -} - -.fa-researchgate:before{ - content:"\F4F8"; -} - -.fa-resolving:before{ - content:"\F3E7"; -} - -.fa-restroom:before{ - content:"\F7BD"; -} - -.fa-retweet:before{ - content:"\F079"; -} - -.fa-rev:before{ - content:"\F5B2"; -} - -.fa-ribbon:before{ - content:"\F4D6"; -} - -.fa-ring:before{ - content:"\F70B"; -} - -.fa-road:before{ - content:"\F018"; -} - -.fa-robot:before{ - content:"\F544"; -} - -.fa-rocket:before{ - content:"\F135"; -} - -.fa-rocketchat:before{ - content:"\F3E8"; -} - -.fa-rockrms:before{ - content:"\F3E9"; -} - -.fa-route:before{ - content:"\F4D7"; -} - -.fa-rss:before{ - content:"\F09E"; -} - -.fa-rss-square:before{ - content:"\F143"; -} - -.fa-ruble-sign:before{ - content:"\F158"; -} - -.fa-ruler:before{ - content:"\F545"; -} - -.fa-ruler-combined:before{ - content:"\F546"; -} - -.fa-ruler-horizontal:before{ - content:"\F547"; -} - -.fa-ruler-vertical:before{ - content:"\F548"; -} - -.fa-running:before{ - content:"\F70C"; -} - -.fa-rupee-sign:before{ - content:"\F156"; -} - -.fa-rust:before{ - content:"\E07A"; -} - -.fa-sad-cry:before{ - content:"\F5B3"; -} - -.fa-sad-tear:before{ - content:"\F5B4"; -} - -.fa-safari:before{ - content:"\F267"; -} - -.fa-salesforce:before{ - content:"\F83B"; -} - -.fa-sass:before{ - content:"\F41E"; -} - -.fa-satellite:before{ - content:"\F7BF"; -} - -.fa-satellite-dish:before{ - content:"\F7C0"; -} - -.fa-save:before{ - content:"\F0C7"; -} - -.fa-schlix:before{ - content:"\F3EA"; -} - -.fa-school:before{ - content:"\F549"; -} - -.fa-screwdriver:before{ - content:"\F54A"; -} - -.fa-scribd:before{ - content:"\F28A"; -} - -.fa-scroll:before{ - content:"\F70E"; -} - -.fa-sd-card:before{ - content:"\F7C2"; -} - -.fa-search:before{ - content:"\F002"; -} - -.fa-search-dollar:before{ - content:"\F688"; -} - -.fa-search-location:before{ - content:"\F689"; -} - -.fa-search-minus:before{ - content:"\F010"; -} - -.fa-search-plus:before{ - content:"\F00E"; -} - -.fa-searchengin:before{ - content:"\F3EB"; -} - -.fa-seedling:before{ - content:"\F4D8"; -} - -.fa-sellcast:before{ - content:"\F2DA"; -} - -.fa-sellsy:before{ - content:"\F213"; -} - -.fa-server:before{ - content:"\F233"; -} - -.fa-servicestack:before{ - content:"\F3EC"; -} - -.fa-shapes:before{ - content:"\F61F"; -} - -.fa-share:before{ - content:"\F064"; -} - -.fa-share-alt:before{ - content:"\F1E0"; -} - -.fa-share-alt-square:before{ - content:"\F1E1"; -} - -.fa-share-square:before{ - content:"\F14D"; -} - -.fa-shekel-sign:before{ - content:"\F20B"; -} - -.fa-shield-alt:before{ - content:"\F3ED"; -} - -.fa-shield-virus:before{ - content:"\E06C"; -} - -.fa-ship:before{ - content:"\F21A"; -} - -.fa-shipping-fast:before{ - content:"\F48B"; -} - -.fa-shirtsinbulk:before{ - content:"\F214"; -} - -.fa-shoe-prints:before{ - content:"\F54B"; -} - -.fa-shopify:before{ - content:"\E057"; -} - -.fa-shopping-bag:before{ - content:"\F290"; -} - -.fa-shopping-basket:before{ - content:"\F291"; -} - -.fa-shopping-cart:before{ - content:"\F07A"; -} - -.fa-shopware:before{ - content:"\F5B5"; -} - -.fa-shower:before{ - content:"\F2CC"; -} - -.fa-shuttle-van:before{ - content:"\F5B6"; -} - -.fa-sign:before{ - content:"\F4D9"; -} - -.fa-sign-in-alt:before{ - content:"\F2F6"; -} - -.fa-sign-language:before{ - content:"\F2A7"; -} - -.fa-sign-out-alt:before{ - content:"\F2F5"; -} - -.fa-signal:before{ - content:"\F012"; -} - -.fa-signature:before{ - content:"\F5B7"; -} - -.fa-sim-card:before{ - content:"\F7C4"; -} - -.fa-simplybuilt:before{ - content:"\F215"; -} - -.fa-sink:before{ - content:"\E06D"; -} - -.fa-sistrix:before{ - content:"\F3EE"; -} - -.fa-sitemap:before{ - content:"\F0E8"; -} - -.fa-sith:before{ - content:"\F512"; -} - -.fa-skating:before{ - content:"\F7C5"; -} - -.fa-sketch:before{ - content:"\F7C6"; -} - -.fa-skiing:before{ - content:"\F7C9"; -} - -.fa-skiing-nordic:before{ - content:"\F7CA"; -} - -.fa-skull:before{ - content:"\F54C"; -} - -.fa-skull-crossbones:before{ - content:"\F714"; -} - -.fa-skyatlas:before{ - content:"\F216"; -} - -.fa-skype:before{ - content:"\F17E"; -} - -.fa-slack:before{ - content:"\F198"; -} - -.fa-slack-hash:before{ - content:"\F3EF"; -} - -.fa-slash:before{ - content:"\F715"; -} - -.fa-sleigh:before{ - content:"\F7CC"; -} - -.fa-sliders-h:before{ - content:"\F1DE"; -} - -.fa-slideshare:before{ - content:"\F1E7"; -} - -.fa-smile:before{ - content:"\F118"; -} - -.fa-smile-beam:before{ - content:"\F5B8"; -} - -.fa-smile-wink:before{ - content:"\F4DA"; -} - -.fa-smog:before{ - content:"\F75F"; -} - -.fa-smoking:before{ - content:"\F48D"; -} - -.fa-smoking-ban:before{ - content:"\F54D"; -} - -.fa-sms:before{ - content:"\F7CD"; -} - -.fa-snapchat:before{ - content:"\F2AB"; -} - -.fa-snapchat-ghost:before{ - content:"\F2AC"; -} - -.fa-snapchat-square:before{ - content:"\F2AD"; -} - -.fa-snowboarding:before{ - content:"\F7CE"; -} - -.fa-snowflake:before{ - content:"\F2DC"; -} - -.fa-snowman:before{ - content:"\F7D0"; -} - -.fa-snowplow:before{ - content:"\F7D2"; -} - -.fa-soap:before{ - content:"\E06E"; -} - -.fa-socks:before{ - content:"\F696"; -} - -.fa-solar-panel:before{ - content:"\F5BA"; -} - -.fa-sort:before{ - content:"\F0DC"; -} - -.fa-sort-alpha-down:before{ - content:"\F15D"; -} - -.fa-sort-alpha-down-alt:before{ - content:"\F881"; -} - -.fa-sort-alpha-up:before{ - content:"\F15E"; -} - -.fa-sort-alpha-up-alt:before{ - content:"\F882"; -} - -.fa-sort-amount-down:before{ - content:"\F160"; -} - -.fa-sort-amount-down-alt:before{ - content:"\F884"; -} - -.fa-sort-amount-up:before{ - content:"\F161"; -} - -.fa-sort-amount-up-alt:before{ - content:"\F885"; -} - -.fa-sort-down:before{ - content:"\F0DD"; -} - -.fa-sort-numeric-down:before{ - content:"\F162"; -} - -.fa-sort-numeric-down-alt:before{ - content:"\F886"; -} - -.fa-sort-numeric-up:before{ - content:"\F163"; -} - -.fa-sort-numeric-up-alt:before{ - content:"\F887"; -} - -.fa-sort-up:before{ - content:"\F0DE"; -} - -.fa-soundcloud:before{ - content:"\F1BE"; -} - -.fa-sourcetree:before{ - content:"\F7D3"; -} - -.fa-spa:before{ - content:"\F5BB"; -} - -.fa-space-shuttle:before{ - content:"\F197"; -} - -.fa-speakap:before{ - content:"\F3F3"; -} - -.fa-speaker-deck:before{ - content:"\F83C"; -} - -.fa-spell-check:before{ - content:"\F891"; -} - -.fa-spider:before{ - content:"\F717"; -} - -.fa-spinner:before{ - content:"\F110"; -} - -.fa-splotch:before{ - content:"\F5BC"; -} - -.fa-spotify:before{ - content:"\F1BC"; -} - -.fa-spray-can:before{ - content:"\F5BD"; -} - -.fa-square:before{ - content:"\F0C8"; -} - -.fa-square-full:before{ - content:"\F45C"; -} - -.fa-square-root-alt:before{ - content:"\F698"; -} - -.fa-squarespace:before{ - content:"\F5BE"; -} - -.fa-stack-exchange:before{ - content:"\F18D"; -} - -.fa-stack-overflow:before{ - content:"\F16C"; -} - -.fa-stackpath:before{ - content:"\F842"; -} - -.fa-stamp:before{ - content:"\F5BF"; -} - -.fa-star:before{ - content:"\F005"; -} - -.fa-star-and-crescent:before{ - content:"\F699"; -} - -.fa-star-half:before{ - content:"\F089"; -} - -.fa-star-half-alt:before{ - content:"\F5C0"; -} - -.fa-star-of-david:before{ - content:"\F69A"; -} - -.fa-star-of-life:before{ - content:"\F621"; -} - -.fa-staylinked:before{ - content:"\F3F5"; -} - -.fa-steam:before{ - content:"\F1B6"; -} - -.fa-steam-square:before{ - content:"\F1B7"; -} - -.fa-steam-symbol:before{ - content:"\F3F6"; -} - -.fa-step-backward:before{ - content:"\F048"; -} - -.fa-step-forward:before{ - content:"\F051"; -} - -.fa-stethoscope:before{ - content:"\F0F1"; -} - -.fa-sticker-mule:before{ - content:"\F3F7"; -} - -.fa-sticky-note:before{ - content:"\F249"; -} - -.fa-stop:before{ - content:"\F04D"; -} - -.fa-stop-circle:before{ - content:"\F28D"; -} - -.fa-stopwatch:before{ - content:"\F2F2"; -} - -.fa-stopwatch-20:before{ - content:"\E06F"; -} - -.fa-store:before{ - content:"\F54E"; -} - -.fa-store-alt:before{ - content:"\F54F"; -} - -.fa-store-alt-slash:before{ - content:"\E070"; -} - -.fa-store-slash:before{ - content:"\E071"; -} - -.fa-strava:before{ - content:"\F428"; -} - -.fa-stream:before{ - content:"\F550"; -} - -.fa-street-view:before{ - content:"\F21D"; -} - -.fa-strikethrough:before{ - content:"\F0CC"; -} - -.fa-stripe:before{ - content:"\F429"; -} - -.fa-stripe-s:before{ - content:"\F42A"; -} - -.fa-stroopwafel:before{ - content:"\F551"; -} - -.fa-studiovinari:before{ - content:"\F3F8"; -} - -.fa-stumbleupon:before{ - content:"\F1A4"; -} - -.fa-stumbleupon-circle:before{ - content:"\F1A3"; -} - -.fa-subscript:before{ - content:"\F12C"; -} - -.fa-subway:before{ - content:"\F239"; -} - -.fa-suitcase:before{ - content:"\F0F2"; -} - -.fa-suitcase-rolling:before{ - content:"\F5C1"; -} - -.fa-sun:before{ - content:"\F185"; -} - -.fa-superpowers:before{ - content:"\F2DD"; -} - -.fa-superscript:before{ - content:"\F12B"; -} - -.fa-supple:before{ - content:"\F3F9"; -} - -.fa-surprise:before{ - content:"\F5C2"; -} - -.fa-suse:before{ - content:"\F7D6"; -} - -.fa-swatchbook:before{ - content:"\F5C3"; -} - -.fa-swift:before{ - content:"\F8E1"; -} - -.fa-swimmer:before{ - content:"\F5C4"; -} - -.fa-swimming-pool:before{ - content:"\F5C5"; -} - -.fa-symfony:before{ - content:"\F83D"; -} - -.fa-synagogue:before{ - content:"\F69B"; -} - -.fa-sync:before{ - content:"\F021"; -} - -.fa-sync-alt:before{ - content:"\F2F1"; -} - -.fa-syringe:before{ - content:"\F48E"; -} - -.fa-table:before{ - content:"\F0CE"; -} - -.fa-table-tennis:before{ - content:"\F45D"; -} - -.fa-tablet:before{ - content:"\F10A"; -} - -.fa-tablet-alt:before{ - content:"\F3FA"; -} - -.fa-tablets:before{ - content:"\F490"; -} - -.fa-tachometer-alt:before{ - content:"\F3FD"; -} - -.fa-tag:before{ - content:"\F02B"; -} - -.fa-tags:before{ - content:"\F02C"; -} - -.fa-tape:before{ - content:"\F4DB"; -} - -.fa-tasks:before{ - content:"\F0AE"; -} - -.fa-taxi:before{ - content:"\F1BA"; -} - -.fa-teamspeak:before{ - content:"\F4F9"; -} - -.fa-teeth:before{ - content:"\F62E"; -} - -.fa-teeth-open:before{ - content:"\F62F"; -} - -.fa-telegram:before{ - content:"\F2C6"; -} - -.fa-telegram-plane:before{ - content:"\F3FE"; -} - -.fa-temperature-high:before{ - content:"\F769"; -} - -.fa-temperature-low:before{ - content:"\F76B"; -} - -.fa-tencent-weibo:before{ - content:"\F1D5"; -} - -.fa-tenge:before{ - content:"\F7D7"; -} - -.fa-terminal:before{ - content:"\F120"; -} - -.fa-text-height:before{ - content:"\F034"; -} - -.fa-text-width:before{ - content:"\F035"; -} - -.fa-th:before{ - content:"\F00A"; -} - -.fa-th-large:before{ - content:"\F009"; -} - -.fa-th-list:before{ - content:"\F00B"; -} - -.fa-the-red-yeti:before{ - content:"\F69D"; -} - -.fa-theater-masks:before{ - content:"\F630"; -} - -.fa-themeco:before{ - content:"\F5C6"; -} - -.fa-themeisle:before{ - content:"\F2B2"; -} - -.fa-thermometer:before{ - content:"\F491"; -} - -.fa-thermometer-empty:before{ - content:"\F2CB"; -} - -.fa-thermometer-full:before{ - content:"\F2C7"; -} - -.fa-thermometer-half:before{ - content:"\F2C9"; -} - -.fa-thermometer-quarter:before{ - content:"\F2CA"; -} - -.fa-thermometer-three-quarters:before{ - content:"\F2C8"; -} - -.fa-think-peaks:before{ - content:"\F731"; -} - -.fa-thumbs-down:before{ - content:"\F165"; -} - -.fa-thumbs-up:before{ - content:"\F164"; -} - -.fa-thumbtack:before{ - content:"\F08D"; -} - -.fa-ticket-alt:before{ - content:"\F3FF"; -} - -.fa-tiktok:before{ - content:"\E07B"; -} - -.fa-times:before{ - content:"\F00D"; -} - -.fa-times-circle:before{ - content:"\F057"; -} - -.fa-tint:before{ - content:"\F043"; -} - -.fa-tint-slash:before{ - content:"\F5C7"; -} - -.fa-tired:before{ - content:"\F5C8"; -} - -.fa-toggle-off:before{ - content:"\F204"; -} - -.fa-toggle-on:before{ - content:"\F205"; -} - -.fa-toilet:before{ - content:"\F7D8"; -} - -.fa-toilet-paper:before{ - content:"\F71E"; -} - -.fa-toilet-paper-slash:before{ - content:"\E072"; -} - -.fa-toolbox:before{ - content:"\F552"; -} - -.fa-tools:before{ - content:"\F7D9"; -} - -.fa-tooth:before{ - content:"\F5C9"; -} - -.fa-torah:before{ - content:"\F6A0"; -} - -.fa-torii-gate:before{ - content:"\F6A1"; -} - -.fa-tractor:before{ - content:"\F722"; -} - -.fa-trade-federation:before{ - content:"\F513"; -} - -.fa-trademark:before{ - content:"\F25C"; -} - -.fa-traffic-light:before{ - content:"\F637"; -} - -.fa-trailer:before{ - content:"\E041"; -} - -.fa-train:before{ - content:"\F238"; -} - -.fa-tram:before{ - content:"\F7DA"; -} - -.fa-transgender:before{ - content:"\F224"; -} - -.fa-transgender-alt:before{ - content:"\F225"; -} - -.fa-trash:before{ - content:"\F1F8"; -} - -.fa-trash-alt:before{ - content:"\F2ED"; -} - -.fa-trash-restore:before{ - content:"\F829"; -} - -.fa-trash-restore-alt:before{ - content:"\F82A"; -} - -.fa-tree:before{ - content:"\F1BB"; -} - -.fa-trello:before{ - content:"\F181"; -} - -.fa-tripadvisor:before{ - content:"\F262"; -} - -.fa-trophy:before{ - content:"\F091"; -} - -.fa-truck:before{ - content:"\F0D1"; -} - -.fa-truck-loading:before{ - content:"\F4DE"; -} - -.fa-truck-monster:before{ - content:"\F63B"; -} - -.fa-truck-moving:before{ - content:"\F4DF"; -} - -.fa-truck-pickup:before{ - content:"\F63C"; -} - -.fa-tshirt:before{ - content:"\F553"; -} - -.fa-tty:before{ - content:"\F1E4"; -} - -.fa-tumblr:before{ - content:"\F173"; -} - -.fa-tumblr-square:before{ - content:"\F174"; -} - -.fa-tv:before{ - content:"\F26C"; -} - -.fa-twitch:before{ - content:"\F1E8"; -} - -.fa-twitter:before{ - content:"\F099"; -} - -.fa-twitter-square:before{ - content:"\F081"; -} - -.fa-typo3:before{ - content:"\F42B"; -} - -.fa-uber:before{ - content:"\F402"; -} - -.fa-ubuntu:before{ - content:"\F7DF"; -} - -.fa-uikit:before{ - content:"\F403"; -} - -.fa-umbraco:before{ - content:"\F8E8"; -} - -.fa-umbrella:before{ - content:"\F0E9"; -} - -.fa-umbrella-beach:before{ - content:"\F5CA"; -} - -.fa-uncharted:before{ - content:"\E084"; -} - -.fa-underline:before{ - content:"\F0CD"; -} - -.fa-undo:before{ - content:"\F0E2"; -} - -.fa-undo-alt:before{ - content:"\F2EA"; -} - -.fa-uniregistry:before{ - content:"\F404"; -} - -.fa-unity:before{ - content:"\E049"; -} - -.fa-universal-access:before{ - content:"\F29A"; -} - -.fa-university:before{ - content:"\F19C"; -} - -.fa-unlink:before{ - content:"\F127"; -} - -.fa-unlock:before{ - content:"\F09C"; -} - -.fa-unlock-alt:before{ - content:"\F13E"; -} - -.fa-unsplash:before{ - content:"\E07C"; -} - -.fa-untappd:before{ - content:"\F405"; -} - -.fa-upload:before{ - content:"\F093"; -} - -.fa-ups:before{ - content:"\F7E0"; -} - -.fa-usb:before{ - content:"\F287"; -} - -.fa-user:before{ - content:"\F007"; -} - -.fa-user-alt:before{ - content:"\F406"; -} - -.fa-user-alt-slash:before{ - content:"\F4FA"; -} - -.fa-user-astronaut:before{ - content:"\F4FB"; -} - -.fa-user-check:before{ - content:"\F4FC"; -} - -.fa-user-circle:before{ - content:"\F2BD"; -} - -.fa-user-clock:before{ - content:"\F4FD"; -} - -.fa-user-cog:before{ - content:"\F4FE"; -} - -.fa-user-edit:before{ - content:"\F4FF"; -} - -.fa-user-friends:before{ - content:"\F500"; -} - -.fa-user-graduate:before{ - content:"\F501"; -} - -.fa-user-injured:before{ - content:"\F728"; -} - -.fa-user-lock:before{ - content:"\F502"; -} - -.fa-user-md:before{ - content:"\F0F0"; -} - -.fa-user-minus:before{ - content:"\F503"; -} - -.fa-user-ninja:before{ - content:"\F504"; -} - -.fa-user-nurse:before{ - content:"\F82F"; -} - -.fa-user-plus:before{ - content:"\F234"; -} - -.fa-user-secret:before{ - content:"\F21B"; -} - -.fa-user-shield:before{ - content:"\F505"; -} - -.fa-user-slash:before{ - content:"\F506"; -} - -.fa-user-tag:before{ - content:"\F507"; -} - -.fa-user-tie:before{ - content:"\F508"; -} - -.fa-user-times:before{ - content:"\F235"; -} - -.fa-users:before{ - content:"\F0C0"; -} - -.fa-users-cog:before{ - content:"\F509"; -} - -.fa-users-slash:before{ - content:"\E073"; -} - -.fa-usps:before{ - content:"\F7E1"; -} - -.fa-ussunnah:before{ - content:"\F407"; -} - -.fa-utensil-spoon:before{ - content:"\F2E5"; -} - -.fa-utensils:before{ - content:"\F2E7"; -} - -.fa-vaadin:before{ - content:"\F408"; -} - -.fa-vector-square:before{ - content:"\F5CB"; -} - -.fa-venus:before{ - content:"\F221"; -} - -.fa-venus-double:before{ - content:"\F226"; -} - -.fa-venus-mars:before{ - content:"\F228"; -} - -.fa-vest:before{ - content:"\E085"; -} - -.fa-vest-patches:before{ - content:"\E086"; -} - -.fa-viacoin:before{ - content:"\F237"; -} - -.fa-viadeo:before{ - content:"\F2A9"; -} - -.fa-viadeo-square:before{ - content:"\F2AA"; -} - -.fa-vial:before{ - content:"\F492"; -} - -.fa-vials:before{ - content:"\F493"; -} - -.fa-viber:before{ - content:"\F409"; -} - -.fa-video:before{ - content:"\F03D"; -} - -.fa-video-slash:before{ - content:"\F4E2"; -} - -.fa-vihara:before{ - content:"\F6A7"; -} - -.fa-vimeo:before{ - content:"\F40A"; -} - -.fa-vimeo-square:before{ - content:"\F194"; -} - -.fa-vimeo-v:before{ - content:"\F27D"; -} - -.fa-vine:before{ - content:"\F1CA"; -} - -.fa-virus:before{ - content:"\E074"; -} - -.fa-virus-slash:before{ - content:"\E075"; -} - -.fa-viruses:before{ - content:"\E076"; -} - -.fa-vk:before{ - content:"\F189"; -} - -.fa-vnv:before{ - content:"\F40B"; -} - -.fa-voicemail:before{ - content:"\F897"; -} - -.fa-volleyball-ball:before{ - content:"\F45F"; -} - -.fa-volume-down:before{ - content:"\F027"; -} - -.fa-volume-mute:before{ - content:"\F6A9"; -} - -.fa-volume-off:before{ - content:"\F026"; -} - -.fa-volume-up:before{ - content:"\F028"; -} - -.fa-vote-yea:before{ - content:"\F772"; -} - -.fa-vr-cardboard:before{ - content:"\F729"; -} - -.fa-vuejs:before{ - content:"\F41F"; -} - -.fa-walking:before{ - content:"\F554"; -} - -.fa-wallet:before{ - content:"\F555"; -} - -.fa-warehouse:before{ - content:"\F494"; -} - -.fa-watchman-monitoring:before{ - content:"\E087"; -} - -.fa-water:before{ - content:"\F773"; -} - -.fa-wave-square:before{ - content:"\F83E"; -} - -.fa-waze:before{ - content:"\F83F"; -} - -.fa-weebly:before{ - content:"\F5CC"; -} - -.fa-weibo:before{ - content:"\F18A"; -} - -.fa-weight:before{ - content:"\F496"; -} - -.fa-weight-hanging:before{ - content:"\F5CD"; -} - -.fa-weixin:before{ - content:"\F1D7"; -} - -.fa-whatsapp:before{ - content:"\F232"; -} - -.fa-whatsapp-square:before{ - content:"\F40C"; -} - -.fa-wheelchair:before{ - content:"\F193"; -} - -.fa-whmcs:before{ - content:"\F40D"; -} - -.fa-wifi:before{ - content:"\F1EB"; -} - -.fa-wikipedia-w:before{ - content:"\F266"; -} - -.fa-wind:before{ - content:"\F72E"; -} - -.fa-window-close:before{ - content:"\F410"; -} - -.fa-window-maximize:before{ - content:"\F2D0"; -} - -.fa-window-minimize:before{ - content:"\F2D1"; -} - -.fa-window-restore:before{ - content:"\F2D2"; -} - -.fa-windows:before{ - content:"\F17A"; -} - -.fa-wine-bottle:before{ - content:"\F72F"; -} - -.fa-wine-glass:before{ - content:"\F4E3"; -} - -.fa-wine-glass-alt:before{ - content:"\F5CE"; -} - -.fa-wix:before{ - content:"\F5CF"; -} - -.fa-wizards-of-the-coast:before{ - content:"\F730"; -} - -.fa-wodu:before{ - content:"\E088"; -} - -.fa-wolf-pack-battalion:before{ - content:"\F514"; -} - -.fa-won-sign:before{ - content:"\F159"; -} - -.fa-wordpress:before{ - content:"\F19A"; -} - -.fa-wordpress-simple:before{ - content:"\F411"; -} - -.fa-wpbeginner:before{ - content:"\F297"; -} - -.fa-wpexplorer:before{ - content:"\F2DE"; -} - -.fa-wpforms:before{ - content:"\F298"; -} - -.fa-wpressr:before{ - content:"\F3E4"; -} - -.fa-wrench:before{ - content:"\F0AD"; -} - -.fa-x-ray:before{ - content:"\F497"; -} - -.fa-xbox:before{ - content:"\F412"; -} - -.fa-xing:before{ - content:"\F168"; -} - -.fa-xing-square:before{ - content:"\F169"; -} - -.fa-y-combinator:before{ - content:"\F23B"; -} - -.fa-yahoo:before{ - content:"\F19E"; -} - -.fa-yammer:before{ - content:"\F840"; -} - -.fa-yandex:before{ - content:"\F413"; -} - -.fa-yandex-international:before{ - content:"\F414"; -} - -.fa-yarn:before{ - content:"\F7E3"; -} - -.fa-yelp:before{ - content:"\F1E9"; -} - -.fa-yen-sign:before{ - content:"\F157"; -} - -.fa-yin-yang:before{ - content:"\F6AD"; -} - -.fa-yoast:before{ - content:"\F2B1"; -} - -.fa-youtube:before{ - content:"\F167"; -} - -.fa-youtube-square:before{ - content:"\F431"; -} - -.fa-zhihu:before{ - content:"\F63F"; -} - -.sr-only{ - border:0; - clip:rect(0, 0, 0, 0); - height:1px; - margin:-1px; - overflow:hidden; - padding:0; - position:absolute; - width:1px; -} - -.sr-only-focusable:active, .sr-only-focusable:focus{ - clip:auto; - height:auto; - margin:0; - overflow:visible; - position:static; - width:auto; -} -@font-face{ - font-family:"Font Awesome 5 Free"; - font-style:normal; - font-weight:400; - font-display:block; - src:url("../../webfonts/fa-regular-400.eot"); - src:url("../../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../../webfonts/fa-regular-400.woff2") format("woff2"), url("../../webfonts/fa-regular-400.woff") format("woff"), url("../../webfonts/fa-regular-400.ttf") format("truetype"), url("../../webfonts/fa-regular-400.svg#fontawesome") format("svg"); -} -.far{ - font-family:"Font Awesome 5 Free"; - font-weight:400; -} -@font-face{ - font-family:"Font Awesome 5 Free"; - font-style:normal; - font-weight:900; - font-display:block; - src:url("../../webfonts/fa-solid-900.eot"); - src:url("../../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../../webfonts/fa-solid-900.woff2") format("woff2"), url("../../webfonts/fa-solid-900.woff") format("woff"), url("../../webfonts/fa-solid-900.ttf") format("truetype"), url("../../webfonts/fa-solid-900.svg#fontawesome") format("svg"); -} -.fa, -.fas{ - font-family:"Font Awesome 5 Free"; - font-weight:900; -} -@font-face{ - font-family:"Font Awesome 5 Brands"; - font-style:normal; - font-weight:400; - font-display:block; - src:url("../../webfonts/fa-brands-400.eot"); - src:url("../../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../../webfonts/fa-brands-400.woff2") format("woff2"), url("../../webfonts/fa-brands-400.woff") format("woff"), url("../../webfonts/fa-brands-400.ttf") format("truetype"), url("../../webfonts/fa-brands-400.svg#fontawesome") format("svg"); -} -.fab{ - font-family:"Font Awesome 5 Brands"; - font-weight:400; -} - -body.compensate-for-scrollbar{ - overflow:hidden; -} - -.fancybox-active{ - height:auto; -} - -.fancybox-is-hidden{ - left:-9999px; - margin:0; - position:absolute !important; - top:-9999px; - visibility:hidden; -} - -.fancybox-container{ - -webkit-backface-visibility:hidden; - height:100%; - left:0; - outline:none; - position:fixed; - -webkit-tap-highlight-color:transparent; - top:0; - touch-action:manipulation; - transform:translateZ(0); - width:100%; - z-index:99992; -} - -.fancybox-container *{ - box-sizing:border-box; -} - -.fancybox-outer, -.fancybox-inner, -.fancybox-bg, -.fancybox-stage{ - bottom:0; - left:0; - position:absolute; - right:0; - top:0; -} - -.fancybox-outer{ - -webkit-overflow-scrolling:touch; - overflow-y:auto; -} - -.fancybox-bg{ - background:rgb(30, 30, 30); - opacity:0; - transition-duration:inherit; - transition-property:opacity; - transition-timing-function:cubic-bezier(0.47, 0, 0.74, 0.71); -} - -.fancybox-is-open .fancybox-bg{ - opacity:0.9; - transition-timing-function:cubic-bezier(0.22, 0.61, 0.36, 1); -} - -.fancybox-infobar, -.fancybox-toolbar, -.fancybox-caption, -.fancybox-navigation .fancybox-button{ - direction:ltr; - opacity:0; - position:absolute; - transition:opacity 0.25s ease, visibility 0s ease 0.25s; - visibility:hidden; - z-index:99997; -} - -.fancybox-show-infobar .fancybox-infobar, -.fancybox-show-toolbar .fancybox-toolbar, -.fancybox-show-caption .fancybox-caption, -.fancybox-show-nav .fancybox-navigation .fancybox-button{ - opacity:1; - transition:opacity 0.25s ease 0s, visibility 0s ease 0s; - visibility:visible; -} - -.fancybox-infobar{ - color:#ccc; - font-size:13px; - -webkit-font-smoothing:subpixel-antialiased; - height:44px; - left:0; - line-height:44px; - min-width:44px; - mix-blend-mode:difference; - padding:0 10px; - pointer-events:none; - top:0; - -webkit-touch-callout:none; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; -} - -.fancybox-toolbar{ - right:0; - top:0; -} - -.fancybox-stage{ - direction:ltr; - overflow:visible; - transform:translateZ(0); - z-index:99994; -} - -.fancybox-is-open .fancybox-stage{ - overflow:hidden; -} - -.fancybox-slide{ - -webkit-backface-visibility:hidden; - display:none; - height:100%; - left:0; - outline:none; - overflow:auto; - -webkit-overflow-scrolling:touch; - padding:44px; - position:absolute; - text-align:center; - top:0; - transition-property:transform, opacity; - white-space:normal; - width:100%; - z-index:99994; -} - -.fancybox-slide::before{ - content:""; - display:inline-block; - font-size:0; - height:100%; - vertical-align:middle; - width:0; -} - -.fancybox-is-sliding .fancybox-slide, -.fancybox-slide--previous, -.fancybox-slide--current, -.fancybox-slide--next{ - display:block; -} - -.fancybox-slide--image{ - overflow:hidden; - padding:44px 0; -} - -.fancybox-slide--image::before{ - display:none; -} - -.fancybox-slide--html{ - padding:6px; -} - -.fancybox-content{ - background:#fff; - display:inline-block; - margin:0; - max-width:100%; - overflow:auto; - -webkit-overflow-scrolling:touch; - padding:44px; - position:relative; - text-align:left; - vertical-align:middle; -} - -.fancybox-slide--image .fancybox-content{ - -webkit-animation-timing-function:cubic-bezier(0.5, 0, 0.14, 1); - animation-timing-function:cubic-bezier(0.5, 0, 0.14, 1); - -webkit-backface-visibility:hidden; - background:transparent; - background-repeat:no-repeat; - background-size:100% 100%; - left:0; - max-width:none; - overflow:visible; - padding:0; - position:absolute; - top:0; - transform-origin:top left; - transition-property:transform, opacity; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; - z-index:99995; -} - -.fancybox-can-zoomOut .fancybox-content{ - cursor:zoom-out; -} - -.fancybox-can-zoomIn .fancybox-content{ - cursor:zoom-in; -} - -.fancybox-can-swipe .fancybox-content, -.fancybox-can-pan .fancybox-content{ - cursor:-webkit-grab; - cursor:grab; -} - -.fancybox-is-grabbing .fancybox-content{ - cursor:-webkit-grabbing; - cursor:grabbing; -} - -.fancybox-container [data-selectable=true]{ - cursor:text; -} - -.fancybox-image, -.fancybox-spaceball{ - background:transparent; - border:0; - height:100%; - left:0; - margin:0; - max-height:none; - max-width:none; - padding:0; - position:absolute; - top:0; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; - width:100%; -} - -.fancybox-spaceball{ - z-index:1; -} - -.fancybox-slide--video .fancybox-content, -.fancybox-slide--map .fancybox-content, -.fancybox-slide--pdf .fancybox-content, -.fancybox-slide--iframe .fancybox-content{ - height:100%; - overflow:visible; - padding:0; - width:100%; -} - -.fancybox-slide--video .fancybox-content{ - background:#000; -} - -.fancybox-slide--map .fancybox-content{ - background:#e5e3df; -} - -.fancybox-slide--iframe .fancybox-content{ - background:#fff; -} - -.fancybox-video, -.fancybox-iframe{ - background:transparent; - border:0; - display:block; - height:100%; - margin:0; - overflow:hidden; - padding:0; - width:100%; -} -.fancybox-iframe{ - left:0; - position:absolute; - top:0; -} - -.fancybox-error{ - background:#fff; - cursor:default; - max-width:400px; - padding:40px; - width:100%; -} - -.fancybox-error p{ - color:#444; - font-size:16px; - line-height:20px; - margin:0; - padding:0; -} -.fancybox-button{ - background:rgba(30, 30, 30, 0.6); - border:0; - border-radius:0; - box-shadow:none; - cursor:pointer; - display:inline-block; - height:44px; - margin:0; - padding:10px; - position:relative; - transition:color 0.2s; - vertical-align:top; - visibility:inherit; - width:44px; -} - -.fancybox-button, -.fancybox-button:visited, -.fancybox-button:link{ - color:#ccc; -} - -.fancybox-button:hover{ - color:#fff; -} - -.fancybox-button:focus{ - outline:none; -} - -.fancybox-button.fancybox-focus{ - outline:1px dotted; -} - -.fancybox-button[disabled], -.fancybox-button[disabled]:hover{ - color:#888; - cursor:default; - outline:none; -} -.fancybox-button div{ - height:100%; -} - -.fancybox-button svg{ - display:block; - height:100%; - overflow:visible; - position:relative; - width:100%; -} - -.fancybox-button svg path{ - fill:currentColor; - stroke-width:0; -} - -.fancybox-button--play svg:nth-child(2), -.fancybox-button--fsenter svg:nth-child(2){ - display:none; -} - -.fancybox-button--pause svg:nth-child(1), -.fancybox-button--fsexit svg:nth-child(1){ - display:none; -} - -.fancybox-progress{ - background:#ff5268; - height:2px; - left:0; - position:absolute; - right:0; - top:0; - transform:scaleX(0); - transform-origin:0; - transition-property:transform; - transition-timing-function:linear; - z-index:99998; -} -.fancybox-close-small{ - background:transparent; - border:0; - border-radius:0; - color:#ccc; - cursor:pointer; - opacity:0.8; - padding:8px; - position:absolute; - right:-12px; - top:-44px; - z-index:401; -} - -.fancybox-close-small:hover{ - color:#fff; - opacity:1; -} - -.fancybox-slide--html .fancybox-close-small{ - color:currentColor; - padding:10px; - right:0; - top:0; -} - -.fancybox-slide--image.fancybox-is-scaling .fancybox-content{ - overflow:hidden; -} - -.fancybox-is-scaling .fancybox-close-small, -.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small{ - display:none; -} -.fancybox-navigation .fancybox-button{ - background-clip:content-box; - height:100px; - opacity:0; - position:absolute; - top:calc(50% - 50px); - width:70px; -} - -.fancybox-navigation .fancybox-button div{ - padding:7px; -} - -.fancybox-navigation .fancybox-button--arrow_left{ - left:0; - left:env(safe-area-inset-left); - padding:31px 26px 31px 6px; -} - -.fancybox-navigation .fancybox-button--arrow_right{ - padding:31px 6px 31px 26px; - right:0; - right:env(safe-area-inset-right); -} -.fancybox-caption{ - background:linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.3) 50%, rgba(0, 0, 0, 0.15) 65%, rgba(0, 0, 0, 0.075) 75.5%, rgba(0, 0, 0, 0.037) 82.85%, rgba(0, 0, 0, 0.019) 88%, rgba(0, 0, 0, 0) 100%); - bottom:0; - color:#eee; - font-size:14px; - font-weight:400; - left:0; - line-height:1.5; - padding:75px 44px 25px 44px; - pointer-events:none; - right:0; - text-align:center; - z-index:99996; -} - -@supports (padding: max(0px)){ - .fancybox-caption{ - padding:75px max(44px, env(safe-area-inset-right)) max(25px, env(safe-area-inset-bottom)) max(44px, env(safe-area-inset-left)); - } -} -.fancybox-caption--separate{ - margin-top:-50px; -} - -.fancybox-caption__body{ - max-height:50vh; - overflow:auto; - pointer-events:all; -} - -.fancybox-caption a, -.fancybox-caption a:link, -.fancybox-caption a:visited{ - color:#ccc; - text-decoration:none; -} - -.fancybox-caption a:hover{ - color:#fff; - text-decoration:underline; -} -.fancybox-loading{ - -webkit-animation:fancybox-rotate 1s linear infinite; - animation:fancybox-rotate 1s linear infinite; - background:transparent; - border:4px solid #888; - border-bottom-color:#fff; - border-radius:50%; - height:50px; - left:50%; - margin:-25px 0 0 -25px; - opacity:0.7; - padding:0; - position:absolute; - top:50%; - width:50px; - z-index:99999; -} - -@-webkit-keyframes fancybox-rotate{ - 100%{ - transform:rotate(360deg); - } -} - -@keyframes fancybox-rotate{ - 100%{ - transform:rotate(360deg); - } -} -.fancybox-animated{ - transition-timing-function:cubic-bezier(0, 0, 0.25, 1); -} -.fancybox-fx-slide.fancybox-slide--previous{ - opacity:0; - transform:translate3d(-100%, 0, 0); -} - -.fancybox-fx-slide.fancybox-slide--next{ - opacity:0; - transform:translate3d(100%, 0, 0); -} - -.fancybox-fx-slide.fancybox-slide--current{ - opacity:1; - transform:translate3d(0, 0, 0); -} -.fancybox-fx-fade.fancybox-slide--previous, -.fancybox-fx-fade.fancybox-slide--next{ - opacity:0; - transition-timing-function:cubic-bezier(0.19, 1, 0.22, 1); -} - -.fancybox-fx-fade.fancybox-slide--current{ - opacity:1; -} -.fancybox-fx-zoom-in-out.fancybox-slide--previous{ - opacity:0; - transform:scale3d(1.5, 1.5, 1.5); -} - -.fancybox-fx-zoom-in-out.fancybox-slide--next{ - opacity:0; - transform:scale3d(0.5, 0.5, 0.5); -} - -.fancybox-fx-zoom-in-out.fancybox-slide--current{ - opacity:1; - transform:scale3d(1, 1, 1); -} -.fancybox-fx-rotate.fancybox-slide--previous{ - opacity:0; - transform:rotate(-360deg); -} - -.fancybox-fx-rotate.fancybox-slide--next{ - opacity:0; - transform:rotate(360deg); -} - -.fancybox-fx-rotate.fancybox-slide--current{ - opacity:1; - transform:rotate(0deg); -} -.fancybox-fx-circular.fancybox-slide--previous{ - opacity:0; - transform:scale3d(0, 0, 0) translate3d(-100%, 0, 0); -} - -.fancybox-fx-circular.fancybox-slide--next{ - opacity:0; - transform:scale3d(0, 0, 0) translate3d(100%, 0, 0); -} - -.fancybox-fx-circular.fancybox-slide--current{ - opacity:1; - transform:scale3d(1, 1, 1) translate3d(0, 0, 0); -} -.fancybox-fx-tube.fancybox-slide--previous{ - transform:translate3d(-100%, 0, 0) scale(0.1) skew(-10deg); -} - -.fancybox-fx-tube.fancybox-slide--next{ - transform:translate3d(100%, 0, 0) scale(0.1) skew(10deg); -} - -.fancybox-fx-tube.fancybox-slide--current{ - transform:translate3d(0, 0, 0) scale(1); -} -@media all and (max-height: 576px){ - .fancybox-slide{ - padding-left:6px; - padding-right:6px; - } - - .fancybox-slide--image{ - padding:6px 0; - } - - .fancybox-close-small{ - right:-6px; - } - - .fancybox-slide--image .fancybox-close-small{ - background:#4e4e4e; - color:#f2f4f6; - height:36px; - opacity:1; - padding:6px; - right:0; - top:0; - width:36px; - } - - .fancybox-caption{ - padding-left:12px; - padding-right:12px; - } - - @supports (padding: max(0px)){ - .fancybox-caption{ - padding-left:max(12px, env(safe-area-inset-left)); - padding-right:max(12px, env(safe-area-inset-right)); - } - } -} -.fancybox-share{ - background:#f4f4f4; - border-radius:3px; - max-width:90%; - padding:30px; - text-align:center; -} - -.fancybox-share h1, .fancybox-share .h1{ - color:#222; - font-size:35px; - font-weight:700; - margin:0 0 20px 0; -} - -.fancybox-share p{ - margin:0; - padding:0; -} - -.fancybox-share__button{ - border:0; - border-radius:3px; - display:inline-block; - font-size:14px; - font-weight:700; - line-height:40px; - margin:0 5px 10px 5px; - min-width:130px; - padding:0 15px; - text-decoration:none; - transition:all 0.2s; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; - white-space:nowrap; -} - -.fancybox-share__button:visited, -.fancybox-share__button:link{ - color:#fff; -} - -.fancybox-share__button:hover{ - text-decoration:none; -} - -.fancybox-share__button--fb{ - background:#3b5998; -} - -.fancybox-share__button--fb:hover{ - background:#344e86; -} - -.fancybox-share__button--pt{ - background:#bd081d; -} - -.fancybox-share__button--pt:hover{ - background:#aa0719; -} - -.fancybox-share__button--tw{ - background:#1da1f2; -} - -.fancybox-share__button--tw:hover{ - background:#0d95e8; -} - -.fancybox-share__button svg{ - height:25px; - margin-right:7px; - position:relative; - top:-1px; - vertical-align:middle; - width:25px; -} - -.fancybox-share__button svg path{ - fill:#fff; -} - -.fancybox-share__input{ - background:transparent; - border:0; - border-bottom:1px solid #d7d7d7; - border-radius:0; - color:#5d5b5b; - font-size:14px; - margin:10px 0 0 0; - outline:none; - padding:10px 15px; - width:100%; -} -.fancybox-thumbs{ - background:#ddd; - bottom:0; - display:none; - margin:0; - -webkit-overflow-scrolling:touch; - -ms-overflow-style:-ms-autohiding-scrollbar; - padding:2px 2px 4px 2px; - position:absolute; - right:0; - -webkit-tap-highlight-color:rgba(0, 0, 0, 0); - top:0; - width:212px; - z-index:99995; -} - -.fancybox-thumbs-x{ - overflow-x:auto; - overflow-y:hidden; -} - -.fancybox-show-thumbs .fancybox-thumbs{ - display:block; -} - -.fancybox-show-thumbs .fancybox-inner{ - right:212px; -} - -.fancybox-thumbs__list{ - font-size:0; - height:100%; - list-style:none; - margin:0; - overflow-x:hidden; - overflow-y:auto; - padding:0; - position:absolute; - position:relative; - white-space:nowrap; - width:100%; -} - -.fancybox-thumbs-x .fancybox-thumbs__list{ - overflow:hidden; -} - -.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar{ - width:7px; -} - -.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track{ - background:#fff; - border-radius:10px; - box-shadow:inset 0 0 6px rgba(0, 0, 0, 0.3); -} - -.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb{ - background:#2a2a2a; - border-radius:10px; -} - -.fancybox-thumbs__list a{ - -webkit-backface-visibility:hidden; - backface-visibility:hidden; - background-color:rgba(0, 0, 0, 0.1); - background-position:center center; - background-repeat:no-repeat; - background-size:cover; - cursor:pointer; - float:left; - height:75px; - margin:2px; - max-height:calc(100% - 8px); - max-width:calc(50% - 4px); - outline:none; - overflow:hidden; - padding:0; - position:relative; - -webkit-tap-highlight-color:transparent; - width:100px; -} - -.fancybox-thumbs__list a::before{ - border:6px solid #ff5268; - bottom:0; - content:""; - left:0; - opacity:0; - position:absolute; - right:0; - top:0; - transition:all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); - z-index:99991; -} - -.fancybox-thumbs__list a:focus::before{ - opacity:0.5; -} - -.fancybox-thumbs__list a.fancybox-thumbs-active::before{ - opacity:1; -} -@media all and (max-width: 576px){ - .fancybox-thumbs{ - width:110px; - } - - .fancybox-show-thumbs .fancybox-inner{ - right:110px; - } - - .fancybox-thumbs__list a{ - max-width:calc(100% - 10px); - } -} -.display{ - display:block !important; -} - -.display-none{ - display:none !important; -} - -.display-none-weak{ - display:none; -} - -.display-flex{ - display:flex !important; -} -.modal-container{ - max-width:500px; - padding:0; - margin:20px 0; - border-radius:0.3em; - box-shadow:0 0.1em 0.4em rgba(0, 0, 0, 0.3); -} - -.modal-title{ - font-weight:700; - padding:1.5em; - font-family:"Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif; -} - -.modal-body{ - max-height:calc(100vh - 230px); - min-height:50px; - padding:0 1.5em 1.5em 1.5em; - overflow-y:auto; -} - -.modal-footer{ - padding:1.5em; - text-align:right; -} - -p:first-child{ - margin-top:0; -} - -.tooltip{ - background:#333; - color:white; - font-weight:bold; - padding:4px 8px; - font-size:13px; - border-radius:4px; - width:120px; -} - -.tooltip[data-show]{ - display:block; - opacity:1; -} - -.arrow, -.arrow::before{ - position:absolute; - width:8px; - height:8px; - background:inherit; -} - -.arrow{ - visibility:hidden; -} - -.arrow::before{ - visibility:visible; - content:""; - transform:rotate(45deg); -} - -.tooltip[x-placement^=top] > .arrow{ - bottom:-4px; -} - -.tooltip[x-placement^=bottom] > .arrow{ - top:-4px; -} - -.tooltip[x-placement^=left] > .arrow{ - right:-4px; -} - -.tooltip[x-placement^=right] > .arrow{ - left:-4px; -} - -.icon-size, .check-green, .cross-red{ - font-size:20px; -} - -.cross-red{ - color:crimson; -} - -.check-green{ - color:seagreen; -} -:root{ - --bs-blue:#0d6efd; - --bs-indigo:#6610f2; - --bs-purple:#6f42c1; - --bs-pink:#d63384; - --bs-red:#dc3545; - --bs-orange:#fd7e14; - --bs-yellow:#ffc107; - --bs-green:#198754; - --bs-teal:#20c997; - --bs-cyan:#0dcaf0; - --bs-white:#fff; - --bs-gray:#6c757d; - --bs-gray-dark:#343a40; - --bs-gray-100:#f8f9fa; - --bs-gray-200:#e9ecef; - --bs-gray-300:#dee2e6; - --bs-gray-400:#ced4da; - --bs-gray-500:#adb5bd; - --bs-gray-600:#6c757d; - --bs-gray-700:#495057; - --bs-gray-800:#343a40; - --bs-gray-900:#212529; - --bs-primary:#0d6efd; - --bs-secondary:#6c757d; - --bs-success:#198754; - --bs-info:#0dcaf0; - --bs-warning:#ffc107; - --bs-danger:#dc3545; - --bs-light:#f8f9fa; - --bs-dark:#212529; - --bs-primary-rgb:13, 110, 253; - --bs-secondary-rgb:108, 117, 125; - --bs-success-rgb:25, 135, 84; - --bs-info-rgb:13, 202, 240; - --bs-warning-rgb:255, 193, 7; - --bs-danger-rgb:220, 53, 69; - --bs-light-rgb:248, 249, 250; - --bs-dark-rgb:33, 37, 41; - --bs-white-rgb:255, 255, 255; - --bs-black-rgb:0, 0, 0; - --bs-body-color-rgb:33, 37, 41; - --bs-body-bg-rgb:255, 255, 255; - --bs-font-sans-serif:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --bs-font-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --bs-body-font-family:var(--bs-font-sans-serif); - --bs-body-font-size:1rem; - --bs-body-font-weight:400; - --bs-body-line-height:1.5; - --bs-body-color:#212529; - --bs-body-bg:#fff; -} - -*, -*::before, -*::after{ - box-sizing:border-box; -} - -@media (prefers-reduced-motion: no-preference){ - :root{ - scroll-behavior:smooth; - } -} - -body{ - margin:0; - font-family:var(--bs-body-font-family); - font-size:var(--bs-body-font-size); - font-weight:var(--bs-body-font-weight); - line-height:var(--bs-body-line-height); - color:var(--bs-body-color); - text-align:var(--bs-body-text-align); - background-color:var(--bs-body-bg); - -webkit-text-size-adjust:100%; - -webkit-tap-highlight-color:rgba(0, 0, 0, 0); -} - -hr{ - margin:1rem 0; - color:inherit; - background-color:currentColor; - border:0; - opacity:0.25; -} - -hr:not([size]){ - height:1px; -} - -h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1{ - margin-top:0; - margin-bottom:0.5rem; - font-weight:500; - line-height:1.2; -} - -h1, .h1{ - font-size:calc(1.375rem + 1.5vw); -} -@media (min-width: 1200px){ - h1, .h1{ - font-size:2.5rem; - } -} - -h2, .h2{ - font-size:calc(1.325rem + 0.9vw); -} -@media (min-width: 1200px){ - h2, .h2{ - font-size:2rem; - } -} - -h3, .h3{ - font-size:calc(1.3rem + 0.6vw); -} -@media (min-width: 1200px){ - h3, .h3{ - font-size:1.75rem; - } -} - -h4, .h4{ - font-size:calc(1.275rem + 0.3vw); -} -@media (min-width: 1200px){ - h4, .h4{ - font-size:1.5rem; - } -} - -h5, .h5{ - font-size:1.25rem; -} - -h6, .h6{ - font-size:1rem; -} - -p{ - margin-top:0; - margin-bottom:1rem; -} - -abbr[title], -abbr[data-bs-original-title]{ - -webkit-text-decoration:underline dotted; - text-decoration:underline dotted; - cursor:help; - -webkit-text-decoration-skip-ink:none; - text-decoration-skip-ink:none; -} - -address{ - margin-bottom:1rem; - font-style:normal; - line-height:inherit; -} - -ol, -ul{ - padding-left:2rem; -} - -ol, -ul, -dl{ - margin-top:0; - margin-bottom:1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol{ - margin-bottom:0; -} - -dt{ - font-weight:700; -} - -dd{ - margin-bottom:0.5rem; - margin-left:0; -} - -blockquote{ - margin:0 0 1rem; -} - -b, -strong{ - font-weight:bolder; -} - -small, .small{ - font-size:0.875em; -} - -mark, .mark{ - padding:0.2em; - background-color:#fcf8e3; -} - -sub, -sup{ - position:relative; - font-size:0.75em; - line-height:0; - vertical-align:baseline; -} - -sub{ - bottom:-0.25em; -} - -sup{ - top:-0.5em; -} - -a{ - color:#0d6efd; - text-decoration:underline; -} -a:hover{ - color:#0a58ca; -} - -a:not([href]):not([class]), a:not([href]):not([class]):hover{ - color:inherit; - text-decoration:none; -} - -pre, -code, -kbd, -samp{ - font-family:var(--bs-font-monospace); - font-size:1em; - direction:ltr; - unicode-bidi:bidi-override; -} - -pre{ - display:block; - margin-top:0; - margin-bottom:1rem; - overflow:auto; - font-size:0.875em; -} -pre code{ - font-size:inherit; - color:inherit; - word-break:normal; -} - -code{ - font-size:0.875em; - color:#d63384; - word-wrap:break-word; -} -a > code{ - color:inherit; -} - -kbd{ - padding:0.2rem 0.4rem; - font-size:0.875em; - color:#fff; - background-color:#212529; - border-radius:0.2rem; -} -kbd kbd{ - padding:0; - font-size:1em; - font-weight:700; -} - -figure{ - margin:0 0 1rem; -} - -img, -svg{ - vertical-align:middle; -} - -table{ - caption-side:bottom; - border-collapse:collapse; -} - -caption{ - padding-top:0.5rem; - padding-bottom:0.5rem; - color:#6c757d; - text-align:left; -} - -th{ - text-align:inherit; - text-align:-webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th{ - border-color:inherit; - border-style:solid; - border-width:0; -} - -label{ - display:inline-block; -} - -button{ - border-radius:0; -} - -button:focus:not(:focus-visible){ - outline:0; -} - -input, -button, -select, -optgroup, -textarea{ - margin:0; - font-family:inherit; - font-size:inherit; - line-height:inherit; -} - -button, -select{ - text-transform:none; -} - -[role=button]{ - cursor:pointer; -} - -select{ - word-wrap:normal; -} -select:disabled{ - opacity:1; -} - -[list]::-webkit-calendar-picker-indicator{ - display:none; -} - -button, -[type=button], -[type=reset], -[type=submit]{ - -webkit-appearance:button; -} -button:not(:disabled), -[type=button]:not(:disabled), -[type=reset]:not(:disabled), -[type=submit]:not(:disabled){ - cursor:pointer; -} - -::-moz-focus-inner{ - padding:0; - border-style:none; -} - -textarea{ - resize:vertical; -} - -fieldset{ - min-width:0; - padding:0; - margin:0; - border:0; -} - -legend{ - float:left; - width:100%; - padding:0; - margin-bottom:0.5rem; - font-size:calc(1.275rem + 0.3vw); - line-height:inherit; -} -@media (min-width: 1200px){ - legend{ - font-size:1.5rem; - } -} -legend + *{ - clear:left; -} - -::-webkit-datetime-edit-fields-wrapper, -::-webkit-datetime-edit-text, -::-webkit-datetime-edit-minute, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-year-field{ - padding:0; -} - -::-webkit-inner-spin-button{ - height:auto; -} - -[type=search]{ - outline-offset:-2px; - -webkit-appearance:textfield; -} -::-webkit-search-decoration{ - -webkit-appearance:none; -} - -::-webkit-color-swatch-wrapper{ - padding:0; -} - -::file-selector-button{ - font:inherit; -} - -::-webkit-file-upload-button{ - font:inherit; - -webkit-appearance:button; -} - -output{ - display:inline-block; -} - -iframe{ - border:0; -} - -summary{ - display:list-item; - cursor:pointer; -} - -progress{ - vertical-align:baseline; -} - -[hidden]{ - display:none !important; -} - -.lead{ - font-size:1.25rem; - font-weight:300; -} - -.display-1{ - font-size:calc(1.625rem + 4.5vw); - font-weight:300; - line-height:1.2; -} -@media (min-width: 1200px){ - .display-1{ - font-size:5rem; - } -} - -.display-2{ - font-size:calc(1.575rem + 3.9vw); - font-weight:300; - line-height:1.2; -} -@media (min-width: 1200px){ - .display-2{ - font-size:4.5rem; - } -} - -.display-3{ - font-size:calc(1.525rem + 3.3vw); - font-weight:300; - line-height:1.2; -} -@media (min-width: 1200px){ - .display-3{ - font-size:4rem; - } -} - -.display-4{ - font-size:calc(1.475rem + 2.7vw); - font-weight:300; - line-height:1.2; -} -@media (min-width: 1200px){ - .display-4{ - font-size:3.5rem; - } -} - -.display-5{ - font-size:calc(1.425rem + 2.1vw); - font-weight:300; - line-height:1.2; -} -@media (min-width: 1200px){ - .display-5{ - font-size:3rem; - } -} - -.display-6{ - font-size:calc(1.375rem + 1.5vw); - font-weight:300; - line-height:1.2; -} -@media (min-width: 1200px){ - .display-6{ - font-size:2.5rem; - } -} - -.list-unstyled{ - padding-left:0; - list-style:none; -} - -.list-inline{ - padding-left:0; - list-style:none; -} - -.list-inline-item{ - display:inline-block; -} -.list-inline-item:not(:last-child){ - margin-right:0.5rem; -} - -.initialism{ - font-size:0.875em; - text-transform:uppercase; -} - -.blockquote{ - margin-bottom:1rem; - font-size:1.25rem; -} -.blockquote > :last-child{ - margin-bottom:0; -} - -.blockquote-footer{ - margin-top:-1rem; - margin-bottom:1rem; - font-size:0.875em; - color:#6c757d; -} -.blockquote-footer::before{ - content:"\2014\A0"; -} - -.img-fluid{ - max-width:100%; - height:auto; -} - -.img-thumbnail{ - padding:0.25rem; - background-color:#fff; - border:1px solid #dee2e6; - border-radius:0.25rem; - max-width:100%; - height:auto; -} - -.figure{ - display:inline-block; -} - -.figure-img{ - margin-bottom:0.5rem; - line-height:1; -} - -.figure-caption{ - font-size:0.875em; - color:#6c757d; -} - -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm{ - width:100%; - padding-right:var(--bs-gutter-x, 0.75rem); - padding-left:var(--bs-gutter-x, 0.75rem); - margin-right:auto; - margin-left:auto; -} - -@media (min-width: 576px){ - .container-sm, .container{ - max-width:540px; - } -} -@media (min-width: 768px){ - .container-md, .container-sm, .container{ - max-width:720px; - } -} -@media (min-width: 992px){ - .container-lg, .container-md, .container-sm, .container{ - max-width:960px; - } -} -@media (min-width: 1200px){ - .container-xl, .container-lg, .container-md, .container-sm, .container{ - max-width:1140px; - } -} -@media (min-width: 1400px){ - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container{ - max-width:1320px; - } -} -.row{ - --bs-gutter-x:1.5rem; - --bs-gutter-y:0; - display:flex; - flex-wrap:wrap; - margin-top:calc(-1 * var(--bs-gutter-y)); - margin-right:calc(-.5 * var(--bs-gutter-x)); - margin-left:calc(-.5 * var(--bs-gutter-x)); -} -.row > *{ - flex-shrink:0; - width:100%; - max-width:100%; - padding-right:calc(var(--bs-gutter-x) * .5); - padding-left:calc(var(--bs-gutter-x) * .5); - margin-top:var(--bs-gutter-y); -} - -.col{ - flex:1 0 0%; -} - -.row-cols-auto > *{ - flex:0 0 auto; - width:auto; -} - -.row-cols-1 > *{ - flex:0 0 auto; - width:100%; -} - -.row-cols-2 > *{ - flex:0 0 auto; - width:50%; -} - -.row-cols-3 > *{ - flex:0 0 auto; - width:33.3333333333%; -} - -.row-cols-4 > *{ - flex:0 0 auto; - width:25%; -} - -.row-cols-5 > *{ - flex:0 0 auto; - width:20%; -} - -.row-cols-6 > *{ - flex:0 0 auto; - width:16.6666666667%; -} - -.col-auto{ - flex:0 0 auto; - width:auto; -} - -.col-1{ - flex:0 0 auto; - width:8.33333333%; -} - -.col-2{ - flex:0 0 auto; - width:16.66666667%; -} - -.col-3{ - flex:0 0 auto; - width:25%; -} - -.col-4{ - flex:0 0 auto; - width:33.33333333%; -} - -.col-5{ - flex:0 0 auto; - width:41.66666667%; -} - -.col-6{ - flex:0 0 auto; - width:50%; -} - -.col-7{ - flex:0 0 auto; - width:58.33333333%; -} - -.col-8{ - flex:0 0 auto; - width:66.66666667%; -} - -.col-9{ - flex:0 0 auto; - width:75%; -} - -.col-10{ - flex:0 0 auto; - width:83.33333333%; -} - -.col-11{ - flex:0 0 auto; - width:91.66666667%; -} - -.col-12{ - flex:0 0 auto; - width:100%; -} - -.offset-1{ - margin-left:8.33333333%; -} - -.offset-2{ - margin-left:16.66666667%; -} - -.offset-3{ - margin-left:25%; -} - -.offset-4{ - margin-left:33.33333333%; -} - -.offset-5{ - margin-left:41.66666667%; -} - -.offset-6{ - margin-left:50%; -} - -.offset-7{ - margin-left:58.33333333%; -} - -.offset-8{ - margin-left:66.66666667%; -} - -.offset-9{ - margin-left:75%; -} - -.offset-10{ - margin-left:83.33333333%; -} - -.offset-11{ - margin-left:91.66666667%; -} - -.g-0, -.gx-0{ - --bs-gutter-x:0; -} - -.g-0, -.gy-0{ - --bs-gutter-y:0; -} - -.g-1, -.gx-1{ - --bs-gutter-x:0.25rem; -} - -.g-1, -.gy-1{ - --bs-gutter-y:0.25rem; -} - -.g-2, -.gx-2{ - --bs-gutter-x:0.5rem; -} - -.g-2, -.gy-2{ - --bs-gutter-y:0.5rem; -} - -.g-3, -.gx-3{ - --bs-gutter-x:1rem; -} - -.g-3, -.gy-3{ - --bs-gutter-y:1rem; -} - -.g-4, -.gx-4{ - --bs-gutter-x:1.5rem; -} - -.g-4, -.gy-4{ - --bs-gutter-y:1.5rem; -} - -.g-5, -.gx-5{ - --bs-gutter-x:3rem; -} - -.g-5, -.gy-5{ - --bs-gutter-y:3rem; -} - -@media (min-width: 576px){ - .col-sm{ - flex:1 0 0%; - } - - .row-cols-sm-auto > *{ - flex:0 0 auto; - width:auto; - } - - .row-cols-sm-1 > *{ - flex:0 0 auto; - width:100%; - } - - .row-cols-sm-2 > *{ - flex:0 0 auto; - width:50%; - } - - .row-cols-sm-3 > *{ - flex:0 0 auto; - width:33.3333333333%; - } - - .row-cols-sm-4 > *{ - flex:0 0 auto; - width:25%; - } - - .row-cols-sm-5 > *{ - flex:0 0 auto; - width:20%; - } - - .row-cols-sm-6 > *{ - flex:0 0 auto; - width:16.6666666667%; - } - - .col-sm-auto{ - flex:0 0 auto; - width:auto; - } - - .col-sm-1{ - flex:0 0 auto; - width:8.33333333%; - } - - .col-sm-2{ - flex:0 0 auto; - width:16.66666667%; - } - - .col-sm-3{ - flex:0 0 auto; - width:25%; - } - - .col-sm-4{ - flex:0 0 auto; - width:33.33333333%; - } - - .col-sm-5{ - flex:0 0 auto; - width:41.66666667%; - } - - .col-sm-6{ - flex:0 0 auto; - width:50%; - } - - .col-sm-7{ - flex:0 0 auto; - width:58.33333333%; - } - - .col-sm-8{ - flex:0 0 auto; - width:66.66666667%; - } - - .col-sm-9{ - flex:0 0 auto; - width:75%; - } - - .col-sm-10{ - flex:0 0 auto; - width:83.33333333%; - } - - .col-sm-11{ - flex:0 0 auto; - width:91.66666667%; - } - - .col-sm-12{ - flex:0 0 auto; - width:100%; - } - - .offset-sm-0{ - margin-left:0; - } - - .offset-sm-1{ - margin-left:8.33333333%; - } - - .offset-sm-2{ - margin-left:16.66666667%; - } - - .offset-sm-3{ - margin-left:25%; - } - - .offset-sm-4{ - margin-left:33.33333333%; - } - - .offset-sm-5{ - margin-left:41.66666667%; - } - - .offset-sm-6{ - margin-left:50%; - } - - .offset-sm-7{ - margin-left:58.33333333%; - } - - .offset-sm-8{ - margin-left:66.66666667%; - } - - .offset-sm-9{ - margin-left:75%; - } - - .offset-sm-10{ - margin-left:83.33333333%; - } - - .offset-sm-11{ - margin-left:91.66666667%; - } - - .g-sm-0, -.gx-sm-0{ - --bs-gutter-x:0; - } - - .g-sm-0, -.gy-sm-0{ - --bs-gutter-y:0; - } - - .g-sm-1, -.gx-sm-1{ - --bs-gutter-x:0.25rem; - } - - .g-sm-1, -.gy-sm-1{ - --bs-gutter-y:0.25rem; - } - - .g-sm-2, -.gx-sm-2{ - --bs-gutter-x:0.5rem; - } - - .g-sm-2, -.gy-sm-2{ - --bs-gutter-y:0.5rem; - } - - .g-sm-3, -.gx-sm-3{ - --bs-gutter-x:1rem; - } - - .g-sm-3, -.gy-sm-3{ - --bs-gutter-y:1rem; - } - - .g-sm-4, -.gx-sm-4{ - --bs-gutter-x:1.5rem; - } - - .g-sm-4, -.gy-sm-4{ - --bs-gutter-y:1.5rem; - } - - .g-sm-5, -.gx-sm-5{ - --bs-gutter-x:3rem; - } - - .g-sm-5, -.gy-sm-5{ - --bs-gutter-y:3rem; - } -} -@media (min-width: 768px){ - .col-md{ - flex:1 0 0%; - } - - .row-cols-md-auto > *{ - flex:0 0 auto; - width:auto; - } - - .row-cols-md-1 > *{ - flex:0 0 auto; - width:100%; - } - - .row-cols-md-2 > *{ - flex:0 0 auto; - width:50%; - } - - .row-cols-md-3 > *{ - flex:0 0 auto; - width:33.3333333333%; - } - - .row-cols-md-4 > *{ - flex:0 0 auto; - width:25%; - } - - .row-cols-md-5 > *{ - flex:0 0 auto; - width:20%; - } - - .row-cols-md-6 > *{ - flex:0 0 auto; - width:16.6666666667%; - } - - .col-md-auto{ - flex:0 0 auto; - width:auto; - } - - .col-md-1{ - flex:0 0 auto; - width:8.33333333%; - } - - .col-md-2{ - flex:0 0 auto; - width:16.66666667%; - } - - .col-md-3{ - flex:0 0 auto; - width:25%; - } - - .col-md-4{ - flex:0 0 auto; - width:33.33333333%; - } - - .col-md-5{ - flex:0 0 auto; - width:41.66666667%; - } - - .col-md-6{ - flex:0 0 auto; - width:50%; - } - - .col-md-7{ - flex:0 0 auto; - width:58.33333333%; - } - - .col-md-8{ - flex:0 0 auto; - width:66.66666667%; - } - - .col-md-9{ - flex:0 0 auto; - width:75%; - } - - .col-md-10{ - flex:0 0 auto; - width:83.33333333%; - } - - .col-md-11{ - flex:0 0 auto; - width:91.66666667%; - } - - .col-md-12{ - flex:0 0 auto; - width:100%; - } - - .offset-md-0{ - margin-left:0; - } - - .offset-md-1{ - margin-left:8.33333333%; - } - - .offset-md-2{ - margin-left:16.66666667%; - } - - .offset-md-3{ - margin-left:25%; - } - - .offset-md-4{ - margin-left:33.33333333%; - } - - .offset-md-5{ - margin-left:41.66666667%; - } - - .offset-md-6{ - margin-left:50%; - } - - .offset-md-7{ - margin-left:58.33333333%; - } - - .offset-md-8{ - margin-left:66.66666667%; - } - - .offset-md-9{ - margin-left:75%; - } - - .offset-md-10{ - margin-left:83.33333333%; - } - - .offset-md-11{ - margin-left:91.66666667%; - } - - .g-md-0, -.gx-md-0{ - --bs-gutter-x:0; - } - - .g-md-0, -.gy-md-0{ - --bs-gutter-y:0; - } - - .g-md-1, -.gx-md-1{ - --bs-gutter-x:0.25rem; - } - - .g-md-1, -.gy-md-1{ - --bs-gutter-y:0.25rem; - } - - .g-md-2, -.gx-md-2{ - --bs-gutter-x:0.5rem; - } - - .g-md-2, -.gy-md-2{ - --bs-gutter-y:0.5rem; - } - - .g-md-3, -.gx-md-3{ - --bs-gutter-x:1rem; - } - - .g-md-3, -.gy-md-3{ - --bs-gutter-y:1rem; - } - - .g-md-4, -.gx-md-4{ - --bs-gutter-x:1.5rem; - } - - .g-md-4, -.gy-md-4{ - --bs-gutter-y:1.5rem; - } - - .g-md-5, -.gx-md-5{ - --bs-gutter-x:3rem; - } - - .g-md-5, -.gy-md-5{ - --bs-gutter-y:3rem; - } -} -@media (min-width: 992px){ - .col-lg{ - flex:1 0 0%; - } - - .row-cols-lg-auto > *{ - flex:0 0 auto; - width:auto; - } - - .row-cols-lg-1 > *{ - flex:0 0 auto; - width:100%; - } - - .row-cols-lg-2 > *{ - flex:0 0 auto; - width:50%; - } - - .row-cols-lg-3 > *{ - flex:0 0 auto; - width:33.3333333333%; - } - - .row-cols-lg-4 > *{ - flex:0 0 auto; - width:25%; - } - - .row-cols-lg-5 > *{ - flex:0 0 auto; - width:20%; - } - - .row-cols-lg-6 > *{ - flex:0 0 auto; - width:16.6666666667%; - } - - .col-lg-auto{ - flex:0 0 auto; - width:auto; - } - - .col-lg-1{ - flex:0 0 auto; - width:8.33333333%; - } - - .col-lg-2{ - flex:0 0 auto; - width:16.66666667%; - } - - .col-lg-3{ - flex:0 0 auto; - width:25%; - } - - .col-lg-4{ - flex:0 0 auto; - width:33.33333333%; - } - - .col-lg-5{ - flex:0 0 auto; - width:41.66666667%; - } - - .col-lg-6{ - flex:0 0 auto; - width:50%; - } - - .col-lg-7{ - flex:0 0 auto; - width:58.33333333%; - } - - .col-lg-8{ - flex:0 0 auto; - width:66.66666667%; - } - - .col-lg-9{ - flex:0 0 auto; - width:75%; - } - - .col-lg-10{ - flex:0 0 auto; - width:83.33333333%; - } - - .col-lg-11{ - flex:0 0 auto; - width:91.66666667%; - } - - .col-lg-12{ - flex:0 0 auto; - width:100%; - } - - .offset-lg-0{ - margin-left:0; - } - - .offset-lg-1{ - margin-left:8.33333333%; - } - - .offset-lg-2{ - margin-left:16.66666667%; - } - - .offset-lg-3{ - margin-left:25%; - } - - .offset-lg-4{ - margin-left:33.33333333%; - } - - .offset-lg-5{ - margin-left:41.66666667%; - } - - .offset-lg-6{ - margin-left:50%; - } - - .offset-lg-7{ - margin-left:58.33333333%; - } - - .offset-lg-8{ - margin-left:66.66666667%; - } - - .offset-lg-9{ - margin-left:75%; - } - - .offset-lg-10{ - margin-left:83.33333333%; - } - - .offset-lg-11{ - margin-left:91.66666667%; - } - - .g-lg-0, -.gx-lg-0{ - --bs-gutter-x:0; - } - - .g-lg-0, -.gy-lg-0{ - --bs-gutter-y:0; - } - - .g-lg-1, -.gx-lg-1{ - --bs-gutter-x:0.25rem; - } - - .g-lg-1, -.gy-lg-1{ - --bs-gutter-y:0.25rem; - } - - .g-lg-2, -.gx-lg-2{ - --bs-gutter-x:0.5rem; - } - - .g-lg-2, -.gy-lg-2{ - --bs-gutter-y:0.5rem; - } - - .g-lg-3, -.gx-lg-3{ - --bs-gutter-x:1rem; - } - - .g-lg-3, -.gy-lg-3{ - --bs-gutter-y:1rem; - } - - .g-lg-4, -.gx-lg-4{ - --bs-gutter-x:1.5rem; - } - - .g-lg-4, -.gy-lg-4{ - --bs-gutter-y:1.5rem; - } - - .g-lg-5, -.gx-lg-5{ - --bs-gutter-x:3rem; - } - - .g-lg-5, -.gy-lg-5{ - --bs-gutter-y:3rem; - } -} -@media (min-width: 1200px){ - .col-xl{ - flex:1 0 0%; - } - - .row-cols-xl-auto > *{ - flex:0 0 auto; - width:auto; - } - - .row-cols-xl-1 > *{ - flex:0 0 auto; - width:100%; - } - - .row-cols-xl-2 > *{ - flex:0 0 auto; - width:50%; - } - - .row-cols-xl-3 > *{ - flex:0 0 auto; - width:33.3333333333%; - } - - .row-cols-xl-4 > *{ - flex:0 0 auto; - width:25%; - } - - .row-cols-xl-5 > *{ - flex:0 0 auto; - width:20%; - } - - .row-cols-xl-6 > *{ - flex:0 0 auto; - width:16.6666666667%; - } - - .col-xl-auto{ - flex:0 0 auto; - width:auto; - } - - .col-xl-1{ - flex:0 0 auto; - width:8.33333333%; - } - - .col-xl-2{ - flex:0 0 auto; - width:16.66666667%; - } - - .col-xl-3{ - flex:0 0 auto; - width:25%; - } - - .col-xl-4{ - flex:0 0 auto; - width:33.33333333%; - } - - .col-xl-5{ - flex:0 0 auto; - width:41.66666667%; - } - - .col-xl-6{ - flex:0 0 auto; - width:50%; - } - - .col-xl-7{ - flex:0 0 auto; - width:58.33333333%; - } - - .col-xl-8{ - flex:0 0 auto; - width:66.66666667%; - } - - .col-xl-9{ - flex:0 0 auto; - width:75%; - } - - .col-xl-10{ - flex:0 0 auto; - width:83.33333333%; - } - - .col-xl-11{ - flex:0 0 auto; - width:91.66666667%; - } - - .col-xl-12{ - flex:0 0 auto; - width:100%; - } - - .offset-xl-0{ - margin-left:0; - } - - .offset-xl-1{ - margin-left:8.33333333%; - } - - .offset-xl-2{ - margin-left:16.66666667%; - } - - .offset-xl-3{ - margin-left:25%; - } - - .offset-xl-4{ - margin-left:33.33333333%; - } - - .offset-xl-5{ - margin-left:41.66666667%; - } - - .offset-xl-6{ - margin-left:50%; - } - - .offset-xl-7{ - margin-left:58.33333333%; - } - - .offset-xl-8{ - margin-left:66.66666667%; - } - - .offset-xl-9{ - margin-left:75%; - } - - .offset-xl-10{ - margin-left:83.33333333%; - } - - .offset-xl-11{ - margin-left:91.66666667%; - } - - .g-xl-0, -.gx-xl-0{ - --bs-gutter-x:0; - } - - .g-xl-0, -.gy-xl-0{ - --bs-gutter-y:0; - } - - .g-xl-1, -.gx-xl-1{ - --bs-gutter-x:0.25rem; - } - - .g-xl-1, -.gy-xl-1{ - --bs-gutter-y:0.25rem; - } - - .g-xl-2, -.gx-xl-2{ - --bs-gutter-x:0.5rem; - } - - .g-xl-2, -.gy-xl-2{ - --bs-gutter-y:0.5rem; - } - - .g-xl-3, -.gx-xl-3{ - --bs-gutter-x:1rem; - } - - .g-xl-3, -.gy-xl-3{ - --bs-gutter-y:1rem; - } - - .g-xl-4, -.gx-xl-4{ - --bs-gutter-x:1.5rem; - } - - .g-xl-4, -.gy-xl-4{ - --bs-gutter-y:1.5rem; - } - - .g-xl-5, -.gx-xl-5{ - --bs-gutter-x:3rem; - } - - .g-xl-5, -.gy-xl-5{ - --bs-gutter-y:3rem; - } -} -@media (min-width: 1400px){ - .col-xxl{ - flex:1 0 0%; - } - - .row-cols-xxl-auto > *{ - flex:0 0 auto; - width:auto; - } - - .row-cols-xxl-1 > *{ - flex:0 0 auto; - width:100%; - } - - .row-cols-xxl-2 > *{ - flex:0 0 auto; - width:50%; - } - - .row-cols-xxl-3 > *{ - flex:0 0 auto; - width:33.3333333333%; - } - - .row-cols-xxl-4 > *{ - flex:0 0 auto; - width:25%; - } - - .row-cols-xxl-5 > *{ - flex:0 0 auto; - width:20%; - } - - .row-cols-xxl-6 > *{ - flex:0 0 auto; - width:16.6666666667%; - } - - .col-xxl-auto{ - flex:0 0 auto; - width:auto; - } - - .col-xxl-1{ - flex:0 0 auto; - width:8.33333333%; - } - - .col-xxl-2{ - flex:0 0 auto; - width:16.66666667%; - } - - .col-xxl-3{ - flex:0 0 auto; - width:25%; - } - - .col-xxl-4{ - flex:0 0 auto; - width:33.33333333%; - } - - .col-xxl-5{ - flex:0 0 auto; - width:41.66666667%; - } - - .col-xxl-6{ - flex:0 0 auto; - width:50%; - } - - .col-xxl-7{ - flex:0 0 auto; - width:58.33333333%; - } - - .col-xxl-8{ - flex:0 0 auto; - width:66.66666667%; - } - - .col-xxl-9{ - flex:0 0 auto; - width:75%; - } - - .col-xxl-10{ - flex:0 0 auto; - width:83.33333333%; - } - - .col-xxl-11{ - flex:0 0 auto; - width:91.66666667%; - } - - .col-xxl-12{ - flex:0 0 auto; - width:100%; - } - - .offset-xxl-0{ - margin-left:0; - } - - .offset-xxl-1{ - margin-left:8.33333333%; - } - - .offset-xxl-2{ - margin-left:16.66666667%; - } - - .offset-xxl-3{ - margin-left:25%; - } - - .offset-xxl-4{ - margin-left:33.33333333%; - } - - .offset-xxl-5{ - margin-left:41.66666667%; - } - - .offset-xxl-6{ - margin-left:50%; - } - - .offset-xxl-7{ - margin-left:58.33333333%; - } - - .offset-xxl-8{ - margin-left:66.66666667%; - } - - .offset-xxl-9{ - margin-left:75%; - } - - .offset-xxl-10{ - margin-left:83.33333333%; - } - - .offset-xxl-11{ - margin-left:91.66666667%; - } - - .g-xxl-0, -.gx-xxl-0{ - --bs-gutter-x:0; - } - - .g-xxl-0, -.gy-xxl-0{ - --bs-gutter-y:0; - } - - .g-xxl-1, -.gx-xxl-1{ - --bs-gutter-x:0.25rem; - } - - .g-xxl-1, -.gy-xxl-1{ - --bs-gutter-y:0.25rem; - } - - .g-xxl-2, -.gx-xxl-2{ - --bs-gutter-x:0.5rem; - } - - .g-xxl-2, -.gy-xxl-2{ - --bs-gutter-y:0.5rem; - } - - .g-xxl-3, -.gx-xxl-3{ - --bs-gutter-x:1rem; - } - - .g-xxl-3, -.gy-xxl-3{ - --bs-gutter-y:1rem; - } - - .g-xxl-4, -.gx-xxl-4{ - --bs-gutter-x:1.5rem; - } - - .g-xxl-4, -.gy-xxl-4{ - --bs-gutter-y:1.5rem; - } - - .g-xxl-5, -.gx-xxl-5{ - --bs-gutter-x:3rem; - } - - .g-xxl-5, -.gy-xxl-5{ - --bs-gutter-y:3rem; - } -} -.table{ - --bs-table-bg:transparent; - --bs-table-accent-bg:transparent; - --bs-table-striped-color:#212529; - --bs-table-striped-bg:rgba(0, 0, 0, 0.05); - --bs-table-active-color:#212529; - --bs-table-active-bg:rgba(0, 0, 0, 0.1); - --bs-table-hover-color:#212529; - --bs-table-hover-bg:rgba(0, 0, 0, 0.075); - width:100%; - margin-bottom:1rem; - color:#212529; - vertical-align:top; - border-color:#dee2e6; -} -.table > :not(caption) > * > *{ - padding:0.5rem 0.5rem; - background-color:var(--bs-table-bg); - border-bottom-width:1px; - box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg); -} -.table > tbody{ - vertical-align:inherit; -} -.table > thead{ - vertical-align:bottom; -} -.table > :not(:first-child){ - border-top:2px solid currentColor; -} - -.caption-top{ - caption-side:top; -} - -.table-sm > :not(caption) > * > *{ - padding:0.25rem 0.25rem; -} - -.table-bordered > :not(caption) > *{ - border-width:1px 0; -} -.table-bordered > :not(caption) > * > *{ - border-width:0 1px; -} - -.table-borderless > :not(caption) > * > *{ - border-bottom-width:0; -} -.table-borderless > :not(:first-child){ - border-top-width:0; -} - -.table-striped > tbody > tr:nth-of-type(odd) > *{ - --bs-table-accent-bg:var(--bs-table-striped-bg); - color:var(--bs-table-striped-color); -} - -.table-active{ - --bs-table-accent-bg:var(--bs-table-active-bg); - color:var(--bs-table-active-color); -} - -.table-hover > tbody > tr:hover > *{ - --bs-table-accent-bg:var(--bs-table-hover-bg); - color:var(--bs-table-hover-color); -} - -.table-primary{ - --bs-table-bg:#cfe2ff; - --bs-table-striped-bg:#c5d7f2; - --bs-table-striped-color:#000; - --bs-table-active-bg:#bacbe6; - --bs-table-active-color:#000; - --bs-table-hover-bg:#bfd1ec; - --bs-table-hover-color:#000; - color:#000; - border-color:#bacbe6; -} - -.table-secondary{ - --bs-table-bg:#e2e3e5; - --bs-table-striped-bg:#d7d8da; - --bs-table-striped-color:#000; - --bs-table-active-bg:#cbccce; - --bs-table-active-color:#000; - --bs-table-hover-bg:#d1d2d4; - --bs-table-hover-color:#000; - color:#000; - border-color:#cbccce; -} - -.table-success{ - --bs-table-bg:#d1e7dd; - --bs-table-striped-bg:#c7dbd2; - --bs-table-striped-color:#000; - --bs-table-active-bg:#bcd0c7; - --bs-table-active-color:#000; - --bs-table-hover-bg:#c1d6cc; - --bs-table-hover-color:#000; - color:#000; - border-color:#bcd0c7; -} - -.table-info{ - --bs-table-bg:#cff4fc; - --bs-table-striped-bg:#c5e8ef; - --bs-table-striped-color:#000; - --bs-table-active-bg:#badce3; - --bs-table-active-color:#000; - --bs-table-hover-bg:#bfe2e9; - --bs-table-hover-color:#000; - color:#000; - border-color:#badce3; -} - -.table-warning{ - --bs-table-bg:#fff3cd; - --bs-table-striped-bg:#f2e7c3; - --bs-table-striped-color:#000; - --bs-table-active-bg:#e6dbb9; - --bs-table-active-color:#000; - --bs-table-hover-bg:#ece1be; - --bs-table-hover-color:#000; - color:#000; - border-color:#e6dbb9; -} - -.table-danger{ - --bs-table-bg:#f8d7da; - --bs-table-striped-bg:#eccccf; - --bs-table-striped-color:#000; - --bs-table-active-bg:#dfc2c4; - --bs-table-active-color:#000; - --bs-table-hover-bg:#e5c7ca; - --bs-table-hover-color:#000; - color:#000; - border-color:#dfc2c4; -} - -.table-light{ - --bs-table-bg:#f8f9fa; - --bs-table-striped-bg:#ecedee; - --bs-table-striped-color:#000; - --bs-table-active-bg:#dfe0e1; - --bs-table-active-color:#000; - --bs-table-hover-bg:#e5e6e7; - --bs-table-hover-color:#000; - color:#000; - border-color:#dfe0e1; -} - -.table-dark{ - --bs-table-bg:#212529; - --bs-table-striped-bg:#2c3034; - --bs-table-striped-color:#fff; - --bs-table-active-bg:#373b3e; - --bs-table-active-color:#fff; - --bs-table-hover-bg:#323539; - --bs-table-hover-color:#fff; - color:#fff; - border-color:#373b3e; -} - -.table-responsive{ - overflow-x:auto; - -webkit-overflow-scrolling:touch; -} - -@media (max-width: 575.98px){ - .table-responsive-sm{ - overflow-x:auto; - -webkit-overflow-scrolling:touch; - } -} -@media (max-width: 767.98px){ - .table-responsive-md{ - overflow-x:auto; - -webkit-overflow-scrolling:touch; - } -} -@media (max-width: 991.98px){ - .table-responsive-lg{ - overflow-x:auto; - -webkit-overflow-scrolling:touch; - } -} -@media (max-width: 1199.98px){ - .table-responsive-xl{ - overflow-x:auto; - -webkit-overflow-scrolling:touch; - } -} -@media (max-width: 1399.98px){ - .table-responsive-xxl{ - overflow-x:auto; - -webkit-overflow-scrolling:touch; - } -} -.form-label{ - margin-bottom:0.5rem; -} - -.col-form-label{ - padding-top:calc(0.375rem + 1px); - padding-bottom:calc(0.375rem + 1px); - margin-bottom:0; - font-size:inherit; - line-height:1.5; -} - -.col-form-label-lg{ - padding-top:calc(0.5rem + 1px); - padding-bottom:calc(0.5rem + 1px); - font-size:1.25rem; -} - -.col-form-label-sm{ - padding-top:calc(0.25rem + 1px); - padding-bottom:calc(0.25rem + 1px); - font-size:0.875rem; -} - -.form-text{ - margin-top:0.25rem; - font-size:0.875em; - color:#6c757d; -} - -.form-control{ - display:block; - width:100%; - padding:0.375rem 0.75rem; - font-size:1rem; - font-weight:400; - line-height:1.5; - color:#212529; - background-color:#fff; - background-clip:padding-box; - border:1px solid #ced4da; - -webkit-appearance:none; - -moz-appearance:none; - appearance:none; - border-radius:0.25rem; - transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .form-control{ - transition:none; - } -} -.form-control[type=file]{ - overflow:hidden; -} -.form-control[type=file]:not(:disabled):not([readonly]){ - cursor:pointer; -} -.form-control:focus{ - color:#212529; - background-color:#fff; - border-color:#86b7fe; - outline:0; - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-control::-webkit-date-and-time-value{ - height:1.5em; -} -.form-control::-moz-placeholder{ - color:#6c757d; - opacity:1; -} -.form-control:-ms-input-placeholder{ - color:#6c757d; - opacity:1; -} -.form-control::placeholder{ - color:#6c757d; - opacity:1; -} -.form-control:disabled, .form-control[readonly]{ - background-color:#e9ecef; - opacity:1; -} -.form-control::file-selector-button{ - padding:0.375rem 0.75rem; - margin:-0.375rem -0.75rem; - -webkit-margin-end:0.75rem; - margin-inline-end:0.75rem; - color:#212529; - background-color:#e9ecef; - pointer-events:none; - border-color:inherit; - border-style:solid; - border-width:0; - border-inline-end-width:1px; - border-radius:0; - transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .form-control::file-selector-button{ - transition:none; - } -} -.form-control:hover:not(:disabled):not([readonly])::file-selector-button{ - background-color:#dde0e3; -} -.form-control::-webkit-file-upload-button{ - padding:0.375rem 0.75rem; - margin:-0.375rem -0.75rem; - -webkit-margin-end:0.75rem; - margin-inline-end:0.75rem; - color:#212529; - background-color:#e9ecef; - pointer-events:none; - border-color:inherit; - border-style:solid; - border-width:0; - border-inline-end-width:1px; - border-radius:0; - -webkit-transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .form-control::-webkit-file-upload-button{ - -webkit-transition:none; - transition:none; - } -} -.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{ - background-color:#dde0e3; -} - -.form-control-plaintext{ - display:block; - width:100%; - padding:0.375rem 0; - margin-bottom:0; - line-height:1.5; - color:#212529; - background-color:transparent; - border:solid transparent; - border-width:1px 0; -} -.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg{ - padding-right:0; - padding-left:0; -} - -.form-control-sm{ - min-height:calc(1.5em + 0.5rem + 2px); - padding:0.25rem 0.5rem; - font-size:0.875rem; - border-radius:0.2rem; -} -.form-control-sm::file-selector-button{ - padding:0.25rem 0.5rem; - margin:-0.25rem -0.5rem; - -webkit-margin-end:0.5rem; - margin-inline-end:0.5rem; -} -.form-control-sm::-webkit-file-upload-button{ - padding:0.25rem 0.5rem; - margin:-0.25rem -0.5rem; - -webkit-margin-end:0.5rem; - margin-inline-end:0.5rem; -} - -.form-control-lg{ - min-height:calc(1.5em + 1rem + 2px); - padding:0.5rem 1rem; - font-size:1.25rem; - border-radius:0.3rem; -} -.form-control-lg::file-selector-button{ - padding:0.5rem 1rem; - margin:-0.5rem -1rem; - -webkit-margin-end:1rem; - margin-inline-end:1rem; -} -.form-control-lg::-webkit-file-upload-button{ - padding:0.5rem 1rem; - margin:-0.5rem -1rem; - -webkit-margin-end:1rem; - margin-inline-end:1rem; -} - -textarea.form-control{ - min-height:calc(1.5em + 0.75rem + 2px); -} -textarea.form-control-sm{ - min-height:calc(1.5em + 0.5rem + 2px); -} -textarea.form-control-lg{ - min-height:calc(1.5em + 1rem + 2px); -} - -.form-control-color{ - width:3rem; - height:auto; - padding:0.375rem; -} -.form-control-color:not(:disabled):not([readonly]){ - cursor:pointer; -} -.form-control-color::-moz-color-swatch{ - height:1.5em; - border-radius:0.25rem; -} -.form-control-color::-webkit-color-swatch{ - height:1.5em; - border-radius:0.25rem; -} - -.form-select{ - display:block; - width:100%; - padding:0.375rem 2.25rem 0.375rem 0.75rem; - -moz-padding-start:calc(0.75rem - 3px); - font-size:1rem; - font-weight:400; - line-height:1.5; - color:#212529; - background-color:#fff; - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); - background-repeat:no-repeat; - background-position:right 0.75rem center; - background-size:16px 12px; - border:1px solid #ced4da; - border-radius:0.25rem; - transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - -webkit-appearance:none; - -moz-appearance:none; - appearance:none; -} -@media (prefers-reduced-motion: reduce){ - .form-select{ - transition:none; - } -} -.form-select:focus{ - border-color:#86b7fe; - outline:0; - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-select[multiple], .form-select[size]:not([size="1"]){ - padding-right:0.75rem; - background-image:none; -} -.form-select:disabled{ - background-color:#e9ecef; -} -.form-select:-moz-focusring{ - color:transparent; - text-shadow:0 0 0 #212529; -} - -.form-select-sm{ - padding-top:0.25rem; - padding-bottom:0.25rem; - padding-left:0.5rem; - font-size:0.875rem; - border-radius:0.2rem; -} - -.form-select-lg{ - padding-top:0.5rem; - padding-bottom:0.5rem; - padding-left:1rem; - font-size:1.25rem; - border-radius:0.3rem; -} - -.form-check{ - display:block; - min-height:1.5rem; - padding-left:1.5em; - margin-bottom:0.125rem; -} -.form-check .form-check-input{ - float:left; - margin-left:-1.5em; -} - -.form-check-input{ - width:1em; - height:1em; - margin-top:0.25em; - vertical-align:top; - background-color:#fff; - background-repeat:no-repeat; - background-position:center; - background-size:contain; - border:1px solid rgba(0, 0, 0, 0.25); - -webkit-appearance:none; - -moz-appearance:none; - appearance:none; - -webkit-print-color-adjust:exact; - color-adjust:exact; -} -.form-check-input[type=checkbox]{ - border-radius:0.25em; -} -.form-check-input[type=radio]{ - border-radius:50%; -} -.form-check-input:active{ - filter:brightness(90%); -} -.form-check-input:focus{ - border-color:#86b7fe; - outline:0; - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-check-input:checked{ - background-color:#0d6efd; - border-color:#0d6efd; -} -.form-check-input:checked[type=checkbox]{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e"); -} -.form-check-input:checked[type=radio]{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); -} -.form-check-input[type=checkbox]:indeterminate{ - background-color:#0d6efd; - border-color:#0d6efd; - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); -} -.form-check-input:disabled{ - pointer-events:none; - filter:none; - opacity:0.5; -} -.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label{ - opacity:0.5; -} - -.form-switch{ - padding-left:2.5em; -} -.form-switch .form-check-input{ - width:2em; - margin-left:-2.5em; - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); - background-position:left center; - border-radius:2em; - transition:background-position 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .form-switch .form-check-input{ - transition:none; - } -} -.form-switch .form-check-input:focus{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); -} -.form-switch .form-check-input:checked{ - background-position:right center; - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); -} - -.form-check-inline{ - display:inline-block; - margin-right:1rem; -} - -.btn-check{ - position:absolute; - clip:rect(0, 0, 0, 0); - pointer-events:none; -} -.btn-check[disabled] + .btn, .btn-check:disabled + .btn{ - pointer-events:none; - filter:none; - opacity:0.65; -} - -.form-range{ - width:100%; - height:1.5rem; - padding:0; - background-color:transparent; - -webkit-appearance:none; - -moz-appearance:none; - appearance:none; -} -.form-range:focus{ - outline:0; -} -.form-range:focus::-webkit-slider-thumb{ - box-shadow:0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-range:focus::-moz-range-thumb{ - box-shadow:0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-range::-moz-focus-outer{ - border:0; -} -.form-range::-webkit-slider-thumb{ - width:1rem; - height:1rem; - margin-top:-0.25rem; - background-color:#0d6efd; - border:0; - border-radius:1rem; - -webkit-transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - -webkit-appearance:none; - appearance:none; -} -@media (prefers-reduced-motion: reduce){ - .form-range::-webkit-slider-thumb{ - -webkit-transition:none; - transition:none; - } -} -.form-range::-webkit-slider-thumb:active{ - background-color:#b6d4fe; -} -.form-range::-webkit-slider-runnable-track{ - width:100%; - height:0.5rem; - color:transparent; - cursor:pointer; - background-color:#dee2e6; - border-color:transparent; - border-radius:1rem; -} -.form-range::-moz-range-thumb{ - width:1rem; - height:1rem; - background-color:#0d6efd; - border:0; - border-radius:1rem; - -moz-transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - -moz-appearance:none; - appearance:none; -} -@media (prefers-reduced-motion: reduce){ - .form-range::-moz-range-thumb{ - -moz-transition:none; - transition:none; - } -} -.form-range::-moz-range-thumb:active{ - background-color:#b6d4fe; -} -.form-range::-moz-range-track{ - width:100%; - height:0.5rem; - color:transparent; - cursor:pointer; - background-color:#dee2e6; - border-color:transparent; - border-radius:1rem; -} -.form-range:disabled{ - pointer-events:none; -} -.form-range:disabled::-webkit-slider-thumb{ - background-color:#adb5bd; -} -.form-range:disabled::-moz-range-thumb{ - background-color:#adb5bd; -} - -.form-floating{ - position:relative; -} -.form-floating > .form-control, -.form-floating > .form-select{ - height:calc(3.5rem + 2px); - line-height:1.25; -} -.form-floating > label{ - position:absolute; - top:0; - left:0; - height:100%; - padding:1rem 0.75rem; - pointer-events:none; - border:1px solid transparent; - transform-origin:0 0; - transition:opacity 0.1s ease-in-out, transform 0.1s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .form-floating > label{ - transition:none; - } -} -.form-floating > .form-control{ - padding:1rem 0.75rem; -} -.form-floating > .form-control::-moz-placeholder{ - color:transparent; -} -.form-floating > .form-control:-ms-input-placeholder{ - color:transparent; -} -.form-floating > .form-control::placeholder{ - color:transparent; -} -.form-floating > .form-control:not(:-moz-placeholder-shown){ - padding-top:1.625rem; - padding-bottom:0.625rem; -} -.form-floating > .form-control:not(:-ms-input-placeholder){ - padding-top:1.625rem; - padding-bottom:0.625rem; -} -.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown){ - padding-top:1.625rem; - padding-bottom:0.625rem; -} -.form-floating > .form-control:-webkit-autofill{ - padding-top:1.625rem; - padding-bottom:0.625rem; -} -.form-floating > .form-select{ - padding-top:1.625rem; - padding-bottom:0.625rem; -} -.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label{ - opacity:0.65; - transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem); -} -.form-floating > .form-control:not(:-ms-input-placeholder) ~ label{ - opacity:0.65; - transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem); -} -.form-floating > .form-control:focus ~ label, -.form-floating > .form-control:not(:placeholder-shown) ~ label, -.form-floating > .form-select ~ label{ - opacity:0.65; - transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem); -} -.form-floating > .form-control:-webkit-autofill ~ label{ - opacity:0.65; - transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem); -} - -.input-group{ - position:relative; - display:flex; - flex-wrap:wrap; - align-items:stretch; - width:100%; -} -.input-group > .form-control, -.input-group > .form-select{ - position:relative; - flex:1 1 auto; - width:1%; - min-width:0; -} -.input-group > .form-control:focus, -.input-group > .form-select:focus{ - z-index:3; -} -.input-group .btn{ - position:relative; - z-index:2; -} -.input-group .btn:focus{ - z-index:3; -} - -.input-group-text{ - display:flex; - align-items:center; - padding:0.375rem 0.75rem; - font-size:1rem; - font-weight:400; - line-height:1.5; - color:#212529; - text-align:center; - white-space:nowrap; - background-color:#e9ecef; - border:1px solid #ced4da; - border-radius:0.25rem; -} - -.input-group-lg > .form-control, -.input-group-lg > .form-select, -.input-group-lg > .input-group-text, -.input-group-lg > .btn{ - padding:0.5rem 1rem; - font-size:1.25rem; - border-radius:0.3rem; -} - -.input-group-sm > .form-control, -.input-group-sm > .form-select, -.input-group-sm > .input-group-text, -.input-group-sm > .btn{ - padding:0.25rem 0.5rem; - font-size:0.875rem; - border-radius:0.2rem; -} - -.input-group-lg > .form-select, -.input-group-sm > .form-select{ - padding-right:3rem; -} - -.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu), -.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3){ - border-top-right-radius:0; - border-bottom-right-radius:0; -} -.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu), -.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4){ - border-top-right-radius:0; - border-bottom-right-radius:0; -} -.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){ - margin-left:-1px; - border-top-left-radius:0; - border-bottom-left-radius:0; -} - -.valid-feedback{ - display:none; - width:100%; - margin-top:0.25rem; - font-size:0.875em; - color:#198754; -} - -.valid-tooltip{ - position:absolute; - top:100%; - z-index:5; - display:none; - max-width:100%; - padding:0.25rem 0.5rem; - margin-top:0.1rem; - font-size:0.875rem; - color:#fff; - background-color:rgba(25, 135, 84, 0.9); - border-radius:0.25rem; -} - -.was-validated :valid ~ .valid-feedback, -.was-validated :valid ~ .valid-tooltip, -.is-valid ~ .valid-feedback, -.is-valid ~ .valid-tooltip{ - display:block; -} - -.was-validated .form-control:valid, .form-control.is-valid{ - border-color:#198754; - padding-right:calc(1.5em + 0.75rem); - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat:no-repeat; - background-position:right calc(0.375em + 0.1875rem) center; - background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-control:valid:focus, .form-control.is-valid:focus{ - border-color:#198754; - box-shadow:0 0 0 0.25rem rgba(25, 135, 84, 0.25); -} - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid{ - padding-right:calc(1.5em + 0.75rem); - background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .form-select:valid, .form-select.is-valid{ - border-color:#198754; -} -.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"]{ - padding-right:4.125rem; - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-position:right 0.75rem center, center right 2.25rem; - background-size:16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-select:valid:focus, .form-select.is-valid:focus{ - border-color:#198754; - box-shadow:0 0 0 0.25rem rgba(25, 135, 84, 0.25); -} - -.was-validated .form-check-input:valid, .form-check-input.is-valid{ - border-color:#198754; -} -.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked{ - background-color:#198754; -} -.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus{ - box-shadow:0 0 0 0.25rem rgba(25, 135, 84, 0.25); -} -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label{ - color:#198754; -} - -.form-check-inline .form-check-input ~ .valid-feedback{ - margin-left:0.5em; -} - -.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid, -.was-validated .input-group .form-select:valid, -.input-group .form-select.is-valid{ - z-index:1; -} -.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus, -.was-validated .input-group .form-select:valid:focus, -.input-group .form-select.is-valid:focus{ - z-index:3; -} - -.invalid-feedback{ - display:none; - width:100%; - margin-top:0.25rem; - font-size:0.875em; - color:#dc3545; -} - -.invalid-tooltip{ - position:absolute; - top:100%; - z-index:5; - display:none; - max-width:100%; - padding:0.25rem 0.5rem; - margin-top:0.1rem; - font-size:0.875rem; - color:#fff; - background-color:rgba(220, 53, 69, 0.9); - border-radius:0.25rem; -} - -.was-validated :invalid ~ .invalid-feedback, -.was-validated :invalid ~ .invalid-tooltip, -.is-invalid ~ .invalid-feedback, -.is-invalid ~ .invalid-tooltip{ - display:block; -} - -.was-validated .form-control:invalid, .form-control.is-invalid{ - border-color:#dc3545; - padding-right:calc(1.5em + 0.75rem); - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); - background-repeat:no-repeat; - background-position:right calc(0.375em + 0.1875rem) center; - background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus{ - border-color:#dc3545; - box-shadow:0 0 0 0.25rem rgba(220, 53, 69, 0.25); -} - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid{ - padding-right:calc(1.5em + 0.75rem); - background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .form-select:invalid, .form-select.is-invalid{ - border-color:#dc3545; -} -.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"]{ - padding-right:4.125rem; - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); - background-position:right 0.75rem center, center right 2.25rem; - background-size:16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus{ - border-color:#dc3545; - box-shadow:0 0 0 0.25rem rgba(220, 53, 69, 0.25); -} - -.was-validated .form-check-input:invalid, .form-check-input.is-invalid{ - border-color:#dc3545; -} -.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked{ - background-color:#dc3545; -} -.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus{ - box-shadow:0 0 0 0.25rem rgba(220, 53, 69, 0.25); -} -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label{ - color:#dc3545; -} - -.form-check-inline .form-check-input ~ .invalid-feedback{ - margin-left:0.5em; -} - -.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid, -.was-validated .input-group .form-select:invalid, -.input-group .form-select.is-invalid{ - z-index:2; -} -.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus, -.was-validated .input-group .form-select:invalid:focus, -.input-group .form-select.is-invalid:focus{ - z-index:3; -} - -.btn{ - display:inline-block; - font-weight:400; - line-height:1.5; - color:#212529; - text-align:center; - text-decoration:none; - vertical-align:middle; - cursor:pointer; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; - background-color:transparent; - border:1px solid transparent; - padding:0.375rem 0.75rem; - font-size:1rem; - border-radius:0.25rem; - transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .btn{ - transition:none; - } -} -.btn:hover{ - color:#212529; -} -.btn-check:focus + .btn, .btn:focus{ - outline:0; - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.btn:disabled, .btn.disabled, fieldset:disabled .btn{ - pointer-events:none; - opacity:0.65; -} - -.btn-primary{ - color:#fff; - background-color:#0d6efd; - border-color:#0d6efd; -} -.btn-primary:hover{ - color:#fff; - background-color:#0b5ed7; - border-color:#0a58ca; -} -.btn-check:focus + .btn-primary, .btn-primary:focus{ - color:#fff; - background-color:#0b5ed7; - border-color:#0a58ca; - box-shadow:0 0 0 0.25rem rgba(49, 132, 253, 0.5); -} -.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle{ - color:#fff; - background-color:#0a58ca; - border-color:#0a53be; -} -.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(49, 132, 253, 0.5); -} -.btn-primary:disabled, .btn-primary.disabled{ - color:#fff; - background-color:#0d6efd; - border-color:#0d6efd; -} - -.btn-secondary{ - color:#fff; - background-color:#6c757d; - border-color:#6c757d; -} -.btn-secondary:hover{ - color:#fff; - background-color:#5c636a; - border-color:#565e64; -} -.btn-check:focus + .btn-secondary, .btn-secondary:focus{ - color:#fff; - background-color:#5c636a; - border-color:#565e64; - box-shadow:0 0 0 0.25rem rgba(130, 138, 145, 0.5); -} -.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle{ - color:#fff; - background-color:#565e64; - border-color:#51585e; -} -.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(130, 138, 145, 0.5); -} -.btn-secondary:disabled, .btn-secondary.disabled{ - color:#fff; - background-color:#6c757d; - border-color:#6c757d; -} - -.btn-success{ - color:#fff; - background-color:#198754; - border-color:#198754; -} -.btn-success:hover{ - color:#fff; - background-color:#157347; - border-color:#146c43; -} -.btn-check:focus + .btn-success, .btn-success:focus{ - color:#fff; - background-color:#157347; - border-color:#146c43; - box-shadow:0 0 0 0.25rem rgba(60, 153, 110, 0.5); -} -.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle{ - color:#fff; - background-color:#146c43; - border-color:#13653f; -} -.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(60, 153, 110, 0.5); -} -.btn-success:disabled, .btn-success.disabled{ - color:#fff; - background-color:#198754; - border-color:#198754; -} - -.btn-info{ - color:#000; - background-color:#0dcaf0; - border-color:#0dcaf0; -} -.btn-info:hover{ - color:#000; - background-color:#31d2f2; - border-color:#25cff2; -} -.btn-check:focus + .btn-info, .btn-info:focus{ - color:#000; - background-color:#31d2f2; - border-color:#25cff2; - box-shadow:0 0 0 0.25rem rgba(11, 172, 204, 0.5); -} -.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle{ - color:#000; - background-color:#3dd5f3; - border-color:#25cff2; -} -.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(11, 172, 204, 0.5); -} -.btn-info:disabled, .btn-info.disabled{ - color:#000; - background-color:#0dcaf0; - border-color:#0dcaf0; -} - -.btn-warning{ - color:#000; - background-color:#ffc107; - border-color:#ffc107; -} -.btn-warning:hover{ - color:#000; - background-color:#ffca2c; - border-color:#ffc720; -} -.btn-check:focus + .btn-warning, .btn-warning:focus{ - color:#000; - background-color:#ffca2c; - border-color:#ffc720; - box-shadow:0 0 0 0.25rem rgba(217, 164, 6, 0.5); -} -.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle{ - color:#000; - background-color:#ffcd39; - border-color:#ffc720; -} -.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(217, 164, 6, 0.5); -} -.btn-warning:disabled, .btn-warning.disabled{ - color:#000; - background-color:#ffc107; - border-color:#ffc107; -} - -.btn-danger{ - color:#fff; - background-color:#dc3545; - border-color:#dc3545; -} -.btn-danger:hover{ - color:#fff; - background-color:#bb2d3b; - border-color:#b02a37; -} -.btn-check:focus + .btn-danger, .btn-danger:focus{ - color:#fff; - background-color:#bb2d3b; - border-color:#b02a37; - box-shadow:0 0 0 0.25rem rgba(225, 83, 97, 0.5); -} -.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle{ - color:#fff; - background-color:#b02a37; - border-color:#a52834; -} -.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(225, 83, 97, 0.5); -} -.btn-danger:disabled, .btn-danger.disabled{ - color:#fff; - background-color:#dc3545; - border-color:#dc3545; -} - -.btn-light{ - color:#000; - background-color:#f8f9fa; - border-color:#f8f9fa; -} -.btn-light:hover{ - color:#000; - background-color:#f9fafb; - border-color:#f9fafb; -} -.btn-check:focus + .btn-light, .btn-light:focus{ - color:#000; - background-color:#f9fafb; - border-color:#f9fafb; - box-shadow:0 0 0 0.25rem rgba(211, 212, 213, 0.5); -} -.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle{ - color:#000; - background-color:#f9fafb; - border-color:#f9fafb; -} -.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(211, 212, 213, 0.5); -} -.btn-light:disabled, .btn-light.disabled{ - color:#000; - background-color:#f8f9fa; - border-color:#f8f9fa; -} - -.btn-dark{ - color:#fff; - background-color:#212529; - border-color:#212529; -} -.btn-dark:hover{ - color:#fff; - background-color:#1c1f23; - border-color:#1a1e21; -} -.btn-check:focus + .btn-dark, .btn-dark:focus{ - color:#fff; - background-color:#1c1f23; - border-color:#1a1e21; - box-shadow:0 0 0 0.25rem rgba(66, 70, 73, 0.5); -} -.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle{ - color:#fff; - background-color:#1a1e21; - border-color:#191c1f; -} -.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus{ - box-shadow:0 0 0 0.25rem rgba(66, 70, 73, 0.5); -} -.btn-dark:disabled, .btn-dark.disabled{ - color:#fff; - background-color:#212529; - border-color:#212529; -} - -.btn-outline-primary{ - color:#0d6efd; - border-color:#0d6efd; -} -.btn-outline-primary:hover{ - color:#fff; - background-color:#0d6efd; - border-color:#0d6efd; -} -.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus{ - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.5); -} -.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show{ - color:#fff; - background-color:#0d6efd; - border-color:#0d6efd; -} -.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.5); -} -.btn-outline-primary:disabled, .btn-outline-primary.disabled{ - color:#0d6efd; - background-color:transparent; -} - -.btn-outline-secondary{ - color:#6c757d; - border-color:#6c757d; -} -.btn-outline-secondary:hover{ - color:#fff; - background-color:#6c757d; - border-color:#6c757d; -} -.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus{ - box-shadow:0 0 0 0.25rem rgba(108, 117, 125, 0.5); -} -.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show{ - color:#fff; - background-color:#6c757d; - border-color:#6c757d; -} -.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(108, 117, 125, 0.5); -} -.btn-outline-secondary:disabled, .btn-outline-secondary.disabled{ - color:#6c757d; - background-color:transparent; -} - -.btn-outline-success{ - color:#198754; - border-color:#198754; -} -.btn-outline-success:hover{ - color:#fff; - background-color:#198754; - border-color:#198754; -} -.btn-check:focus + .btn-outline-success, .btn-outline-success:focus{ - box-shadow:0 0 0 0.25rem rgba(25, 135, 84, 0.5); -} -.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show{ - color:#fff; - background-color:#198754; - border-color:#198754; -} -.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(25, 135, 84, 0.5); -} -.btn-outline-success:disabled, .btn-outline-success.disabled{ - color:#198754; - background-color:transparent; -} - -.btn-outline-info{ - color:#0dcaf0; - border-color:#0dcaf0; -} -.btn-outline-info:hover{ - color:#000; - background-color:#0dcaf0; - border-color:#0dcaf0; -} -.btn-check:focus + .btn-outline-info, .btn-outline-info:focus{ - box-shadow:0 0 0 0.25rem rgba(13, 202, 240, 0.5); -} -.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show{ - color:#000; - background-color:#0dcaf0; - border-color:#0dcaf0; -} -.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(13, 202, 240, 0.5); -} -.btn-outline-info:disabled, .btn-outline-info.disabled{ - color:#0dcaf0; - background-color:transparent; -} - -.btn-outline-warning{ - color:#ffc107; - border-color:#ffc107; -} -.btn-outline-warning:hover{ - color:#000; - background-color:#ffc107; - border-color:#ffc107; -} -.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus{ - box-shadow:0 0 0 0.25rem rgba(255, 193, 7, 0.5); -} -.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show{ - color:#000; - background-color:#ffc107; - border-color:#ffc107; -} -.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(255, 193, 7, 0.5); -} -.btn-outline-warning:disabled, .btn-outline-warning.disabled{ - color:#ffc107; - background-color:transparent; -} - -.btn-outline-danger{ - color:#dc3545; - border-color:#dc3545; -} -.btn-outline-danger:hover{ - color:#fff; - background-color:#dc3545; - border-color:#dc3545; -} -.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus{ - box-shadow:0 0 0 0.25rem rgba(220, 53, 69, 0.5); -} -.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show{ - color:#fff; - background-color:#dc3545; - border-color:#dc3545; -} -.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(220, 53, 69, 0.5); -} -.btn-outline-danger:disabled, .btn-outline-danger.disabled{ - color:#dc3545; - background-color:transparent; -} - -.btn-outline-light{ - color:#f8f9fa; - border-color:#f8f9fa; -} -.btn-outline-light:hover{ - color:#000; - background-color:#f8f9fa; - border-color:#f8f9fa; -} -.btn-check:focus + .btn-outline-light, .btn-outline-light:focus{ - box-shadow:0 0 0 0.25rem rgba(248, 249, 250, 0.5); -} -.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show{ - color:#000; - background-color:#f8f9fa; - border-color:#f8f9fa; -} -.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(248, 249, 250, 0.5); -} -.btn-outline-light:disabled, .btn-outline-light.disabled{ - color:#f8f9fa; - background-color:transparent; -} - -.btn-outline-dark{ - color:#212529; - border-color:#212529; -} -.btn-outline-dark:hover{ - color:#fff; - background-color:#212529; - border-color:#212529; -} -.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus{ - box-shadow:0 0 0 0.25rem rgba(33, 37, 41, 0.5); -} -.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show{ - color:#fff; - background-color:#212529; - border-color:#212529; -} -.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus{ - box-shadow:0 0 0 0.25rem rgba(33, 37, 41, 0.5); -} -.btn-outline-dark:disabled, .btn-outline-dark.disabled{ - color:#212529; - background-color:transparent; -} - -.btn-link{ - font-weight:400; - color:#0d6efd; - text-decoration:underline; -} -.btn-link:hover{ - color:#0a58ca; -} -.btn-link:disabled, .btn-link.disabled{ - color:#6c757d; -} - -.btn-lg, .btn-group-lg > .btn{ - padding:0.5rem 1rem; - font-size:1.25rem; - border-radius:0.3rem; -} - -.btn-sm, .btn-group-sm > .btn{ - padding:0.25rem 0.5rem; - font-size:0.875rem; - border-radius:0.2rem; -} - -.fade{ - transition:opacity 0.15s linear; -} -@media (prefers-reduced-motion: reduce){ - .fade{ - transition:none; - } -} -.fade:not(.show){ - opacity:0; -} - -.collapse:not(.show){ - display:none; -} - -.collapsing{ - height:0; - overflow:hidden; - transition:height 0.35s ease; -} -@media (prefers-reduced-motion: reduce){ - .collapsing{ - transition:none; - } -} -.collapsing.collapse-horizontal{ - width:0; - height:auto; - transition:width 0.35s ease; -} -@media (prefers-reduced-motion: reduce){ - .collapsing.collapse-horizontal{ - transition:none; - } -} - -.dropup, -.dropend, -.dropdown, -.dropstart{ - position:relative; -} - -.dropdown-toggle{ - white-space:nowrap; -} -.dropdown-toggle::after{ - display:inline-block; - margin-left:0.255em; - vertical-align:0.255em; - content:""; - border-top:0.3em solid; - border-right:0.3em solid transparent; - border-bottom:0; - border-left:0.3em solid transparent; -} -.dropdown-toggle:empty::after{ - margin-left:0; -} - -.dropdown-menu{ - position:absolute; - z-index:1000; - display:none; - min-width:10rem; - padding:0.5rem 0; - margin:0; - font-size:1rem; - color:#212529; - text-align:left; - list-style:none; - background-color:#fff; - background-clip:padding-box; - border:1px solid rgba(0, 0, 0, 0.15); - border-radius:0.25rem; -} -.dropdown-menu[data-bs-popper]{ - top:100%; - left:0; - margin-top:0.125rem; -} - -.dropdown-menu-start{ - --bs-position:start; -} -.dropdown-menu-start[data-bs-popper]{ - right:auto; - left:0; -} - -.dropdown-menu-end{ - --bs-position:end; -} -.dropdown-menu-end[data-bs-popper]{ - right:0; - left:auto; -} - -@media (min-width: 576px){ - .dropdown-menu-sm-start{ - --bs-position:start; - } - .dropdown-menu-sm-start[data-bs-popper]{ - right:auto; - left:0; - } - - .dropdown-menu-sm-end{ - --bs-position:end; - } - .dropdown-menu-sm-end[data-bs-popper]{ - right:0; - left:auto; - } -} -@media (min-width: 768px){ - .dropdown-menu-md-start{ - --bs-position:start; - } - .dropdown-menu-md-start[data-bs-popper]{ - right:auto; - left:0; - } - - .dropdown-menu-md-end{ - --bs-position:end; - } - .dropdown-menu-md-end[data-bs-popper]{ - right:0; - left:auto; - } -} -@media (min-width: 992px){ - .dropdown-menu-lg-start{ - --bs-position:start; - } - .dropdown-menu-lg-start[data-bs-popper]{ - right:auto; - left:0; - } - - .dropdown-menu-lg-end{ - --bs-position:end; - } - .dropdown-menu-lg-end[data-bs-popper]{ - right:0; - left:auto; - } -} -@media (min-width: 1200px){ - .dropdown-menu-xl-start{ - --bs-position:start; - } - .dropdown-menu-xl-start[data-bs-popper]{ - right:auto; - left:0; - } - - .dropdown-menu-xl-end{ - --bs-position:end; - } - .dropdown-menu-xl-end[data-bs-popper]{ - right:0; - left:auto; - } -} -@media (min-width: 1400px){ - .dropdown-menu-xxl-start{ - --bs-position:start; - } - .dropdown-menu-xxl-start[data-bs-popper]{ - right:auto; - left:0; - } - - .dropdown-menu-xxl-end{ - --bs-position:end; - } - .dropdown-menu-xxl-end[data-bs-popper]{ - right:0; - left:auto; - } -} -.dropup .dropdown-menu[data-bs-popper]{ - top:auto; - bottom:100%; - margin-top:0; - margin-bottom:0.125rem; -} -.dropup .dropdown-toggle::after{ - display:inline-block; - margin-left:0.255em; - vertical-align:0.255em; - content:""; - border-top:0; - border-right:0.3em solid transparent; - border-bottom:0.3em solid; - border-left:0.3em solid transparent; -} -.dropup .dropdown-toggle:empty::after{ - margin-left:0; -} - -.dropend .dropdown-menu[data-bs-popper]{ - top:0; - right:auto; - left:100%; - margin-top:0; - margin-left:0.125rem; -} -.dropend .dropdown-toggle::after{ - display:inline-block; - margin-left:0.255em; - vertical-align:0.255em; - content:""; - border-top:0.3em solid transparent; - border-right:0; - border-bottom:0.3em solid transparent; - border-left:0.3em solid; -} -.dropend .dropdown-toggle:empty::after{ - margin-left:0; -} -.dropend .dropdown-toggle::after{ - vertical-align:0; -} - -.dropstart .dropdown-menu[data-bs-popper]{ - top:0; - right:100%; - left:auto; - margin-top:0; - margin-right:0.125rem; -} -.dropstart .dropdown-toggle::after{ - display:inline-block; - margin-left:0.255em; - vertical-align:0.255em; - content:""; -} -.dropstart .dropdown-toggle::after{ - display:none; -} -.dropstart .dropdown-toggle::before{ - display:inline-block; - margin-right:0.255em; - vertical-align:0.255em; - content:""; - border-top:0.3em solid transparent; - border-right:0.3em solid; - border-bottom:0.3em solid transparent; -} -.dropstart .dropdown-toggle:empty::after{ - margin-left:0; -} -.dropstart .dropdown-toggle::before{ - vertical-align:0; -} - -.dropdown-divider{ - height:0; - margin:0.5rem 0; - overflow:hidden; - border-top:1px solid rgba(0, 0, 0, 0.15); -} - -.dropdown-item{ - display:block; - width:100%; - padding:0.25rem 1rem; - clear:both; - font-weight:400; - color:#212529; - text-align:inherit; - text-decoration:none; - white-space:nowrap; - background-color:transparent; - border:0; -} -.dropdown-item:hover, .dropdown-item:focus{ - color:#1e2125; - background-color:#e9ecef; -} -.dropdown-item.active, .dropdown-item:active{ - color:#fff; - text-decoration:none; - background-color:#0d6efd; -} -.dropdown-item.disabled, .dropdown-item:disabled{ - color:#adb5bd; - pointer-events:none; - background-color:transparent; -} - -.dropdown-menu.show{ - display:block; -} - -.dropdown-header{ - display:block; - padding:0.5rem 1rem; - margin-bottom:0; - font-size:0.875rem; - color:#6c757d; - white-space:nowrap; -} - -.dropdown-item-text{ - display:block; - padding:0.25rem 1rem; - color:#212529; -} - -.dropdown-menu-dark{ - color:#dee2e6; - background-color:#343a40; - border-color:rgba(0, 0, 0, 0.15); -} -.dropdown-menu-dark .dropdown-item{ - color:#dee2e6; -} -.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus{ - color:#fff; - background-color:rgba(255, 255, 255, 0.15); -} -.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active{ - color:#fff; - background-color:#0d6efd; -} -.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled{ - color:#adb5bd; -} -.dropdown-menu-dark .dropdown-divider{ - border-color:rgba(0, 0, 0, 0.15); -} -.dropdown-menu-dark .dropdown-item-text{ - color:#dee2e6; -} -.dropdown-menu-dark .dropdown-header{ - color:#adb5bd; -} - -.btn-group, -.btn-group-vertical{ - position:relative; - display:inline-flex; - vertical-align:middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn{ - position:relative; - flex:1 1 auto; -} -.btn-group > .btn-check:checked + .btn, -.btn-group > .btn-check:focus + .btn, -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn-check:checked + .btn, -.btn-group-vertical > .btn-check:focus + .btn, -.btn-group-vertical > .btn:hover, -.btn-group-vertical > .btn:focus, -.btn-group-vertical > .btn:active, -.btn-group-vertical > .btn.active{ - z-index:1; -} - -.btn-toolbar{ - display:flex; - flex-wrap:wrap; - justify-content:flex-start; -} -.btn-toolbar .input-group{ - width:auto; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child){ - margin-left:-1px; -} -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn{ - border-top-right-radius:0; - border-bottom-right-radius:0; -} -.btn-group > .btn:nth-child(n+3), -.btn-group > :not(.btn-check) + .btn, -.btn-group > .btn-group:not(:first-child) > .btn{ - border-top-left-radius:0; - border-bottom-left-radius:0; -} - -.dropdown-toggle-split{ - padding-right:0.5625rem; - padding-left:0.5625rem; -} -.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after{ - margin-left:0; -} -.dropstart .dropdown-toggle-split::before{ - margin-right:0; -} - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split{ - padding-right:0.375rem; - padding-left:0.375rem; -} - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split{ - padding-right:0.75rem; - padding-left:0.75rem; -} - -.btn-group-vertical{ - flex-direction:column; - align-items:flex-start; - justify-content:center; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group{ - width:100%; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child){ - margin-top:-1px; -} -.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group-vertical > .btn-group:not(:last-child) > .btn{ - border-bottom-right-radius:0; - border-bottom-left-radius:0; -} -.btn-group-vertical > .btn ~ .btn, -.btn-group-vertical > .btn-group:not(:first-child) > .btn{ - border-top-left-radius:0; - border-top-right-radius:0; -} - -.nav{ - display:flex; - flex-wrap:wrap; - padding-left:0; - margin-bottom:0; - list-style:none; -} - -.nav-link{ - display:block; - padding:0.5rem 1rem; - color:#0d6efd; - text-decoration:none; - transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .nav-link{ - transition:none; - } -} -.nav-link:hover, .nav-link:focus{ - color:#0a58ca; -} -.nav-link.disabled{ - color:#6c757d; - pointer-events:none; - cursor:default; -} - -.nav-tabs{ - border-bottom:1px solid #dee2e6; -} -.nav-tabs .nav-link{ - margin-bottom:-1px; - background:none; - border:1px solid transparent; - border-top-left-radius:0.25rem; - border-top-right-radius:0.25rem; -} -.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus{ - border-color:#e9ecef #e9ecef #dee2e6; - isolation:isolate; -} -.nav-tabs .nav-link.disabled{ - color:#6c757d; - background-color:transparent; - border-color:transparent; -} -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link{ - color:#495057; - background-color:#fff; - border-color:#dee2e6 #dee2e6 #fff; -} -.nav-tabs .dropdown-menu{ - margin-top:-1px; - border-top-left-radius:0; - border-top-right-radius:0; -} - -.nav-pills .nav-link{ - background:none; - border:0; - border-radius:0.25rem; -} -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link{ - color:#fff; - background-color:#0d6efd; -} - -.nav-fill > .nav-link, -.nav-fill .nav-item{ - flex:1 1 auto; - text-align:center; -} - -.nav-justified > .nav-link, -.nav-justified .nav-item{ - flex-basis:0; - flex-grow:1; - text-align:center; -} - -.nav-fill .nav-item .nav-link, -.nav-justified .nav-item .nav-link{ - width:100%; -} - -.tab-content > .tab-pane{ - display:none; -} -.tab-content > .active{ - display:block; -} - -.navbar{ - position:relative; - display:flex; - flex-wrap:wrap; - align-items:center; - justify-content:space-between; - padding-top:0.5rem; - padding-bottom:0.5rem; -} -.navbar > .container, -.navbar > .container-fluid, -.navbar > .container-sm, -.navbar > .container-md, -.navbar > .container-lg, -.navbar > .container-xl, -.navbar > .container-xxl{ - display:flex; - flex-wrap:inherit; - align-items:center; - justify-content:space-between; -} -.navbar-brand{ - padding-top:0.3125rem; - padding-bottom:0.3125rem; - margin-right:1rem; - font-size:1.25rem; - text-decoration:none; - white-space:nowrap; -} -.navbar-nav{ - display:flex; - flex-direction:column; - padding-left:0; - margin-bottom:0; - list-style:none; -} -.navbar-nav .nav-link{ - padding-right:0; - padding-left:0; -} -.navbar-nav .dropdown-menu{ - position:static; -} - -.navbar-text{ - padding-top:0.5rem; - padding-bottom:0.5rem; -} - -.navbar-collapse{ - flex-basis:100%; - flex-grow:1; - align-items:center; -} - -.navbar-toggler{ - padding:0.25rem 0.75rem; - font-size:1.25rem; - line-height:1; - background-color:transparent; - border:1px solid transparent; - border-radius:0.25rem; - transition:box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .navbar-toggler{ - transition:none; - } -} -.navbar-toggler:hover{ - text-decoration:none; -} -.navbar-toggler:focus{ - text-decoration:none; - outline:0; - box-shadow:0 0 0 0.25rem; -} - -.navbar-toggler-icon{ - display:inline-block; - width:1.5em; - height:1.5em; - vertical-align:middle; - background-repeat:no-repeat; - background-position:center; - background-size:100%; -} - -.navbar-nav-scroll{ - max-height:var(--bs-scroll-height, 75vh); - overflow-y:auto; -} - -@media (min-width: 576px){ - .navbar-expand-sm{ - flex-wrap:nowrap; - justify-content:flex-start; - } - .navbar-expand-sm .navbar-nav{ - flex-direction:row; - } - .navbar-expand-sm .navbar-nav .dropdown-menu{ - position:absolute; - } - .navbar-expand-sm .navbar-nav .nav-link{ - padding-right:0.5rem; - padding-left:0.5rem; - } - .navbar-expand-sm .navbar-nav-scroll{ - overflow:visible; - } - .navbar-expand-sm .navbar-collapse{ - display:flex !important; - flex-basis:auto; - } - .navbar-expand-sm .navbar-toggler{ - display:none; - } - .navbar-expand-sm .offcanvas-header{ - display:none; - } - .navbar-expand-sm .offcanvas{ - position:inherit; - bottom:0; - z-index:1000; - flex-grow:1; - visibility:visible !important; - background-color:transparent; - border-right:0; - border-left:0; - transition:none; - transform:none; - } - .navbar-expand-sm .offcanvas-top, -.navbar-expand-sm .offcanvas-bottom{ - height:auto; - border-top:0; - border-bottom:0; - } - .navbar-expand-sm .offcanvas-body{ - display:flex; - flex-grow:0; - padding:0; - overflow-y:visible; - } -} -@media (min-width: 768px){ - .navbar-expand-md{ - flex-wrap:nowrap; - justify-content:flex-start; - } - .navbar-expand-md .navbar-nav{ - flex-direction:row; - } - .navbar-expand-md .navbar-nav .dropdown-menu{ - position:absolute; - } - .navbar-expand-md .navbar-nav .nav-link{ - padding-right:0.5rem; - padding-left:0.5rem; - } - .navbar-expand-md .navbar-nav-scroll{ - overflow:visible; - } - .navbar-expand-md .navbar-collapse{ - display:flex !important; - flex-basis:auto; - } - .navbar-expand-md .navbar-toggler{ - display:none; - } - .navbar-expand-md .offcanvas-header{ - display:none; - } - .navbar-expand-md .offcanvas{ - position:inherit; - bottom:0; - z-index:1000; - flex-grow:1; - visibility:visible !important; - background-color:transparent; - border-right:0; - border-left:0; - transition:none; - transform:none; - } - .navbar-expand-md .offcanvas-top, -.navbar-expand-md .offcanvas-bottom{ - height:auto; - border-top:0; - border-bottom:0; - } - .navbar-expand-md .offcanvas-body{ - display:flex; - flex-grow:0; - padding:0; - overflow-y:visible; - } -} -@media (min-width: 992px){ - .navbar-expand-lg{ - flex-wrap:nowrap; - justify-content:flex-start; - } - .navbar-expand-lg .navbar-nav{ - flex-direction:row; - } - .navbar-expand-lg .navbar-nav .dropdown-menu{ - position:absolute; - } - .navbar-expand-lg .navbar-nav .nav-link{ - padding-right:0.5rem; - padding-left:0.5rem; - } - .navbar-expand-lg .navbar-nav-scroll{ - overflow:visible; - } - .navbar-expand-lg .navbar-collapse{ - display:flex !important; - flex-basis:auto; - } - .navbar-expand-lg .navbar-toggler{ - display:none; - } - .navbar-expand-lg .offcanvas-header{ - display:none; - } - .navbar-expand-lg .offcanvas{ - position:inherit; - bottom:0; - z-index:1000; - flex-grow:1; - visibility:visible !important; - background-color:transparent; - border-right:0; - border-left:0; - transition:none; - transform:none; - } - .navbar-expand-lg .offcanvas-top, -.navbar-expand-lg .offcanvas-bottom{ - height:auto; - border-top:0; - border-bottom:0; - } - .navbar-expand-lg .offcanvas-body{ - display:flex; - flex-grow:0; - padding:0; - overflow-y:visible; - } -} -@media (min-width: 1200px){ - .navbar-expand-xl{ - flex-wrap:nowrap; - justify-content:flex-start; - } - .navbar-expand-xl .navbar-nav{ - flex-direction:row; - } - .navbar-expand-xl .navbar-nav .dropdown-menu{ - position:absolute; - } - .navbar-expand-xl .navbar-nav .nav-link{ - padding-right:0.5rem; - padding-left:0.5rem; - } - .navbar-expand-xl .navbar-nav-scroll{ - overflow:visible; - } - .navbar-expand-xl .navbar-collapse{ - display:flex !important; - flex-basis:auto; - } - .navbar-expand-xl .navbar-toggler{ - display:none; - } - .navbar-expand-xl .offcanvas-header{ - display:none; - } - .navbar-expand-xl .offcanvas{ - position:inherit; - bottom:0; - z-index:1000; - flex-grow:1; - visibility:visible !important; - background-color:transparent; - border-right:0; - border-left:0; - transition:none; - transform:none; - } - .navbar-expand-xl .offcanvas-top, -.navbar-expand-xl .offcanvas-bottom{ - height:auto; - border-top:0; - border-bottom:0; - } - .navbar-expand-xl .offcanvas-body{ - display:flex; - flex-grow:0; - padding:0; - overflow-y:visible; - } -} -@media (min-width: 1400px){ - .navbar-expand-xxl{ - flex-wrap:nowrap; - justify-content:flex-start; - } - .navbar-expand-xxl .navbar-nav{ - flex-direction:row; - } - .navbar-expand-xxl .navbar-nav .dropdown-menu{ - position:absolute; - } - .navbar-expand-xxl .navbar-nav .nav-link{ - padding-right:0.5rem; - padding-left:0.5rem; - } - .navbar-expand-xxl .navbar-nav-scroll{ - overflow:visible; - } - .navbar-expand-xxl .navbar-collapse{ - display:flex !important; - flex-basis:auto; - } - .navbar-expand-xxl .navbar-toggler{ - display:none; - } - .navbar-expand-xxl .offcanvas-header{ - display:none; - } - .navbar-expand-xxl .offcanvas{ - position:inherit; - bottom:0; - z-index:1000; - flex-grow:1; - visibility:visible !important; - background-color:transparent; - border-right:0; - border-left:0; - transition:none; - transform:none; - } - .navbar-expand-xxl .offcanvas-top, -.navbar-expand-xxl .offcanvas-bottom{ - height:auto; - border-top:0; - border-bottom:0; - } - .navbar-expand-xxl .offcanvas-body{ - display:flex; - flex-grow:0; - padding:0; - overflow-y:visible; - } -} -.navbar-expand{ - flex-wrap:nowrap; - justify-content:flex-start; -} -.navbar-expand .navbar-nav{ - flex-direction:row; -} -.navbar-expand .navbar-nav .dropdown-menu{ - position:absolute; -} -.navbar-expand .navbar-nav .nav-link{ - padding-right:0.5rem; - padding-left:0.5rem; -} -.navbar-expand .navbar-nav-scroll{ - overflow:visible; -} -.navbar-expand .navbar-collapse{ - display:flex !important; - flex-basis:auto; -} -.navbar-expand .navbar-toggler{ - display:none; -} -.navbar-expand .offcanvas-header{ - display:none; -} -.navbar-expand .offcanvas{ - position:inherit; - bottom:0; - z-index:1000; - flex-grow:1; - visibility:visible !important; - background-color:transparent; - border-right:0; - border-left:0; - transition:none; - transform:none; -} -.navbar-expand .offcanvas-top, -.navbar-expand .offcanvas-bottom{ - height:auto; - border-top:0; - border-bottom:0; -} -.navbar-expand .offcanvas-body{ - display:flex; - flex-grow:0; - padding:0; - overflow-y:visible; -} - -.navbar-light .navbar-brand{ - color:rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus{ - color:rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-nav .nav-link{ - color:rgba(0, 0, 0, 0.55); -} -.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus{ - color:rgba(0, 0, 0, 0.7); -} -.navbar-light .navbar-nav .nav-link.disabled{ - color:rgba(0, 0, 0, 0.3); -} -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .nav-link.active{ - color:rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-toggler{ - color:rgba(0, 0, 0, 0.55); - border-color:rgba(0, 0, 0, 0.1); -} -.navbar-light .navbar-toggler-icon{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-light .navbar-text{ - color:rgba(0, 0, 0, 0.55); -} -.navbar-light .navbar-text a, -.navbar-light .navbar-text a:hover, -.navbar-light .navbar-text a:focus{ - color:rgba(0, 0, 0, 0.9); -} - -.navbar-dark .navbar-brand{ - color:#fff; -} -.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus{ - color:#fff; -} -.navbar-dark .navbar-nav .nav-link{ - color:rgba(255, 255, 255, 0.55); -} -.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus{ - color:rgba(255, 255, 255, 0.75); -} -.navbar-dark .navbar-nav .nav-link.disabled{ - color:rgba(255, 255, 255, 0.25); -} -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .nav-link.active{ - color:#fff; -} -.navbar-dark .navbar-toggler{ - color:rgba(255, 255, 255, 0.55); - border-color:rgba(255, 255, 255, 0.1); -} -.navbar-dark .navbar-toggler-icon{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-dark .navbar-text{ - color:rgba(255, 255, 255, 0.55); -} -.navbar-dark .navbar-text a, -.navbar-dark .navbar-text a:hover, -.navbar-dark .navbar-text a:focus{ - color:#fff; -} - -.card{ - position:relative; - display:flex; - flex-direction:column; - min-width:0; - word-wrap:break-word; - background-color:#fff; - background-clip:border-box; - border:1px solid rgba(0, 0, 0, 0.125); - border-radius:0.25rem; -} -.card > hr{ - margin-right:0; - margin-left:0; -} -.card > .list-group{ - border-top:inherit; - border-bottom:inherit; -} -.card > .list-group:first-child{ - border-top-width:0; - border-top-left-radius:calc(0.25rem - 1px); - border-top-right-radius:calc(0.25rem - 1px); -} -.card > .list-group:last-child{ - border-bottom-width:0; - border-bottom-right-radius:calc(0.25rem - 1px); - border-bottom-left-radius:calc(0.25rem - 1px); -} -.card > .card-header + .list-group, -.card > .list-group + .card-footer{ - border-top:0; -} - -.card-body{ - flex:1 1 auto; - padding:1rem 1rem; -} - -.card-title{ - margin-bottom:0.5rem; -} - -.card-subtitle{ - margin-top:-0.25rem; - margin-bottom:0; -} - -.card-text:last-child{ - margin-bottom:0; -} - -.card-link + .card-link{ - margin-left:1rem; -} - -.card-header{ - padding:0.5rem 1rem; - margin-bottom:0; - background-color:rgba(0, 0, 0, 0.03); - border-bottom:1px solid rgba(0, 0, 0, 0.125); -} -.card-header:first-child{ - border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; -} - -.card-footer{ - padding:0.5rem 1rem; - background-color:rgba(0, 0, 0, 0.03); - border-top:1px solid rgba(0, 0, 0, 0.125); -} -.card-footer:last-child{ - border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); -} - -.card-header-tabs{ - margin-right:-0.5rem; - margin-bottom:-0.5rem; - margin-left:-0.5rem; - border-bottom:0; -} - -.card-header-pills{ - margin-right:-0.5rem; - margin-left:-0.5rem; -} - -.card-img-overlay{ - position:absolute; - top:0; - right:0; - bottom:0; - left:0; - padding:1rem; - border-radius:calc(0.25rem - 1px); -} - -.card-img, -.card-img-top, -.card-img-bottom{ - width:100%; -} - -.card-img, -.card-img-top{ - border-top-left-radius:calc(0.25rem - 1px); - border-top-right-radius:calc(0.25rem - 1px); -} - -.card-img, -.card-img-bottom{ - border-bottom-right-radius:calc(0.25rem - 1px); - border-bottom-left-radius:calc(0.25rem - 1px); -} - -.card-group > .card{ - margin-bottom:0.75rem; -} -@media (min-width: 576px){ - .card-group{ - display:flex; - flex-flow:row wrap; - } - .card-group > .card{ - flex:1 0 0%; - margin-bottom:0; - } - .card-group > .card + .card{ - margin-left:0; - border-left:0; - } - .card-group > .card:not(:last-child){ - border-top-right-radius:0; - border-bottom-right-radius:0; - } - .card-group > .card:not(:last-child) .card-img-top, -.card-group > .card:not(:last-child) .card-header{ - border-top-right-radius:0; - } - .card-group > .card:not(:last-child) .card-img-bottom, -.card-group > .card:not(:last-child) .card-footer{ - border-bottom-right-radius:0; - } - .card-group > .card:not(:first-child){ - border-top-left-radius:0; - border-bottom-left-radius:0; - } - .card-group > .card:not(:first-child) .card-img-top, -.card-group > .card:not(:first-child) .card-header{ - border-top-left-radius:0; - } - .card-group > .card:not(:first-child) .card-img-bottom, -.card-group > .card:not(:first-child) .card-footer{ - border-bottom-left-radius:0; - } -} - -.accordion-button{ - position:relative; - display:flex; - align-items:center; - width:100%; - padding:1rem 1.25rem; - font-size:1rem; - color:#212529; - text-align:left; - background-color:#fff; - border:0; - border-radius:0; - overflow-anchor:none; - transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; -} -@media (prefers-reduced-motion: reduce){ - .accordion-button{ - transition:none; - } -} -.accordion-button:not(.collapsed){ - color:#0c63e4; - background-color:#e7f1ff; - box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.125); -} -.accordion-button:not(.collapsed)::after{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); - transform:rotate(-180deg); -} -.accordion-button::after{ - flex-shrink:0; - width:1.25rem; - height:1.25rem; - margin-left:auto; - content:""; - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); - background-repeat:no-repeat; - background-size:1.25rem; - transition:transform 0.2s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .accordion-button::after{ - transition:none; - } -} -.accordion-button:hover{ - z-index:2; -} -.accordion-button:focus{ - z-index:3; - border-color:#86b7fe; - outline:0; - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} - -.accordion-header{ - margin-bottom:0; -} - -.accordion-item{ - background-color:#fff; - border:1px solid rgba(0, 0, 0, 0.125); -} -.accordion-item:first-of-type{ - border-top-left-radius:0.25rem; - border-top-right-radius:0.25rem; -} -.accordion-item:first-of-type .accordion-button{ - border-top-left-radius:calc(0.25rem - 1px); - border-top-right-radius:calc(0.25rem - 1px); -} -.accordion-item:not(:first-of-type){ - border-top:0; -} -.accordion-item:last-of-type{ - border-bottom-right-radius:0.25rem; - border-bottom-left-radius:0.25rem; -} -.accordion-item:last-of-type .accordion-button.collapsed{ - border-bottom-right-radius:calc(0.25rem - 1px); - border-bottom-left-radius:calc(0.25rem - 1px); -} -.accordion-item:last-of-type .accordion-collapse{ - border-bottom-right-radius:0.25rem; - border-bottom-left-radius:0.25rem; -} - -.accordion-body{ - padding:1rem 1.25rem; -} - -.accordion-flush .accordion-collapse{ - border-width:0; -} -.accordion-flush .accordion-item{ - border-right:0; - border-left:0; - border-radius:0; -} -.accordion-flush .accordion-item:first-child{ - border-top:0; -} -.accordion-flush .accordion-item:last-child{ - border-bottom:0; -} -.accordion-flush .accordion-item .accordion-button{ - border-radius:0; -} - -.breadcrumb{ - display:flex; - flex-wrap:wrap; - padding:0 0; - margin-bottom:1rem; - list-style:none; -} - -.breadcrumb-item + .breadcrumb-item{ - padding-left:0.5rem; -} -.breadcrumb-item + .breadcrumb-item::before{ - float:left; - padding-right:0.5rem; - color:#6c757d; - content:var(--bs-breadcrumb-divider, "/"); -} -.breadcrumb-item.active{ - color:#6c757d; -} - -.pagination{ - display:flex; - padding-left:0; - list-style:none; -} - -.page-link{ - position:relative; - display:block; - color:#0d6efd; - text-decoration:none; - background-color:#fff; - border:1px solid #dee2e6; - transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .page-link{ - transition:none; - } -} -.page-link:hover{ - z-index:2; - color:#0a58ca; - background-color:#e9ecef; - border-color:#dee2e6; -} -.page-link:focus{ - z-index:3; - color:#0a58ca; - background-color:#e9ecef; - outline:0; - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} - -.page-item:not(:first-child) .page-link{ - margin-left:-1px; -} -.page-item.active .page-link{ - z-index:3; - color:#fff; - background-color:#0d6efd; - border-color:#0d6efd; -} -.page-item.disabled .page-link{ - color:#6c757d; - pointer-events:none; - background-color:#fff; - border-color:#dee2e6; -} - -.page-link{ - padding:0.375rem 0.75rem; -} - -.page-item:first-child .page-link{ - border-top-left-radius:0.25rem; - border-bottom-left-radius:0.25rem; -} -.page-item:last-child .page-link{ - border-top-right-radius:0.25rem; - border-bottom-right-radius:0.25rem; -} - -.pagination-lg .page-link{ - padding:0.75rem 1.5rem; - font-size:1.25rem; -} -.pagination-lg .page-item:first-child .page-link{ - border-top-left-radius:0.3rem; - border-bottom-left-radius:0.3rem; -} -.pagination-lg .page-item:last-child .page-link{ - border-top-right-radius:0.3rem; - border-bottom-right-radius:0.3rem; -} - -.pagination-sm .page-link{ - padding:0.25rem 0.5rem; - font-size:0.875rem; -} -.pagination-sm .page-item:first-child .page-link{ - border-top-left-radius:0.2rem; - border-bottom-left-radius:0.2rem; -} -.pagination-sm .page-item:last-child .page-link{ - border-top-right-radius:0.2rem; - border-bottom-right-radius:0.2rem; -} - -.badge{ - display:inline-block; - padding:0.35em 0.65em; - font-size:0.75em; - font-weight:700; - line-height:1; - color:#fff; - text-align:center; - white-space:nowrap; - vertical-align:baseline; - border-radius:0.25rem; -} -.badge:empty{ - display:none; -} - -.btn .badge{ - position:relative; - top:-1px; -} - -.alert{ - position:relative; - padding:1rem 1rem; - margin-bottom:1rem; - border:1px solid transparent; - border-radius:0.25rem; -} - -.alert-heading{ - color:inherit; -} - -.alert-link{ - font-weight:700; -} - -.alert-dismissible{ - padding-right:3rem; -} -.alert-dismissible .btn-close{ - position:absolute; - top:0; - right:0; - z-index:2; - padding:1.25rem 1rem; -} - -.alert-primary{ - color:#084298; - background-color:#cfe2ff; - border-color:#b6d4fe; -} -.alert-primary .alert-link{ - color:#06357a; -} - -.alert-secondary{ - color:#41464b; - background-color:#e2e3e5; - border-color:#d3d6d8; -} -.alert-secondary .alert-link{ - color:#34383c; -} - -.alert-success{ - color:#0f5132; - background-color:#d1e7dd; - border-color:#badbcc; -} -.alert-success .alert-link{ - color:#0c4128; -} - -.alert-info{ - color:#055160; - background-color:#cff4fc; - border-color:#b6effb; -} -.alert-info .alert-link{ - color:#04414d; -} - -.alert-warning{ - color:#664d03; - background-color:#fff3cd; - border-color:#ffecb5; -} -.alert-warning .alert-link{ - color:#523e02; -} - -.alert-danger{ - color:#842029; - background-color:#f8d7da; - border-color:#f5c2c7; -} -.alert-danger .alert-link{ - color:#6a1a21; -} - -.alert-light{ - color:#636464; - background-color:#fefefe; - border-color:#fdfdfe; -} -.alert-light .alert-link{ - color:#4f5050; -} - -.alert-dark{ - color:#141619; - background-color:#d3d3d4; - border-color:#bcbebf; -} -.alert-dark .alert-link{ - color:#101214; -} - -@-webkit-keyframes progress-bar-stripes{ - 0%{ - background-position-x:1rem; - } -} - -@keyframes progress-bar-stripes{ - 0%{ - background-position-x:1rem; - } -} -.progress{ - display:flex; - height:1rem; - overflow:hidden; - font-size:0.75rem; - background-color:#e9ecef; - border-radius:0.25rem; -} - -.progress-bar{ - display:flex; - flex-direction:column; - justify-content:center; - overflow:hidden; - color:#fff; - text-align:center; - white-space:nowrap; - background-color:#0d6efd; - transition:width 0.6s ease; -} -@media (prefers-reduced-motion: reduce){ - .progress-bar{ - transition:none; - } -} - -.progress-bar-striped{ - background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size:1rem 1rem; -} - -.progress-bar-animated{ - -webkit-animation:1s linear infinite progress-bar-stripes; - animation:1s linear infinite progress-bar-stripes; -} -@media (prefers-reduced-motion: reduce){ - .progress-bar-animated{ - -webkit-animation:none; - animation:none; - } -} - -.list-group{ - display:flex; - flex-direction:column; - padding-left:0; - margin-bottom:0; - border-radius:0.25rem; -} - -.list-group-numbered{ - list-style-type:none; - counter-reset:section; -} -.list-group-numbered > li::before{ - content:counters(section, ".") ". "; - counter-increment:section; -} - -.list-group-item-action{ - width:100%; - color:#495057; - text-align:inherit; -} -.list-group-item-action:hover, .list-group-item-action:focus{ - z-index:1; - color:#495057; - text-decoration:none; - background-color:#f8f9fa; -} -.list-group-item-action:active{ - color:#212529; - background-color:#e9ecef; -} - -.list-group-item{ - position:relative; - display:block; - padding:0.5rem 1rem; - color:#212529; - text-decoration:none; - background-color:#fff; - border:1px solid rgba(0, 0, 0, 0.125); -} -.list-group-item:first-child{ - border-top-left-radius:inherit; - border-top-right-radius:inherit; -} -.list-group-item:last-child{ - border-bottom-right-radius:inherit; - border-bottom-left-radius:inherit; -} -.list-group-item.disabled, .list-group-item:disabled{ - color:#6c757d; - pointer-events:none; - background-color:#fff; -} -.list-group-item.active{ - z-index:2; - color:#fff; - background-color:#0d6efd; - border-color:#0d6efd; -} -.list-group-item + .list-group-item{ - border-top-width:0; -} -.list-group-item + .list-group-item.active{ - margin-top:-1px; - border-top-width:1px; -} - -.list-group-horizontal{ - flex-direction:row; -} -.list-group-horizontal > .list-group-item:first-child{ - border-bottom-left-radius:0.25rem; - border-top-right-radius:0; -} -.list-group-horizontal > .list-group-item:last-child{ - border-top-right-radius:0.25rem; - border-bottom-left-radius:0; -} -.list-group-horizontal > .list-group-item.active{ - margin-top:0; -} -.list-group-horizontal > .list-group-item + .list-group-item{ - border-top-width:1px; - border-left-width:0; -} -.list-group-horizontal > .list-group-item + .list-group-item.active{ - margin-left:-1px; - border-left-width:1px; -} - -@media (min-width: 576px){ - .list-group-horizontal-sm{ - flex-direction:row; - } - .list-group-horizontal-sm > .list-group-item:first-child{ - border-bottom-left-radius:0.25rem; - border-top-right-radius:0; - } - .list-group-horizontal-sm > .list-group-item:last-child{ - border-top-right-radius:0.25rem; - border-bottom-left-radius:0; - } - .list-group-horizontal-sm > .list-group-item.active{ - margin-top:0; - } - .list-group-horizontal-sm > .list-group-item + .list-group-item{ - border-top-width:1px; - border-left-width:0; - } - .list-group-horizontal-sm > .list-group-item + .list-group-item.active{ - margin-left:-1px; - border-left-width:1px; - } -} -@media (min-width: 768px){ - .list-group-horizontal-md{ - flex-direction:row; - } - .list-group-horizontal-md > .list-group-item:first-child{ - border-bottom-left-radius:0.25rem; - border-top-right-radius:0; - } - .list-group-horizontal-md > .list-group-item:last-child{ - border-top-right-radius:0.25rem; - border-bottom-left-radius:0; - } - .list-group-horizontal-md > .list-group-item.active{ - margin-top:0; - } - .list-group-horizontal-md > .list-group-item + .list-group-item{ - border-top-width:1px; - border-left-width:0; - } - .list-group-horizontal-md > .list-group-item + .list-group-item.active{ - margin-left:-1px; - border-left-width:1px; - } -} -@media (min-width: 992px){ - .list-group-horizontal-lg{ - flex-direction:row; - } - .list-group-horizontal-lg > .list-group-item:first-child{ - border-bottom-left-radius:0.25rem; - border-top-right-radius:0; - } - .list-group-horizontal-lg > .list-group-item:last-child{ - border-top-right-radius:0.25rem; - border-bottom-left-radius:0; - } - .list-group-horizontal-lg > .list-group-item.active{ - margin-top:0; - } - .list-group-horizontal-lg > .list-group-item + .list-group-item{ - border-top-width:1px; - border-left-width:0; - } - .list-group-horizontal-lg > .list-group-item + .list-group-item.active{ - margin-left:-1px; - border-left-width:1px; - } -} -@media (min-width: 1200px){ - .list-group-horizontal-xl{ - flex-direction:row; - } - .list-group-horizontal-xl > .list-group-item:first-child{ - border-bottom-left-radius:0.25rem; - border-top-right-radius:0; - } - .list-group-horizontal-xl > .list-group-item:last-child{ - border-top-right-radius:0.25rem; - border-bottom-left-radius:0; - } - .list-group-horizontal-xl > .list-group-item.active{ - margin-top:0; - } - .list-group-horizontal-xl > .list-group-item + .list-group-item{ - border-top-width:1px; - border-left-width:0; - } - .list-group-horizontal-xl > .list-group-item + .list-group-item.active{ - margin-left:-1px; - border-left-width:1px; - } -} -@media (min-width: 1400px){ - .list-group-horizontal-xxl{ - flex-direction:row; - } - .list-group-horizontal-xxl > .list-group-item:first-child{ - border-bottom-left-radius:0.25rem; - border-top-right-radius:0; - } - .list-group-horizontal-xxl > .list-group-item:last-child{ - border-top-right-radius:0.25rem; - border-bottom-left-radius:0; - } - .list-group-horizontal-xxl > .list-group-item.active{ - margin-top:0; - } - .list-group-horizontal-xxl > .list-group-item + .list-group-item{ - border-top-width:1px; - border-left-width:0; - } - .list-group-horizontal-xxl > .list-group-item + .list-group-item.active{ - margin-left:-1px; - border-left-width:1px; - } -} -.list-group-flush{ - border-radius:0; -} -.list-group-flush > .list-group-item{ - border-width:0 0 1px; -} -.list-group-flush > .list-group-item:last-child{ - border-bottom-width:0; -} - -.list-group-item-primary{ - color:#084298; - background-color:#cfe2ff; -} -.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus{ - color:#084298; - background-color:#bacbe6; -} -.list-group-item-primary.list-group-item-action.active{ - color:#fff; - background-color:#084298; - border-color:#084298; -} - -.list-group-item-secondary{ - color:#41464b; - background-color:#e2e3e5; -} -.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus{ - color:#41464b; - background-color:#cbccce; -} -.list-group-item-secondary.list-group-item-action.active{ - color:#fff; - background-color:#41464b; - border-color:#41464b; -} - -.list-group-item-success{ - color:#0f5132; - background-color:#d1e7dd; -} -.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus{ - color:#0f5132; - background-color:#bcd0c7; -} -.list-group-item-success.list-group-item-action.active{ - color:#fff; - background-color:#0f5132; - border-color:#0f5132; -} - -.list-group-item-info{ - color:#055160; - background-color:#cff4fc; -} -.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus{ - color:#055160; - background-color:#badce3; -} -.list-group-item-info.list-group-item-action.active{ - color:#fff; - background-color:#055160; - border-color:#055160; -} - -.list-group-item-warning{ - color:#664d03; - background-color:#fff3cd; -} -.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus{ - color:#664d03; - background-color:#e6dbb9; -} -.list-group-item-warning.list-group-item-action.active{ - color:#fff; - background-color:#664d03; - border-color:#664d03; -} - -.list-group-item-danger{ - color:#842029; - background-color:#f8d7da; -} -.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus{ - color:#842029; - background-color:#dfc2c4; -} -.list-group-item-danger.list-group-item-action.active{ - color:#fff; - background-color:#842029; - border-color:#842029; -} - -.list-group-item-light{ - color:#636464; - background-color:#fefefe; -} -.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus{ - color:#636464; - background-color:#e5e5e5; -} -.list-group-item-light.list-group-item-action.active{ - color:#fff; - background-color:#636464; - border-color:#636464; -} - -.list-group-item-dark{ - color:#141619; - background-color:#d3d3d4; -} -.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus{ - color:#141619; - background-color:#bebebf; -} -.list-group-item-dark.list-group-item-action.active{ - color:#fff; - background-color:#141619; - border-color:#141619; -} - -.btn-close{ - box-sizing:content-box; - width:1em; - height:1em; - padding:0.25em 0.25em; - color:#000; - background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; - border:0; - border-radius:0.25rem; - opacity:0.5; -} -.btn-close:hover{ - color:#000; - text-decoration:none; - opacity:0.75; -} -.btn-close:focus{ - outline:0; - box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25); - opacity:1; -} -.btn-close:disabled, .btn-close.disabled{ - pointer-events:none; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; - opacity:0.25; -} - -.btn-close-white{ - filter:invert(1) grayscale(100%) brightness(200%); -} - -.toast{ - width:350px; - max-width:100%; - font-size:0.875rem; - pointer-events:auto; - background-color:rgba(255, 255, 255, 0.85); - background-clip:padding-box; - border:1px solid rgba(0, 0, 0, 0.1); - box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15); - border-radius:0.25rem; -} -.toast.showing{ - opacity:0; -} -.toast:not(.show){ - display:none; -} - -.toast-container{ - width:-webkit-max-content; - width:-moz-max-content; - width:max-content; - max-width:100%; - pointer-events:none; -} -.toast-container > :not(:last-child){ - margin-bottom:0.75rem; -} - -.toast-header{ - display:flex; - align-items:center; - padding:0.5rem 0.75rem; - color:#6c757d; - background-color:rgba(255, 255, 255, 0.85); - background-clip:padding-box; - border-bottom:1px solid rgba(0, 0, 0, 0.05); - border-top-left-radius:calc(0.25rem - 1px); - border-top-right-radius:calc(0.25rem - 1px); -} -.toast-header .btn-close{ - margin-right:-0.375rem; - margin-left:0.75rem; -} - -.toast-body{ - padding:0.75rem; - word-wrap:break-word; -} - -.modal{ - position:fixed; - top:0; - left:0; - z-index:1055; - display:none; - width:100%; - height:100%; - overflow-x:hidden; - overflow-y:auto; - outline:0; -} - -.modal-dialog{ - position:relative; - width:auto; - margin:0.5rem; - pointer-events:none; -} -.modal.fade .modal-dialog{ - transition:transform 0.3s ease-out; - transform:translate(0, -50px); -} -@media (prefers-reduced-motion: reduce){ - .modal.fade .modal-dialog{ - transition:none; - } -} -.modal.show .modal-dialog{ - transform:none; -} -.modal.modal-static .modal-dialog{ - transform:scale(1.02); -} - -.modal-dialog-scrollable{ - height:calc(100% - 1rem); -} -.modal-dialog-scrollable .modal-content{ - max-height:100%; - overflow:hidden; -} -.modal-dialog-scrollable .modal-body{ - overflow-y:auto; -} - -.modal-dialog-centered{ - display:flex; - align-items:center; - min-height:calc(100% - 1rem); -} - -.modal-content{ - position:relative; - display:flex; - flex-direction:column; - width:100%; - pointer-events:auto; - background-color:#fff; - background-clip:padding-box; - border:1px solid rgba(0, 0, 0, 0.2); - border-radius:0.3rem; - outline:0; -} - -.modal-backdrop{ - position:fixed; - top:0; - left:0; - z-index:1050; - width:100vw; - height:100vh; - background-color:#000; -} -.modal-backdrop.fade{ - opacity:0; -} -.modal-backdrop.show{ - opacity:0.5; -} - -.modal-header{ - display:flex; - flex-shrink:0; - align-items:center; - justify-content:space-between; - padding:1rem 1rem; - border-bottom:1px solid #dee2e6; - border-top-left-radius:calc(0.3rem - 1px); - border-top-right-radius:calc(0.3rem - 1px); -} -.modal-header .btn-close{ - padding:0.5rem 0.5rem; - margin:-0.5rem -0.5rem -0.5rem auto; -} - -.modal-title{ - margin-bottom:0; - line-height:1.5; -} - -.modal-body{ - position:relative; - flex:1 1 auto; - padding:1rem; -} - -.modal-footer{ - display:flex; - flex-wrap:wrap; - flex-shrink:0; - align-items:center; - justify-content:flex-end; - padding:0.75rem; - border-top:1px solid #dee2e6; - border-bottom-right-radius:calc(0.3rem - 1px); - border-bottom-left-radius:calc(0.3rem - 1px); -} -.modal-footer > *{ - margin:0.25rem; -} - -@media (min-width: 576px){ - .modal-dialog{ - max-width:500px; - margin:1.75rem auto; - } - - .modal-dialog-scrollable{ - height:calc(100% - 3.5rem); - } - - .modal-dialog-centered{ - min-height:calc(100% - 3.5rem); - } - - .modal-sm{ - max-width:300px; - } -} -@media (min-width: 992px){ - .modal-lg, -.modal-xl{ - max-width:800px; - } -} -@media (min-width: 1200px){ - .modal-xl{ - max-width:1140px; - } -} -.modal-fullscreen{ - width:100vw; - max-width:none; - height:100%; - margin:0; -} -.modal-fullscreen .modal-content{ - height:100%; - border:0; - border-radius:0; -} -.modal-fullscreen .modal-header{ - border-radius:0; -} -.modal-fullscreen .modal-body{ - overflow-y:auto; -} -.modal-fullscreen .modal-footer{ - border-radius:0; -} - -@media (max-width: 575.98px){ - .modal-fullscreen-sm-down{ - width:100vw; - max-width:none; - height:100%; - margin:0; - } - .modal-fullscreen-sm-down .modal-content{ - height:100%; - border:0; - border-radius:0; - } - .modal-fullscreen-sm-down .modal-header{ - border-radius:0; - } - .modal-fullscreen-sm-down .modal-body{ - overflow-y:auto; - } - .modal-fullscreen-sm-down .modal-footer{ - border-radius:0; - } -} -@media (max-width: 767.98px){ - .modal-fullscreen-md-down{ - width:100vw; - max-width:none; - height:100%; - margin:0; - } - .modal-fullscreen-md-down .modal-content{ - height:100%; - border:0; - border-radius:0; - } - .modal-fullscreen-md-down .modal-header{ - border-radius:0; - } - .modal-fullscreen-md-down .modal-body{ - overflow-y:auto; - } - .modal-fullscreen-md-down .modal-footer{ - border-radius:0; - } -} -@media (max-width: 991.98px){ - .modal-fullscreen-lg-down{ - width:100vw; - max-width:none; - height:100%; - margin:0; - } - .modal-fullscreen-lg-down .modal-content{ - height:100%; - border:0; - border-radius:0; - } - .modal-fullscreen-lg-down .modal-header{ - border-radius:0; - } - .modal-fullscreen-lg-down .modal-body{ - overflow-y:auto; - } - .modal-fullscreen-lg-down .modal-footer{ - border-radius:0; - } -} -@media (max-width: 1199.98px){ - .modal-fullscreen-xl-down{ - width:100vw; - max-width:none; - height:100%; - margin:0; - } - .modal-fullscreen-xl-down .modal-content{ - height:100%; - border:0; - border-radius:0; - } - .modal-fullscreen-xl-down .modal-header{ - border-radius:0; - } - .modal-fullscreen-xl-down .modal-body{ - overflow-y:auto; - } - .modal-fullscreen-xl-down .modal-footer{ - border-radius:0; - } -} -@media (max-width: 1399.98px){ - .modal-fullscreen-xxl-down{ - width:100vw; - max-width:none; - height:100%; - margin:0; - } - .modal-fullscreen-xxl-down .modal-content{ - height:100%; - border:0; - border-radius:0; - } - .modal-fullscreen-xxl-down .modal-header{ - border-radius:0; - } - .modal-fullscreen-xxl-down .modal-body{ - overflow-y:auto; - } - .modal-fullscreen-xxl-down .modal-footer{ - border-radius:0; - } -} -.tooltip{ - position:absolute; - z-index:1080; - display:block; - margin:0; - font-family:var(--bs-font-sans-serif); - font-style:normal; - font-weight:400; - line-height:1.5; - text-align:left; - text-align:start; - text-decoration:none; - text-shadow:none; - text-transform:none; - letter-spacing:normal; - word-break:normal; - word-spacing:normal; - white-space:normal; - line-break:auto; - font-size:0.875rem; - word-wrap:break-word; - opacity:0; -} -.tooltip.show{ - opacity:0.9; -} -.tooltip .tooltip-arrow{ - position:absolute; - display:block; - width:0.8rem; - height:0.4rem; -} -.tooltip .tooltip-arrow::before{ - position:absolute; - content:""; - border-color:transparent; - border-style:solid; -} - -.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top]{ - padding:0.4rem 0; -} -.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{ - bottom:0; -} -.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{ - top:-1px; - border-width:0.4rem 0.4rem 0; - border-top-color:#000; -} - -.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right]{ - padding:0 0.4rem; -} -.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{ - left:0; - width:0.4rem; - height:0.8rem; -} -.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{ - right:-1px; - border-width:0.4rem 0.4rem 0.4rem 0; - border-right-color:#000; -} - -.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom]{ - padding:0.4rem 0; -} -.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{ - top:0; -} -.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{ - bottom:-1px; - border-width:0 0.4rem 0.4rem; - border-bottom-color:#000; -} - -.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left]{ - padding:0 0.4rem; -} -.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{ - right:0; - width:0.4rem; - height:0.8rem; -} -.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{ - left:-1px; - border-width:0.4rem 0 0.4rem 0.4rem; - border-left-color:#000; -} - -.tooltip-inner{ - max-width:200px; - padding:0.25rem 0.5rem; - color:#fff; - text-align:center; - background-color:#000; - border-radius:0.25rem; -} - -.popover{ - position:absolute; - top:0; - left:0; - z-index:1070; - display:block; - max-width:276px; - font-family:var(--bs-font-sans-serif); - font-style:normal; - font-weight:400; - line-height:1.5; - text-align:left; - text-align:start; - text-decoration:none; - text-shadow:none; - text-transform:none; - letter-spacing:normal; - word-break:normal; - word-spacing:normal; - white-space:normal; - line-break:auto; - font-size:0.875rem; - word-wrap:break-word; - background-color:#fff; - background-clip:padding-box; - border:1px solid rgba(0, 0, 0, 0.2); - border-radius:0.3rem; -} -.popover .popover-arrow{ - position:absolute; - display:block; - width:1rem; - height:0.5rem; -} -.popover .popover-arrow::before, .popover .popover-arrow::after{ - position:absolute; - display:block; - content:""; - border-color:transparent; - border-style:solid; -} - -.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow{ - bottom:calc(-0.5rem - 1px); -} -.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before{ - bottom:0; - border-width:0.5rem 0.5rem 0; - border-top-color:rgba(0, 0, 0, 0.25); -} -.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after{ - bottom:1px; - border-width:0.5rem 0.5rem 0; - border-top-color:#fff; -} - -.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow{ - left:calc(-0.5rem - 1px); - width:0.5rem; - height:1rem; -} -.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before{ - left:0; - border-width:0.5rem 0.5rem 0.5rem 0; - border-right-color:rgba(0, 0, 0, 0.25); -} -.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after{ - left:1px; - border-width:0.5rem 0.5rem 0.5rem 0; - border-right-color:#fff; -} - -.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow{ - top:calc(-0.5rem - 1px); -} -.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before{ - top:0; - border-width:0 0.5rem 0.5rem 0.5rem; - border-bottom-color:rgba(0, 0, 0, 0.25); -} -.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after{ - top:1px; - border-width:0 0.5rem 0.5rem 0.5rem; - border-bottom-color:#fff; -} -.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{ - position:absolute; - top:0; - left:50%; - display:block; - width:1rem; - margin-left:-0.5rem; - content:""; - border-bottom:1px solid #f0f0f0; -} - -.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow{ - right:calc(-0.5rem - 1px); - width:0.5rem; - height:1rem; -} -.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before{ - right:0; - border-width:0.5rem 0 0.5rem 0.5rem; - border-left-color:rgba(0, 0, 0, 0.25); -} -.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after{ - right:1px; - border-width:0.5rem 0 0.5rem 0.5rem; - border-left-color:#fff; -} - -.popover-header{ - padding:0.5rem 1rem; - margin-bottom:0; - font-size:1rem; - background-color:#f0f0f0; - border-bottom:1px solid rgba(0, 0, 0, 0.2); - border-top-left-radius:calc(0.3rem - 1px); - border-top-right-radius:calc(0.3rem - 1px); -} -.popover-header:empty{ - display:none; -} - -.popover-body{ - padding:1rem 1rem; - color:#212529; -} - -.carousel{ - position:relative; -} - -.carousel.pointer-event{ - touch-action:pan-y; -} - -.carousel-inner{ - position:relative; - width:100%; - overflow:hidden; -} -.carousel-inner::after{ - display:block; - clear:both; - content:""; -} - -.carousel-item{ - position:relative; - display:none; - float:left; - width:100%; - margin-right:-100%; - -webkit-backface-visibility:hidden; - backface-visibility:hidden; - transition:transform 0.6s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .carousel-item{ - transition:none; - } -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev{ - display:block; -} -.carousel-item-next:not(.carousel-item-start), -.active.carousel-item-end{ - transform:translateX(100%); -} - -.carousel-item-prev:not(.carousel-item-end), -.active.carousel-item-start{ - transform:translateX(-100%); -} -.carousel-fade .carousel-item{ - opacity:0; - transition-property:opacity; - transform:none; -} -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-start, -.carousel-fade .carousel-item-prev.carousel-item-end{ - z-index:1; - opacity:1; -} -.carousel-fade .active.carousel-item-start, -.carousel-fade .active.carousel-item-end{ - z-index:0; - opacity:0; - transition:opacity 0s 0.6s; -} -@media (prefers-reduced-motion: reduce){ - .carousel-fade .active.carousel-item-start, -.carousel-fade .active.carousel-item-end{ - transition:none; - } -} - -.carousel-control-prev, -.carousel-control-next{ - position:absolute; - top:0; - bottom:0; - z-index:1; - display:flex; - align-items:center; - justify-content:center; - width:15%; - padding:0; - color:#fff; - text-align:center; - background:none; - border:0; - opacity:0.5; - transition:opacity 0.15s ease; -} -@media (prefers-reduced-motion: reduce){ - .carousel-control-prev, -.carousel-control-next{ - transition:none; - } -} -.carousel-control-prev:hover, .carousel-control-prev:focus, -.carousel-control-next:hover, -.carousel-control-next:focus{ - color:#fff; - text-decoration:none; - outline:0; - opacity:0.9; -} - -.carousel-control-prev{ - left:0; -} - -.carousel-control-next{ - right:0; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon{ - display:inline-block; - width:2rem; - height:2rem; - background-repeat:no-repeat; - background-position:50%; - background-size:100% 100%; -} -.carousel-control-prev-icon{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); -} - -.carousel-control-next-icon{ - background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); -} - -.carousel-indicators{ - position:absolute; - right:0; - bottom:0; - left:0; - z-index:2; - display:flex; - justify-content:center; - padding:0; - margin-right:15%; - margin-bottom:1rem; - margin-left:15%; - list-style:none; -} -.carousel-indicators [data-bs-target]{ - box-sizing:content-box; - flex:0 1 auto; - width:30px; - height:3px; - padding:0; - margin-right:3px; - margin-left:3px; - text-indent:-999px; - cursor:pointer; - background-color:#fff; - background-clip:padding-box; - border:0; - border-top:10px solid transparent; - border-bottom:10px solid transparent; - opacity:0.5; - transition:opacity 0.6s ease; -} -@media (prefers-reduced-motion: reduce){ - .carousel-indicators [data-bs-target]{ - transition:none; - } -} -.carousel-indicators .active{ - opacity:1; -} - -.carousel-caption{ - position:absolute; - right:15%; - bottom:1.25rem; - left:15%; - padding-top:1.25rem; - padding-bottom:1.25rem; - color:#fff; - text-align:center; -} - -.carousel-dark .carousel-control-prev-icon, -.carousel-dark .carousel-control-next-icon{ - filter:invert(1) grayscale(100); -} -.carousel-dark .carousel-indicators [data-bs-target]{ - background-color:#000; -} -.carousel-dark .carousel-caption{ - color:#000; -} - -@-webkit-keyframes spinner-border{ - to{ - transform:rotate(360deg); - } -} - -@keyframes spinner-border{ - to{ - transform:rotate(360deg); - } -} -.spinner-border{ - display:inline-block; - width:2rem; - height:2rem; - vertical-align:-0.125em; - border:0.25em solid currentColor; - border-right-color:transparent; - border-radius:50%; - -webkit-animation:0.75s linear infinite spinner-border; - animation:0.75s linear infinite spinner-border; -} - -.spinner-border-sm{ - width:1rem; - height:1rem; - border-width:0.2em; -} - -@-webkit-keyframes spinner-grow{ - 0%{ - transform:scale(0); - } - 50%{ - opacity:1; - transform:none; - } -} - -@keyframes spinner-grow{ - 0%{ - transform:scale(0); - } - 50%{ - opacity:1; - transform:none; - } -} -.spinner-grow{ - display:inline-block; - width:2rem; - height:2rem; - vertical-align:-0.125em; - background-color:currentColor; - border-radius:50%; - opacity:0; - -webkit-animation:0.75s linear infinite spinner-grow; - animation:0.75s linear infinite spinner-grow; -} - -.spinner-grow-sm{ - width:1rem; - height:1rem; -} - -@media (prefers-reduced-motion: reduce){ - .spinner-border, -.spinner-grow{ - -webkit-animation-duration:1.5s; - animation-duration:1.5s; - } -} -.offcanvas{ - position:fixed; - bottom:0; - z-index:1045; - display:flex; - flex-direction:column; - max-width:100%; - visibility:hidden; - background-color:#fff; - background-clip:padding-box; - outline:0; - transition:transform 0.3s ease-in-out; -} -@media (prefers-reduced-motion: reduce){ - .offcanvas{ - transition:none; - } -} - -.offcanvas-backdrop{ - position:fixed; - top:0; - left:0; - z-index:1040; - width:100vw; - height:100vh; - background-color:#000; -} -.offcanvas-backdrop.fade{ - opacity:0; -} -.offcanvas-backdrop.show{ - opacity:0.5; -} - -.offcanvas-header{ - display:flex; - align-items:center; - justify-content:space-between; - padding:1rem 1rem; -} -.offcanvas-header .btn-close{ - padding:0.5rem 0.5rem; - margin-top:-0.5rem; - margin-right:-0.5rem; - margin-bottom:-0.5rem; -} - -.offcanvas-title{ - margin-bottom:0; - line-height:1.5; -} - -.offcanvas-body{ - flex-grow:1; - padding:1rem 1rem; - overflow-y:auto; -} - -.offcanvas-start{ - top:0; - left:0; - width:400px; - border-right:1px solid rgba(0, 0, 0, 0.2); - transform:translateX(-100%); -} - -.offcanvas-end{ - top:0; - right:0; - width:400px; - border-left:1px solid rgba(0, 0, 0, 0.2); - transform:translateX(100%); -} - -.offcanvas-top{ - top:0; - right:0; - left:0; - height:30vh; - max-height:100%; - border-bottom:1px solid rgba(0, 0, 0, 0.2); - transform:translateY(-100%); -} - -.offcanvas-bottom{ - right:0; - left:0; - height:30vh; - max-height:100%; - border-top:1px solid rgba(0, 0, 0, 0.2); - transform:translateY(100%); -} - -.offcanvas.show{ - transform:none; -} - -.placeholder{ - display:inline-block; - min-height:1em; - vertical-align:middle; - cursor:wait; - background-color:currentColor; - opacity:0.5; -} -.placeholder.btn::before{ - display:inline-block; - content:""; -} - -.placeholder-xs{ - min-height:0.6em; -} - -.placeholder-sm{ - min-height:0.8em; -} - -.placeholder-lg{ - min-height:1.2em; -} - -.placeholder-glow .placeholder{ - -webkit-animation:placeholder-glow 2s ease-in-out infinite; - animation:placeholder-glow 2s ease-in-out infinite; -} - -@-webkit-keyframes placeholder-glow{ - 50%{ - opacity:0.2; - } -} - -@keyframes placeholder-glow{ - 50%{ - opacity:0.2; - } -} -.placeholder-wave{ - -webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); - mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); - -webkit-mask-size:200% 100%; - mask-size:200% 100%; - -webkit-animation:placeholder-wave 2s linear infinite; - animation:placeholder-wave 2s linear infinite; -} - -@-webkit-keyframes placeholder-wave{ - 100%{ - -webkit-mask-position:-200% 0%; - mask-position:-200% 0%; - } -} - -@keyframes placeholder-wave{ - 100%{ - -webkit-mask-position:-200% 0%; - mask-position:-200% 0%; - } -} -.clearfix::after{ - display:block; - clear:both; - content:""; -} - -.link-primary{ - color:#0d6efd; -} -.link-primary:hover, .link-primary:focus{ - color:#0a58ca; -} - -.link-secondary{ - color:#6c757d; -} -.link-secondary:hover, .link-secondary:focus{ - color:#565e64; -} - -.link-success{ - color:#198754; -} -.link-success:hover, .link-success:focus{ - color:#146c43; -} - -.link-info{ - color:#0dcaf0; -} -.link-info:hover, .link-info:focus{ - color:#3dd5f3; -} - -.link-warning{ - color:#ffc107; -} -.link-warning:hover, .link-warning:focus{ - color:#ffcd39; -} - -.link-danger{ - color:#dc3545; -} -.link-danger:hover, .link-danger:focus{ - color:#b02a37; -} - -.link-light{ - color:#f8f9fa; -} -.link-light:hover, .link-light:focus{ - color:#f9fafb; -} - -.link-dark{ - color:#212529; -} -.link-dark:hover, .link-dark:focus{ - color:#1a1e21; -} - -.ratio{ - position:relative; - width:100%; -} -.ratio::before{ - display:block; - padding-top:var(--bs-aspect-ratio); - content:""; -} -.ratio > *{ - position:absolute; - top:0; - left:0; - width:100%; - height:100%; -} - -.ratio-1x1{ - --bs-aspect-ratio:100%; -} - -.ratio-4x3{ - --bs-aspect-ratio:calc(3 / 4 * 100%); -} - -.ratio-16x9{ - --bs-aspect-ratio:calc(9 / 16 * 100%); -} - -.ratio-21x9{ - --bs-aspect-ratio:calc(9 / 21 * 100%); -} - -.fixed-top{ - position:fixed; - top:0; - right:0; - left:0; - z-index:1030; -} - -.fixed-bottom{ - position:fixed; - right:0; - bottom:0; - left:0; - z-index:1030; -} - -.sticky-top{ - position:-webkit-sticky; - position:sticky; - top:0; - z-index:1020; -} - -@media (min-width: 576px){ - .sticky-sm-top{ - position:-webkit-sticky; - position:sticky; - top:0; - z-index:1020; - } -} -@media (min-width: 768px){ - .sticky-md-top{ - position:-webkit-sticky; - position:sticky; - top:0; - z-index:1020; - } -} -@media (min-width: 992px){ - .sticky-lg-top{ - position:-webkit-sticky; - position:sticky; - top:0; - z-index:1020; - } -} -@media (min-width: 1200px){ - .sticky-xl-top{ - position:-webkit-sticky; - position:sticky; - top:0; - z-index:1020; - } -} -@media (min-width: 1400px){ - .sticky-xxl-top{ - position:-webkit-sticky; - position:sticky; - top:0; - z-index:1020; - } -} -.hstack{ - display:flex; - flex-direction:row; - align-items:center; - align-self:stretch; -} - -.vstack{ - display:flex; - flex:1 1 auto; - flex-direction:column; - align-self:stretch; -} - -.visually-hidden, -.visually-hidden-focusable:not(:focus):not(:focus-within){ - position:absolute !important; - width:1px !important; - height:1px !important; - padding:0 !important; - margin:-1px !important; - overflow:hidden !important; - clip:rect(0, 0, 0, 0) !important; - white-space:nowrap !important; - border:0 !important; -} - -.stretched-link::after{ - position:absolute; - top:0; - right:0; - bottom:0; - left:0; - z-index:1; - content:""; -} - -.text-truncate{ - overflow:hidden; - text-overflow:ellipsis; - white-space:nowrap; -} - -.vr{ - display:inline-block; - align-self:stretch; - width:1px; - min-height:1em; - background-color:currentColor; - opacity:0.25; -} - -.align-baseline{ - vertical-align:baseline !important; -} - -.align-top{ - vertical-align:top !important; -} - -.align-middle{ - vertical-align:middle !important; -} - -.align-bottom{ - vertical-align:bottom !important; -} - -.align-text-bottom{ - vertical-align:text-bottom !important; -} - -.align-text-top{ - vertical-align:text-top !important; -} - -.float-start{ - float:left !important; -} - -.float-end{ - float:right !important; -} - -.float-none{ - float:none !important; -} - -.opacity-0{ - opacity:0 !important; -} - -.opacity-25{ - opacity:0.25 !important; -} - -.opacity-50{ - opacity:0.5 !important; -} - -.opacity-75{ - opacity:0.75 !important; -} - -.opacity-100{ - opacity:1 !important; -} - -.overflow-auto{ - overflow:auto !important; -} - -.overflow-hidden{ - overflow:hidden !important; -} - -.overflow-visible{ - overflow:visible !important; -} - -.overflow-scroll{ - overflow:scroll !important; -} - -.d-inline{ - display:inline !important; -} - -.d-inline-block{ - display:inline-block !important; -} - -.d-block{ - display:block !important; -} - -.d-grid{ - display:grid !important; -} - -.d-table{ - display:table !important; -} - -.d-table-row{ - display:table-row !important; -} - -.d-table-cell{ - display:table-cell !important; -} - -.d-flex{ - display:flex !important; -} - -.d-inline-flex{ - display:inline-flex !important; -} - -.d-none{ - display:none !important; -} - -.shadow{ - box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; -} - -.shadow-sm{ - box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; -} - -.shadow-lg{ - box-shadow:0 1rem 3rem rgba(0, 0, 0, 0.175) !important; -} - -.shadow-none{ - box-shadow:none !important; -} - -.position-static{ - position:static !important; -} - -.position-relative{ - position:relative !important; -} - -.position-absolute{ - position:absolute !important; -} - -.position-fixed{ - position:fixed !important; -} - -.position-sticky{ - position:-webkit-sticky !important; - position:sticky !important; -} - -.top-0{ - top:0 !important; -} - -.top-50{ - top:50% !important; -} - -.top-100{ - top:100% !important; -} - -.bottom-0{ - bottom:0 !important; -} - -.bottom-50{ - bottom:50% !important; -} - -.bottom-100{ - bottom:100% !important; -} - -.start-0{ - left:0 !important; -} - -.start-50{ - left:50% !important; -} - -.start-100{ - left:100% !important; -} - -.end-0{ - right:0 !important; -} - -.end-50{ - right:50% !important; -} - -.end-100{ - right:100% !important; -} - -.translate-middle{ - transform:translate(-50%, -50%) !important; -} - -.translate-middle-x{ - transform:translateX(-50%) !important; -} - -.translate-middle-y{ - transform:translateY(-50%) !important; -} - -.border{ - border:1px solid #dee2e6 !important; -} - -.border-0{ - border:0 !important; -} - -.border-top{ - border-top:1px solid #dee2e6 !important; -} - -.border-top-0{ - border-top:0 !important; -} - -.border-end{ - border-right:1px solid #dee2e6 !important; -} - -.border-end-0{ - border-right:0 !important; -} - -.border-bottom{ - border-bottom:1px solid #dee2e6 !important; -} - -.border-bottom-0{ - border-bottom:0 !important; -} - -.border-start{ - border-left:1px solid #dee2e6 !important; -} - -.border-start-0{ - border-left:0 !important; -} - -.border-primary{ - border-color:#0d6efd !important; -} - -.border-secondary{ - border-color:#6c757d !important; -} - -.border-success{ - border-color:#198754 !important; -} - -.border-info{ - border-color:#0dcaf0 !important; -} - -.border-warning{ - border-color:#ffc107 !important; -} - -.border-danger{ - border-color:#dc3545 !important; -} - -.border-light{ - border-color:#f8f9fa !important; -} - -.border-dark{ - border-color:#212529 !important; -} - -.border-white{ - border-color:#fff !important; -} - -.border-1{ - border-width:1px !important; -} - -.border-2{ - border-width:2px !important; -} - -.border-3{ - border-width:3px !important; -} - -.border-4{ - border-width:4px !important; -} - -.border-5{ - border-width:5px !important; -} - -.w-25{ - width:25% !important; -} - -.w-50{ - width:50% !important; -} - -.w-75{ - width:75% !important; -} - -.w-100{ - width:100% !important; -} - -.w-auto{ - width:auto !important; -} - -.mw-100{ - max-width:100% !important; -} - -.vw-100{ - width:100vw !important; -} - -.min-vw-100{ - min-width:100vw !important; -} - -.h-25{ - height:25% !important; -} - -.h-50{ - height:50% !important; -} - -.h-75{ - height:75% !important; -} - -.h-100{ - height:100% !important; -} - -.h-auto{ - height:auto !important; -} - -.mh-100{ - max-height:100% !important; -} - -.vh-100{ - height:100vh !important; -} - -.min-vh-100{ - min-height:100vh !important; -} - -.flex-fill{ - flex:1 1 auto !important; -} - -.flex-row{ - flex-direction:row !important; -} - -.flex-column{ - flex-direction:column !important; -} - -.flex-row-reverse{ - flex-direction:row-reverse !important; -} - -.flex-column-reverse{ - flex-direction:column-reverse !important; -} - -.flex-grow-0{ - flex-grow:0 !important; -} - -.flex-grow-1{ - flex-grow:1 !important; -} - -.flex-shrink-0{ - flex-shrink:0 !important; -} - -.flex-shrink-1{ - flex-shrink:1 !important; -} - -.flex-wrap{ - flex-wrap:wrap !important; -} - -.flex-nowrap{ - flex-wrap:nowrap !important; -} - -.flex-wrap-reverse{ - flex-wrap:wrap-reverse !important; -} - -.gap-0{ - gap:0 !important; -} - -.gap-1{ - gap:0.25rem !important; -} - -.gap-2{ - gap:0.5rem !important; -} - -.gap-3{ - gap:1rem !important; -} - -.gap-4{ - gap:1.5rem !important; -} - -.gap-5{ - gap:3rem !important; -} - -.justify-content-start{ - justify-content:flex-start !important; -} - -.justify-content-end{ - justify-content:flex-end !important; -} - -.justify-content-center{ - justify-content:center !important; -} - -.justify-content-between{ - justify-content:space-between !important; -} - -.justify-content-around{ - justify-content:space-around !important; -} - -.justify-content-evenly{ - justify-content:space-evenly !important; -} - -.align-items-start{ - align-items:flex-start !important; -} - -.align-items-end{ - align-items:flex-end !important; -} - -.align-items-center{ - align-items:center !important; -} - -.align-items-baseline{ - align-items:baseline !important; -} - -.align-items-stretch{ - align-items:stretch !important; -} - -.align-content-start{ - align-content:flex-start !important; -} - -.align-content-end{ - align-content:flex-end !important; -} - -.align-content-center{ - align-content:center !important; -} - -.align-content-between{ - align-content:space-between !important; -} - -.align-content-around{ - align-content:space-around !important; -} - -.align-content-stretch{ - align-content:stretch !important; -} - -.align-self-auto{ - align-self:auto !important; -} - -.align-self-start{ - align-self:flex-start !important; -} - -.align-self-end{ - align-self:flex-end !important; -} - -.align-self-center{ - align-self:center !important; -} - -.align-self-baseline{ - align-self:baseline !important; -} - -.align-self-stretch{ - align-self:stretch !important; -} - -.order-first{ - order:-1 !important; -} - -.order-0{ - order:0 !important; -} - -.order-1{ - order:1 !important; -} - -.order-2{ - order:2 !important; -} - -.order-3{ - order:3 !important; -} - -.order-4{ - order:4 !important; -} - -.order-5{ - order:5 !important; -} - -.order-last{ - order:6 !important; -} - -.m-0{ - margin:0 !important; -} - -.m-1{ - margin:0.25rem !important; -} - -.m-2{ - margin:0.5rem !important; -} - -.m-3{ - margin:1rem !important; -} - -.m-4{ - margin:1.5rem !important; -} - -.m-5{ - margin:3rem !important; -} - -.m-auto{ - margin:auto !important; -} - -.mx-0{ - margin-right:0 !important; - margin-left:0 !important; -} - -.mx-1{ - margin-right:0.25rem !important; - margin-left:0.25rem !important; -} - -.mx-2{ - margin-right:0.5rem !important; - margin-left:0.5rem !important; -} - -.mx-3{ - margin-right:1rem !important; - margin-left:1rem !important; -} - -.mx-4{ - margin-right:1.5rem !important; - margin-left:1.5rem !important; -} - -.mx-5{ - margin-right:3rem !important; - margin-left:3rem !important; -} - -.mx-auto{ - margin-right:auto !important; - margin-left:auto !important; -} - -.my-0{ - margin-top:0 !important; - margin-bottom:0 !important; -} - -.my-1{ - margin-top:0.25rem !important; - margin-bottom:0.25rem !important; -} - -.my-2{ - margin-top:0.5rem !important; - margin-bottom:0.5rem !important; -} - -.my-3{ - margin-top:1rem !important; - margin-bottom:1rem !important; -} - -.my-4{ - margin-top:1.5rem !important; - margin-bottom:1.5rem !important; -} - -.my-5{ - margin-top:3rem !important; - margin-bottom:3rem !important; -} - -.my-auto{ - margin-top:auto !important; - margin-bottom:auto !important; -} - -.mt-0{ - margin-top:0 !important; -} - -.mt-1{ - margin-top:0.25rem !important; -} - -.mt-2{ - margin-top:0.5rem !important; -} - -.mt-3{ - margin-top:1rem !important; -} - -.mt-4{ - margin-top:1.5rem !important; -} - -.mt-5{ - margin-top:3rem !important; -} - -.mt-auto{ - margin-top:auto !important; -} - -.me-0{ - margin-right:0 !important; -} - -.me-1{ - margin-right:0.25rem !important; -} - -.me-2{ - margin-right:0.5rem !important; -} - -.me-3{ - margin-right:1rem !important; -} - -.me-4{ - margin-right:1.5rem !important; -} - -.me-5{ - margin-right:3rem !important; -} - -.me-auto{ - margin-right:auto !important; -} - -.mb-0{ - margin-bottom:0 !important; -} - -.mb-1{ - margin-bottom:0.25rem !important; -} - -.mb-2{ - margin-bottom:0.5rem !important; -} - -.mb-3{ - margin-bottom:1rem !important; -} - -.mb-4{ - margin-bottom:1.5rem !important; -} - -.mb-5{ - margin-bottom:3rem !important; -} - -.mb-auto{ - margin-bottom:auto !important; -} - -.ms-0{ - margin-left:0 !important; -} - -.ms-1{ - margin-left:0.25rem !important; -} - -.ms-2{ - margin-left:0.5rem !important; -} - -.ms-3{ - margin-left:1rem !important; -} - -.ms-4{ - margin-left:1.5rem !important; -} - -.ms-5{ - margin-left:3rem !important; -} - -.ms-auto{ - margin-left:auto !important; -} - -.p-0{ - padding:0 !important; -} - -.p-1{ - padding:0.25rem !important; -} - -.p-2{ - padding:0.5rem !important; -} - -.p-3{ - padding:1rem !important; -} - -.p-4{ - padding:1.5rem !important; -} - -.p-5{ - padding:3rem !important; -} - -.px-0{ - padding-right:0 !important; - padding-left:0 !important; -} - -.px-1{ - padding-right:0.25rem !important; - padding-left:0.25rem !important; -} - -.px-2{ - padding-right:0.5rem !important; - padding-left:0.5rem !important; -} - -.px-3{ - padding-right:1rem !important; - padding-left:1rem !important; -} - -.px-4{ - padding-right:1.5rem !important; - padding-left:1.5rem !important; -} - -.px-5{ - padding-right:3rem !important; - padding-left:3rem !important; -} - -.py-0{ - padding-top:0 !important; - padding-bottom:0 !important; -} - -.py-1{ - padding-top:0.25rem !important; - padding-bottom:0.25rem !important; -} - -.py-2{ - padding-top:0.5rem !important; - padding-bottom:0.5rem !important; -} - -.py-3{ - padding-top:1rem !important; - padding-bottom:1rem !important; -} - -.py-4{ - padding-top:1.5rem !important; - padding-bottom:1.5rem !important; -} - -.py-5{ - padding-top:3rem !important; - padding-bottom:3rem !important; -} - -.pt-0{ - padding-top:0 !important; -} - -.pt-1{ - padding-top:0.25rem !important; -} - -.pt-2{ - padding-top:0.5rem !important; -} - -.pt-3{ - padding-top:1rem !important; -} - -.pt-4{ - padding-top:1.5rem !important; -} - -.pt-5{ - padding-top:3rem !important; -} - -.pe-0{ - padding-right:0 !important; -} - -.pe-1{ - padding-right:0.25rem !important; -} - -.pe-2{ - padding-right:0.5rem !important; -} - -.pe-3{ - padding-right:1rem !important; -} - -.pe-4{ - padding-right:1.5rem !important; -} - -.pe-5{ - padding-right:3rem !important; -} - -.pb-0{ - padding-bottom:0 !important; -} - -.pb-1{ - padding-bottom:0.25rem !important; -} - -.pb-2{ - padding-bottom:0.5rem !important; -} - -.pb-3{ - padding-bottom:1rem !important; -} - -.pb-4{ - padding-bottom:1.5rem !important; -} - -.pb-5{ - padding-bottom:3rem !important; -} - -.ps-0{ - padding-left:0 !important; -} - -.ps-1{ - padding-left:0.25rem !important; -} - -.ps-2{ - padding-left:0.5rem !important; -} - -.ps-3{ - padding-left:1rem !important; -} - -.ps-4{ - padding-left:1.5rem !important; -} - -.ps-5{ - padding-left:3rem !important; -} - -.font-monospace{ - font-family:var(--bs-font-monospace) !important; -} - -.fs-1{ - font-size:calc(1.375rem + 1.5vw) !important; -} - -.fs-2{ - font-size:calc(1.325rem + 0.9vw) !important; -} - -.fs-3{ - font-size:calc(1.3rem + 0.6vw) !important; -} - -.fs-4{ - font-size:calc(1.275rem + 0.3vw) !important; -} - -.fs-5{ - font-size:1.25rem !important; -} - -.fs-6{ - font-size:1rem !important; -} - -.fst-italic{ - font-style:italic !important; -} - -.fst-normal{ - font-style:normal !important; -} - -.fw-light{ - font-weight:300 !important; -} - -.fw-lighter{ - font-weight:lighter !important; -} - -.fw-normal{ - font-weight:400 !important; -} - -.fw-bold{ - font-weight:700 !important; -} - -.fw-bolder{ - font-weight:bolder !important; -} - -.lh-1{ - line-height:1 !important; -} - -.lh-sm{ - line-height:1.25 !important; -} - -.lh-base{ - line-height:1.5 !important; -} - -.lh-lg{ - line-height:2 !important; -} - -.text-start{ - text-align:left !important; -} - -.text-end{ - text-align:right !important; -} - -.text-center{ - text-align:center !important; -} - -.text-decoration-none{ - text-decoration:none !important; -} - -.text-decoration-underline{ - text-decoration:underline !important; -} - -.text-decoration-line-through{ - text-decoration:line-through !important; -} - -.text-lowercase{ - text-transform:lowercase !important; -} - -.text-uppercase{ - text-transform:uppercase !important; -} - -.text-capitalize{ - text-transform:capitalize !important; -} - -.text-wrap{ - white-space:normal !important; -} - -.text-nowrap{ - white-space:nowrap !important; -} -.text-break{ - word-wrap:break-word !important; - word-break:break-word !important; -} -.text-primary{ - --bs-text-opacity:1; - color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; -} - -.text-secondary{ - --bs-text-opacity:1; - color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; -} - -.text-success{ - --bs-text-opacity:1; - color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; -} - -.text-info{ - --bs-text-opacity:1; - color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; -} - -.text-warning{ - --bs-text-opacity:1; - color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; -} - -.text-danger{ - --bs-text-opacity:1; - color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; -} - -.text-light{ - --bs-text-opacity:1; - color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; -} - -.text-dark{ - --bs-text-opacity:1; - color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; -} - -.text-black{ - --bs-text-opacity:1; - color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; -} - -.text-white{ - --bs-text-opacity:1; - color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; -} - -.text-body{ - --bs-text-opacity:1; - color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; -} - -.text-muted{ - --bs-text-opacity:1; - color:#6c757d !important; -} - -.text-black-50{ - --bs-text-opacity:1; - color:rgba(0, 0, 0, 0.5) !important; -} - -.text-white-50{ - --bs-text-opacity:1; - color:rgba(255, 255, 255, 0.5) !important; -} - -.text-reset{ - --bs-text-opacity:1; - color:inherit !important; -} - -.text-opacity-25{ - --bs-text-opacity:0.25; -} - -.text-opacity-50{ - --bs-text-opacity:0.5; -} - -.text-opacity-75{ - --bs-text-opacity:0.75; -} - -.text-opacity-100{ - --bs-text-opacity:1; -} - -.bg-primary{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-secondary{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-success{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-info{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-warning{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-danger{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-light{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-dark{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-black{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-white{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-body{ - --bs-bg-opacity:1; - background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; -} - -.bg-transparent{ - --bs-bg-opacity:1; - background-color:transparent !important; -} - -.bg-opacity-10{ - --bs-bg-opacity:0.1; -} - -.bg-opacity-25{ - --bs-bg-opacity:0.25; -} - -.bg-opacity-50{ - --bs-bg-opacity:0.5; -} - -.bg-opacity-75{ - --bs-bg-opacity:0.75; -} - -.bg-opacity-100{ - --bs-bg-opacity:1; -} - -.bg-gradient{ - background-image:var(--bs-gradient) !important; -} - -.user-select-all{ - -webkit-user-select:all !important; - -moz-user-select:all !important; - -ms-user-select:all !important; - user-select:all !important; -} - -.user-select-auto{ - -webkit-user-select:auto !important; - -moz-user-select:auto !important; - -ms-user-select:auto !important; - user-select:auto !important; -} - -.user-select-none{ - -webkit-user-select:none !important; - -moz-user-select:none !important; - -ms-user-select:none !important; - user-select:none !important; -} - -.pe-none{ - pointer-events:none !important; -} - -.pe-auto{ - pointer-events:auto !important; -} - -.rounded{ - border-radius:0.25rem !important; -} - -.rounded-0{ - border-radius:0 !important; -} - -.rounded-1{ - border-radius:0.2rem !important; -} - -.rounded-2{ - border-radius:0.25rem !important; -} - -.rounded-3{ - border-radius:0.3rem !important; -} - -.rounded-circle{ - border-radius:50% !important; -} - -.rounded-pill{ - border-radius:50rem !important; -} - -.rounded-top{ - border-top-left-radius:0.25rem !important; - border-top-right-radius:0.25rem !important; -} - -.rounded-end{ - border-top-right-radius:0.25rem !important; - border-bottom-right-radius:0.25rem !important; -} - -.rounded-bottom{ - border-bottom-right-radius:0.25rem !important; - border-bottom-left-radius:0.25rem !important; -} - -.rounded-start{ - border-bottom-left-radius:0.25rem !important; - border-top-left-radius:0.25rem !important; -} - -.visible{ - visibility:visible !important; -} - -.invisible{ - visibility:hidden !important; -} - -@media (min-width: 576px){ - .float-sm-start{ - float:left !important; - } - - .float-sm-end{ - float:right !important; - } - - .float-sm-none{ - float:none !important; - } - - .d-sm-inline{ - display:inline !important; - } - - .d-sm-inline-block{ - display:inline-block !important; - } - - .d-sm-block{ - display:block !important; - } - - .d-sm-grid{ - display:grid !important; - } - - .d-sm-table{ - display:table !important; - } - - .d-sm-table-row{ - display:table-row !important; - } - - .d-sm-table-cell{ - display:table-cell !important; - } - - .d-sm-flex{ - display:flex !important; - } - - .d-sm-inline-flex{ - display:inline-flex !important; - } - - .d-sm-none{ - display:none !important; - } - - .flex-sm-fill{ - flex:1 1 auto !important; - } - - .flex-sm-row{ - flex-direction:row !important; - } - - .flex-sm-column{ - flex-direction:column !important; - } - - .flex-sm-row-reverse{ - flex-direction:row-reverse !important; - } - - .flex-sm-column-reverse{ - flex-direction:column-reverse !important; - } - - .flex-sm-grow-0{ - flex-grow:0 !important; - } - - .flex-sm-grow-1{ - flex-grow:1 !important; - } - - .flex-sm-shrink-0{ - flex-shrink:0 !important; - } - - .flex-sm-shrink-1{ - flex-shrink:1 !important; - } - - .flex-sm-wrap{ - flex-wrap:wrap !important; - } - - .flex-sm-nowrap{ - flex-wrap:nowrap !important; - } - - .flex-sm-wrap-reverse{ - flex-wrap:wrap-reverse !important; - } - - .gap-sm-0{ - gap:0 !important; - } - - .gap-sm-1{ - gap:0.25rem !important; - } - - .gap-sm-2{ - gap:0.5rem !important; - } - - .gap-sm-3{ - gap:1rem !important; - } - - .gap-sm-4{ - gap:1.5rem !important; - } - - .gap-sm-5{ - gap:3rem !important; - } - - .justify-content-sm-start{ - justify-content:flex-start !important; - } - - .justify-content-sm-end{ - justify-content:flex-end !important; - } - - .justify-content-sm-center{ - justify-content:center !important; - } - - .justify-content-sm-between{ - justify-content:space-between !important; - } - - .justify-content-sm-around{ - justify-content:space-around !important; - } - - .justify-content-sm-evenly{ - justify-content:space-evenly !important; - } - - .align-items-sm-start{ - align-items:flex-start !important; - } - - .align-items-sm-end{ - align-items:flex-end !important; - } - - .align-items-sm-center{ - align-items:center !important; - } - - .align-items-sm-baseline{ - align-items:baseline !important; - } - - .align-items-sm-stretch{ - align-items:stretch !important; - } - - .align-content-sm-start{ - align-content:flex-start !important; - } - - .align-content-sm-end{ - align-content:flex-end !important; - } - - .align-content-sm-center{ - align-content:center !important; - } - - .align-content-sm-between{ - align-content:space-between !important; - } - - .align-content-sm-around{ - align-content:space-around !important; - } - - .align-content-sm-stretch{ - align-content:stretch !important; - } - - .align-self-sm-auto{ - align-self:auto !important; - } - - .align-self-sm-start{ - align-self:flex-start !important; - } - - .align-self-sm-end{ - align-self:flex-end !important; - } - - .align-self-sm-center{ - align-self:center !important; - } - - .align-self-sm-baseline{ - align-self:baseline !important; - } - - .align-self-sm-stretch{ - align-self:stretch !important; - } - - .order-sm-first{ - order:-1 !important; - } - - .order-sm-0{ - order:0 !important; - } - - .order-sm-1{ - order:1 !important; - } - - .order-sm-2{ - order:2 !important; - } - - .order-sm-3{ - order:3 !important; - } - - .order-sm-4{ - order:4 !important; - } - - .order-sm-5{ - order:5 !important; - } - - .order-sm-last{ - order:6 !important; - } - - .m-sm-0{ - margin:0 !important; - } - - .m-sm-1{ - margin:0.25rem !important; - } - - .m-sm-2{ - margin:0.5rem !important; - } - - .m-sm-3{ - margin:1rem !important; - } - - .m-sm-4{ - margin:1.5rem !important; - } - - .m-sm-5{ - margin:3rem !important; - } - - .m-sm-auto{ - margin:auto !important; - } - - .mx-sm-0{ - margin-right:0 !important; - margin-left:0 !important; - } - - .mx-sm-1{ - margin-right:0.25rem !important; - margin-left:0.25rem !important; - } - - .mx-sm-2{ - margin-right:0.5rem !important; - margin-left:0.5rem !important; - } - - .mx-sm-3{ - margin-right:1rem !important; - margin-left:1rem !important; - } - - .mx-sm-4{ - margin-right:1.5rem !important; - margin-left:1.5rem !important; - } - - .mx-sm-5{ - margin-right:3rem !important; - margin-left:3rem !important; - } - - .mx-sm-auto{ - margin-right:auto !important; - margin-left:auto !important; - } - - .my-sm-0{ - margin-top:0 !important; - margin-bottom:0 !important; - } - - .my-sm-1{ - margin-top:0.25rem !important; - margin-bottom:0.25rem !important; - } - - .my-sm-2{ - margin-top:0.5rem !important; - margin-bottom:0.5rem !important; - } - - .my-sm-3{ - margin-top:1rem !important; - margin-bottom:1rem !important; - } - - .my-sm-4{ - margin-top:1.5rem !important; - margin-bottom:1.5rem !important; - } - - .my-sm-5{ - margin-top:3rem !important; - margin-bottom:3rem !important; - } - - .my-sm-auto{ - margin-top:auto !important; - margin-bottom:auto !important; - } - - .mt-sm-0{ - margin-top:0 !important; - } - - .mt-sm-1{ - margin-top:0.25rem !important; - } - - .mt-sm-2{ - margin-top:0.5rem !important; - } - - .mt-sm-3{ - margin-top:1rem !important; - } - - .mt-sm-4{ - margin-top:1.5rem !important; - } - - .mt-sm-5{ - margin-top:3rem !important; - } - - .mt-sm-auto{ - margin-top:auto !important; - } - - .me-sm-0{ - margin-right:0 !important; - } - - .me-sm-1{ - margin-right:0.25rem !important; - } - - .me-sm-2{ - margin-right:0.5rem !important; - } - - .me-sm-3{ - margin-right:1rem !important; - } - - .me-sm-4{ - margin-right:1.5rem !important; - } - - .me-sm-5{ - margin-right:3rem !important; - } - - .me-sm-auto{ - margin-right:auto !important; - } - - .mb-sm-0{ - margin-bottom:0 !important; - } - - .mb-sm-1{ - margin-bottom:0.25rem !important; - } - - .mb-sm-2{ - margin-bottom:0.5rem !important; - } - - .mb-sm-3{ - margin-bottom:1rem !important; - } - - .mb-sm-4{ - margin-bottom:1.5rem !important; - } - - .mb-sm-5{ - margin-bottom:3rem !important; - } - - .mb-sm-auto{ - margin-bottom:auto !important; - } - - .ms-sm-0{ - margin-left:0 !important; - } - - .ms-sm-1{ - margin-left:0.25rem !important; - } - - .ms-sm-2{ - margin-left:0.5rem !important; - } - - .ms-sm-3{ - margin-left:1rem !important; - } - - .ms-sm-4{ - margin-left:1.5rem !important; - } - - .ms-sm-5{ - margin-left:3rem !important; - } - - .ms-sm-auto{ - margin-left:auto !important; - } - - .p-sm-0{ - padding:0 !important; - } - - .p-sm-1{ - padding:0.25rem !important; - } - - .p-sm-2{ - padding:0.5rem !important; - } - - .p-sm-3{ - padding:1rem !important; - } - - .p-sm-4{ - padding:1.5rem !important; - } - - .p-sm-5{ - padding:3rem !important; - } - - .px-sm-0{ - padding-right:0 !important; - padding-left:0 !important; - } - - .px-sm-1{ - padding-right:0.25rem !important; - padding-left:0.25rem !important; - } - - .px-sm-2{ - padding-right:0.5rem !important; - padding-left:0.5rem !important; - } - - .px-sm-3{ - padding-right:1rem !important; - padding-left:1rem !important; - } - - .px-sm-4{ - padding-right:1.5rem !important; - padding-left:1.5rem !important; - } - - .px-sm-5{ - padding-right:3rem !important; - padding-left:3rem !important; - } - - .py-sm-0{ - padding-top:0 !important; - padding-bottom:0 !important; - } - - .py-sm-1{ - padding-top:0.25rem !important; - padding-bottom:0.25rem !important; - } - - .py-sm-2{ - padding-top:0.5rem !important; - padding-bottom:0.5rem !important; - } - - .py-sm-3{ - padding-top:1rem !important; - padding-bottom:1rem !important; - } - - .py-sm-4{ - padding-top:1.5rem !important; - padding-bottom:1.5rem !important; - } - - .py-sm-5{ - padding-top:3rem !important; - padding-bottom:3rem !important; - } - - .pt-sm-0{ - padding-top:0 !important; - } - - .pt-sm-1{ - padding-top:0.25rem !important; - } - - .pt-sm-2{ - padding-top:0.5rem !important; - } - - .pt-sm-3{ - padding-top:1rem !important; - } - - .pt-sm-4{ - padding-top:1.5rem !important; - } - - .pt-sm-5{ - padding-top:3rem !important; - } - - .pe-sm-0{ - padding-right:0 !important; - } - - .pe-sm-1{ - padding-right:0.25rem !important; - } - - .pe-sm-2{ - padding-right:0.5rem !important; - } - - .pe-sm-3{ - padding-right:1rem !important; - } - - .pe-sm-4{ - padding-right:1.5rem !important; - } - - .pe-sm-5{ - padding-right:3rem !important; - } - - .pb-sm-0{ - padding-bottom:0 !important; - } - - .pb-sm-1{ - padding-bottom:0.25rem !important; - } - - .pb-sm-2{ - padding-bottom:0.5rem !important; - } - - .pb-sm-3{ - padding-bottom:1rem !important; - } - - .pb-sm-4{ - padding-bottom:1.5rem !important; - } - - .pb-sm-5{ - padding-bottom:3rem !important; - } - - .ps-sm-0{ - padding-left:0 !important; - } - - .ps-sm-1{ - padding-left:0.25rem !important; - } - - .ps-sm-2{ - padding-left:0.5rem !important; - } - - .ps-sm-3{ - padding-left:1rem !important; - } - - .ps-sm-4{ - padding-left:1.5rem !important; - } - - .ps-sm-5{ - padding-left:3rem !important; - } - - .text-sm-start{ - text-align:left !important; - } - - .text-sm-end{ - text-align:right !important; - } - - .text-sm-center{ - text-align:center !important; - } -} -@media (min-width: 768px){ - .float-md-start{ - float:left !important; - } - - .float-md-end{ - float:right !important; - } - - .float-md-none{ - float:none !important; - } - - .d-md-inline{ - display:inline !important; - } - - .d-md-inline-block{ - display:inline-block !important; - } - - .d-md-block{ - display:block !important; - } - - .d-md-grid{ - display:grid !important; - } - - .d-md-table{ - display:table !important; - } - - .d-md-table-row{ - display:table-row !important; - } - - .d-md-table-cell{ - display:table-cell !important; - } - - .d-md-flex{ - display:flex !important; - } - - .d-md-inline-flex{ - display:inline-flex !important; - } - - .d-md-none{ - display:none !important; - } - - .flex-md-fill{ - flex:1 1 auto !important; - } - - .flex-md-row{ - flex-direction:row !important; - } - - .flex-md-column{ - flex-direction:column !important; - } - - .flex-md-row-reverse{ - flex-direction:row-reverse !important; - } - - .flex-md-column-reverse{ - flex-direction:column-reverse !important; - } - - .flex-md-grow-0{ - flex-grow:0 !important; - } - - .flex-md-grow-1{ - flex-grow:1 !important; - } - - .flex-md-shrink-0{ - flex-shrink:0 !important; - } - - .flex-md-shrink-1{ - flex-shrink:1 !important; - } - - .flex-md-wrap{ - flex-wrap:wrap !important; - } - - .flex-md-nowrap{ - flex-wrap:nowrap !important; - } - - .flex-md-wrap-reverse{ - flex-wrap:wrap-reverse !important; - } - - .gap-md-0{ - gap:0 !important; - } - - .gap-md-1{ - gap:0.25rem !important; - } - - .gap-md-2{ - gap:0.5rem !important; - } - - .gap-md-3{ - gap:1rem !important; - } - - .gap-md-4{ - gap:1.5rem !important; - } - - .gap-md-5{ - gap:3rem !important; - } - - .justify-content-md-start{ - justify-content:flex-start !important; - } - - .justify-content-md-end{ - justify-content:flex-end !important; - } - - .justify-content-md-center{ - justify-content:center !important; - } - - .justify-content-md-between{ - justify-content:space-between !important; - } - - .justify-content-md-around{ - justify-content:space-around !important; - } - - .justify-content-md-evenly{ - justify-content:space-evenly !important; - } - - .align-items-md-start{ - align-items:flex-start !important; - } - - .align-items-md-end{ - align-items:flex-end !important; - } - - .align-items-md-center{ - align-items:center !important; - } - - .align-items-md-baseline{ - align-items:baseline !important; - } - - .align-items-md-stretch{ - align-items:stretch !important; - } - - .align-content-md-start{ - align-content:flex-start !important; - } - - .align-content-md-end{ - align-content:flex-end !important; - } - - .align-content-md-center{ - align-content:center !important; - } - - .align-content-md-between{ - align-content:space-between !important; - } - - .align-content-md-around{ - align-content:space-around !important; - } - - .align-content-md-stretch{ - align-content:stretch !important; - } - - .align-self-md-auto{ - align-self:auto !important; - } - - .align-self-md-start{ - align-self:flex-start !important; - } - - .align-self-md-end{ - align-self:flex-end !important; - } - - .align-self-md-center{ - align-self:center !important; - } - - .align-self-md-baseline{ - align-self:baseline !important; - } - - .align-self-md-stretch{ - align-self:stretch !important; - } - - .order-md-first{ - order:-1 !important; - } - - .order-md-0{ - order:0 !important; - } - - .order-md-1{ - order:1 !important; - } - - .order-md-2{ - order:2 !important; - } - - .order-md-3{ - order:3 !important; - } - - .order-md-4{ - order:4 !important; - } - - .order-md-5{ - order:5 !important; - } - - .order-md-last{ - order:6 !important; - } - - .m-md-0{ - margin:0 !important; - } - - .m-md-1{ - margin:0.25rem !important; - } - - .m-md-2{ - margin:0.5rem !important; - } - - .m-md-3{ - margin:1rem !important; - } - - .m-md-4{ - margin:1.5rem !important; - } - - .m-md-5{ - margin:3rem !important; - } - - .m-md-auto{ - margin:auto !important; - } - - .mx-md-0{ - margin-right:0 !important; - margin-left:0 !important; - } - - .mx-md-1{ - margin-right:0.25rem !important; - margin-left:0.25rem !important; - } - - .mx-md-2{ - margin-right:0.5rem !important; - margin-left:0.5rem !important; - } - - .mx-md-3{ - margin-right:1rem !important; - margin-left:1rem !important; - } - - .mx-md-4{ - margin-right:1.5rem !important; - margin-left:1.5rem !important; - } - - .mx-md-5{ - margin-right:3rem !important; - margin-left:3rem !important; - } - - .mx-md-auto{ - margin-right:auto !important; - margin-left:auto !important; - } - - .my-md-0{ - margin-top:0 !important; - margin-bottom:0 !important; - } - - .my-md-1{ - margin-top:0.25rem !important; - margin-bottom:0.25rem !important; - } - - .my-md-2{ - margin-top:0.5rem !important; - margin-bottom:0.5rem !important; - } - - .my-md-3{ - margin-top:1rem !important; - margin-bottom:1rem !important; - } - - .my-md-4{ - margin-top:1.5rem !important; - margin-bottom:1.5rem !important; - } - - .my-md-5{ - margin-top:3rem !important; - margin-bottom:3rem !important; - } - - .my-md-auto{ - margin-top:auto !important; - margin-bottom:auto !important; - } - - .mt-md-0{ - margin-top:0 !important; - } - - .mt-md-1{ - margin-top:0.25rem !important; - } - - .mt-md-2{ - margin-top:0.5rem !important; - } - - .mt-md-3{ - margin-top:1rem !important; - } - - .mt-md-4{ - margin-top:1.5rem !important; - } - - .mt-md-5{ - margin-top:3rem !important; - } - - .mt-md-auto{ - margin-top:auto !important; - } - - .me-md-0{ - margin-right:0 !important; - } - - .me-md-1{ - margin-right:0.25rem !important; - } - - .me-md-2{ - margin-right:0.5rem !important; - } - - .me-md-3{ - margin-right:1rem !important; - } - - .me-md-4{ - margin-right:1.5rem !important; - } - - .me-md-5{ - margin-right:3rem !important; - } - - .me-md-auto{ - margin-right:auto !important; - } - - .mb-md-0{ - margin-bottom:0 !important; - } - - .mb-md-1{ - margin-bottom:0.25rem !important; - } - - .mb-md-2{ - margin-bottom:0.5rem !important; - } - - .mb-md-3{ - margin-bottom:1rem !important; - } - - .mb-md-4{ - margin-bottom:1.5rem !important; - } - - .mb-md-5{ - margin-bottom:3rem !important; - } - - .mb-md-auto{ - margin-bottom:auto !important; - } - - .ms-md-0{ - margin-left:0 !important; - } - - .ms-md-1{ - margin-left:0.25rem !important; - } - - .ms-md-2{ - margin-left:0.5rem !important; - } - - .ms-md-3{ - margin-left:1rem !important; - } - - .ms-md-4{ - margin-left:1.5rem !important; - } - - .ms-md-5{ - margin-left:3rem !important; - } - - .ms-md-auto{ - margin-left:auto !important; - } - - .p-md-0{ - padding:0 !important; - } - - .p-md-1{ - padding:0.25rem !important; - } - - .p-md-2{ - padding:0.5rem !important; - } - - .p-md-3{ - padding:1rem !important; - } - - .p-md-4{ - padding:1.5rem !important; - } - - .p-md-5{ - padding:3rem !important; - } - - .px-md-0{ - padding-right:0 !important; - padding-left:0 !important; - } - - .px-md-1{ - padding-right:0.25rem !important; - padding-left:0.25rem !important; - } - - .px-md-2{ - padding-right:0.5rem !important; - padding-left:0.5rem !important; - } - - .px-md-3{ - padding-right:1rem !important; - padding-left:1rem !important; - } - - .px-md-4{ - padding-right:1.5rem !important; - padding-left:1.5rem !important; - } - - .px-md-5{ - padding-right:3rem !important; - padding-left:3rem !important; - } - - .py-md-0{ - padding-top:0 !important; - padding-bottom:0 !important; - } - - .py-md-1{ - padding-top:0.25rem !important; - padding-bottom:0.25rem !important; - } - - .py-md-2{ - padding-top:0.5rem !important; - padding-bottom:0.5rem !important; - } - - .py-md-3{ - padding-top:1rem !important; - padding-bottom:1rem !important; - } - - .py-md-4{ - padding-top:1.5rem !important; - padding-bottom:1.5rem !important; - } - - .py-md-5{ - padding-top:3rem !important; - padding-bottom:3rem !important; - } - - .pt-md-0{ - padding-top:0 !important; - } - - .pt-md-1{ - padding-top:0.25rem !important; - } - - .pt-md-2{ - padding-top:0.5rem !important; - } - - .pt-md-3{ - padding-top:1rem !important; - } - - .pt-md-4{ - padding-top:1.5rem !important; - } - - .pt-md-5{ - padding-top:3rem !important; - } - - .pe-md-0{ - padding-right:0 !important; - } - - .pe-md-1{ - padding-right:0.25rem !important; - } - - .pe-md-2{ - padding-right:0.5rem !important; - } - - .pe-md-3{ - padding-right:1rem !important; - } - - .pe-md-4{ - padding-right:1.5rem !important; - } - - .pe-md-5{ - padding-right:3rem !important; - } - - .pb-md-0{ - padding-bottom:0 !important; - } - - .pb-md-1{ - padding-bottom:0.25rem !important; - } - - .pb-md-2{ - padding-bottom:0.5rem !important; - } - - .pb-md-3{ - padding-bottom:1rem !important; - } - - .pb-md-4{ - padding-bottom:1.5rem !important; - } - - .pb-md-5{ - padding-bottom:3rem !important; - } - - .ps-md-0{ - padding-left:0 !important; - } - - .ps-md-1{ - padding-left:0.25rem !important; - } - - .ps-md-2{ - padding-left:0.5rem !important; - } - - .ps-md-3{ - padding-left:1rem !important; - } - - .ps-md-4{ - padding-left:1.5rem !important; - } - - .ps-md-5{ - padding-left:3rem !important; - } - - .text-md-start{ - text-align:left !important; - } - - .text-md-end{ - text-align:right !important; - } - - .text-md-center{ - text-align:center !important; - } -} -@media (min-width: 992px){ - .float-lg-start{ - float:left !important; - } - - .float-lg-end{ - float:right !important; - } - - .float-lg-none{ - float:none !important; - } - - .d-lg-inline{ - display:inline !important; - } - - .d-lg-inline-block{ - display:inline-block !important; - } - - .d-lg-block{ - display:block !important; - } - - .d-lg-grid{ - display:grid !important; - } - - .d-lg-table{ - display:table !important; - } - - .d-lg-table-row{ - display:table-row !important; - } - - .d-lg-table-cell{ - display:table-cell !important; - } - - .d-lg-flex{ - display:flex !important; - } - - .d-lg-inline-flex{ - display:inline-flex !important; - } - - .d-lg-none{ - display:none !important; - } - - .flex-lg-fill{ - flex:1 1 auto !important; - } - - .flex-lg-row{ - flex-direction:row !important; - } - - .flex-lg-column{ - flex-direction:column !important; - } - - .flex-lg-row-reverse{ - flex-direction:row-reverse !important; - } - - .flex-lg-column-reverse{ - flex-direction:column-reverse !important; - } - - .flex-lg-grow-0{ - flex-grow:0 !important; - } - - .flex-lg-grow-1{ - flex-grow:1 !important; - } - - .flex-lg-shrink-0{ - flex-shrink:0 !important; - } - - .flex-lg-shrink-1{ - flex-shrink:1 !important; - } - - .flex-lg-wrap{ - flex-wrap:wrap !important; - } - - .flex-lg-nowrap{ - flex-wrap:nowrap !important; - } - - .flex-lg-wrap-reverse{ - flex-wrap:wrap-reverse !important; - } - - .gap-lg-0{ - gap:0 !important; - } - - .gap-lg-1{ - gap:0.25rem !important; - } - - .gap-lg-2{ - gap:0.5rem !important; - } - - .gap-lg-3{ - gap:1rem !important; - } - - .gap-lg-4{ - gap:1.5rem !important; - } - - .gap-lg-5{ - gap:3rem !important; - } - - .justify-content-lg-start{ - justify-content:flex-start !important; - } - - .justify-content-lg-end{ - justify-content:flex-end !important; - } - - .justify-content-lg-center{ - justify-content:center !important; - } - - .justify-content-lg-between{ - justify-content:space-between !important; - } - - .justify-content-lg-around{ - justify-content:space-around !important; - } - - .justify-content-lg-evenly{ - justify-content:space-evenly !important; - } - - .align-items-lg-start{ - align-items:flex-start !important; - } - - .align-items-lg-end{ - align-items:flex-end !important; - } - - .align-items-lg-center{ - align-items:center !important; - } - - .align-items-lg-baseline{ - align-items:baseline !important; - } - - .align-items-lg-stretch{ - align-items:stretch !important; - } - - .align-content-lg-start{ - align-content:flex-start !important; - } - - .align-content-lg-end{ - align-content:flex-end !important; - } - - .align-content-lg-center{ - align-content:center !important; - } - - .align-content-lg-between{ - align-content:space-between !important; - } - - .align-content-lg-around{ - align-content:space-around !important; - } - - .align-content-lg-stretch{ - align-content:stretch !important; - } - - .align-self-lg-auto{ - align-self:auto !important; - } - - .align-self-lg-start{ - align-self:flex-start !important; - } - - .align-self-lg-end{ - align-self:flex-end !important; - } - - .align-self-lg-center{ - align-self:center !important; - } - - .align-self-lg-baseline{ - align-self:baseline !important; - } - - .align-self-lg-stretch{ - align-self:stretch !important; - } - - .order-lg-first{ - order:-1 !important; - } - - .order-lg-0{ - order:0 !important; - } - - .order-lg-1{ - order:1 !important; - } - - .order-lg-2{ - order:2 !important; - } - - .order-lg-3{ - order:3 !important; - } - - .order-lg-4{ - order:4 !important; - } - - .order-lg-5{ - order:5 !important; - } - - .order-lg-last{ - order:6 !important; - } - - .m-lg-0{ - margin:0 !important; - } - - .m-lg-1{ - margin:0.25rem !important; - } - - .m-lg-2{ - margin:0.5rem !important; - } - - .m-lg-3{ - margin:1rem !important; - } - - .m-lg-4{ - margin:1.5rem !important; - } - - .m-lg-5{ - margin:3rem !important; - } - - .m-lg-auto{ - margin:auto !important; - } - - .mx-lg-0{ - margin-right:0 !important; - margin-left:0 !important; - } - - .mx-lg-1{ - margin-right:0.25rem !important; - margin-left:0.25rem !important; - } - - .mx-lg-2{ - margin-right:0.5rem !important; - margin-left:0.5rem !important; - } - - .mx-lg-3{ - margin-right:1rem !important; - margin-left:1rem !important; - } - - .mx-lg-4{ - margin-right:1.5rem !important; - margin-left:1.5rem !important; - } - - .mx-lg-5{ - margin-right:3rem !important; - margin-left:3rem !important; - } - - .mx-lg-auto{ - margin-right:auto !important; - margin-left:auto !important; - } - - .my-lg-0{ - margin-top:0 !important; - margin-bottom:0 !important; - } - - .my-lg-1{ - margin-top:0.25rem !important; - margin-bottom:0.25rem !important; - } - - .my-lg-2{ - margin-top:0.5rem !important; - margin-bottom:0.5rem !important; - } - - .my-lg-3{ - margin-top:1rem !important; - margin-bottom:1rem !important; - } - - .my-lg-4{ - margin-top:1.5rem !important; - margin-bottom:1.5rem !important; - } - - .my-lg-5{ - margin-top:3rem !important; - margin-bottom:3rem !important; - } - - .my-lg-auto{ - margin-top:auto !important; - margin-bottom:auto !important; - } - - .mt-lg-0{ - margin-top:0 !important; - } - - .mt-lg-1{ - margin-top:0.25rem !important; - } - - .mt-lg-2{ - margin-top:0.5rem !important; - } - - .mt-lg-3{ - margin-top:1rem !important; - } - - .mt-lg-4{ - margin-top:1.5rem !important; - } - - .mt-lg-5{ - margin-top:3rem !important; - } - - .mt-lg-auto{ - margin-top:auto !important; - } - - .me-lg-0{ - margin-right:0 !important; - } - - .me-lg-1{ - margin-right:0.25rem !important; - } - - .me-lg-2{ - margin-right:0.5rem !important; - } - - .me-lg-3{ - margin-right:1rem !important; - } - - .me-lg-4{ - margin-right:1.5rem !important; - } - - .me-lg-5{ - margin-right:3rem !important; - } - - .me-lg-auto{ - margin-right:auto !important; - } - - .mb-lg-0{ - margin-bottom:0 !important; - } - - .mb-lg-1{ - margin-bottom:0.25rem !important; - } - - .mb-lg-2{ - margin-bottom:0.5rem !important; - } - - .mb-lg-3{ - margin-bottom:1rem !important; - } - - .mb-lg-4{ - margin-bottom:1.5rem !important; - } - - .mb-lg-5{ - margin-bottom:3rem !important; - } - - .mb-lg-auto{ - margin-bottom:auto !important; - } - - .ms-lg-0{ - margin-left:0 !important; - } - - .ms-lg-1{ - margin-left:0.25rem !important; - } - - .ms-lg-2{ - margin-left:0.5rem !important; - } - - .ms-lg-3{ - margin-left:1rem !important; - } - - .ms-lg-4{ - margin-left:1.5rem !important; - } - - .ms-lg-5{ - margin-left:3rem !important; - } - - .ms-lg-auto{ - margin-left:auto !important; - } - - .p-lg-0{ - padding:0 !important; - } - - .p-lg-1{ - padding:0.25rem !important; - } - - .p-lg-2{ - padding:0.5rem !important; - } - - .p-lg-3{ - padding:1rem !important; - } - - .p-lg-4{ - padding:1.5rem !important; - } - - .p-lg-5{ - padding:3rem !important; - } - - .px-lg-0{ - padding-right:0 !important; - padding-left:0 !important; - } - - .px-lg-1{ - padding-right:0.25rem !important; - padding-left:0.25rem !important; - } - - .px-lg-2{ - padding-right:0.5rem !important; - padding-left:0.5rem !important; - } - - .px-lg-3{ - padding-right:1rem !important; - padding-left:1rem !important; - } - - .px-lg-4{ - padding-right:1.5rem !important; - padding-left:1.5rem !important; - } - - .px-lg-5{ - padding-right:3rem !important; - padding-left:3rem !important; - } - - .py-lg-0{ - padding-top:0 !important; - padding-bottom:0 !important; - } - - .py-lg-1{ - padding-top:0.25rem !important; - padding-bottom:0.25rem !important; - } - - .py-lg-2{ - padding-top:0.5rem !important; - padding-bottom:0.5rem !important; - } - - .py-lg-3{ - padding-top:1rem !important; - padding-bottom:1rem !important; - } - - .py-lg-4{ - padding-top:1.5rem !important; - padding-bottom:1.5rem !important; - } - - .py-lg-5{ - padding-top:3rem !important; - padding-bottom:3rem !important; - } - - .pt-lg-0{ - padding-top:0 !important; - } - - .pt-lg-1{ - padding-top:0.25rem !important; - } - - .pt-lg-2{ - padding-top:0.5rem !important; - } - - .pt-lg-3{ - padding-top:1rem !important; - } - - .pt-lg-4{ - padding-top:1.5rem !important; - } - - .pt-lg-5{ - padding-top:3rem !important; - } - - .pe-lg-0{ - padding-right:0 !important; - } - - .pe-lg-1{ - padding-right:0.25rem !important; - } - - .pe-lg-2{ - padding-right:0.5rem !important; - } - - .pe-lg-3{ - padding-right:1rem !important; - } - - .pe-lg-4{ - padding-right:1.5rem !important; - } - - .pe-lg-5{ - padding-right:3rem !important; - } - - .pb-lg-0{ - padding-bottom:0 !important; - } - - .pb-lg-1{ - padding-bottom:0.25rem !important; - } - - .pb-lg-2{ - padding-bottom:0.5rem !important; - } - - .pb-lg-3{ - padding-bottom:1rem !important; - } - - .pb-lg-4{ - padding-bottom:1.5rem !important; - } - - .pb-lg-5{ - padding-bottom:3rem !important; - } - - .ps-lg-0{ - padding-left:0 !important; - } - - .ps-lg-1{ - padding-left:0.25rem !important; - } - - .ps-lg-2{ - padding-left:0.5rem !important; - } - - .ps-lg-3{ - padding-left:1rem !important; - } - - .ps-lg-4{ - padding-left:1.5rem !important; - } - - .ps-lg-5{ - padding-left:3rem !important; - } - - .text-lg-start{ - text-align:left !important; - } - - .text-lg-end{ - text-align:right !important; - } - - .text-lg-center{ - text-align:center !important; - } -} -@media (min-width: 1200px){ - .float-xl-start{ - float:left !important; - } - - .float-xl-end{ - float:right !important; - } - - .float-xl-none{ - float:none !important; - } - - .d-xl-inline{ - display:inline !important; - } - - .d-xl-inline-block{ - display:inline-block !important; - } - - .d-xl-block{ - display:block !important; - } - - .d-xl-grid{ - display:grid !important; - } - - .d-xl-table{ - display:table !important; - } - - .d-xl-table-row{ - display:table-row !important; - } - - .d-xl-table-cell{ - display:table-cell !important; - } - - .d-xl-flex{ - display:flex !important; - } - - .d-xl-inline-flex{ - display:inline-flex !important; - } - - .d-xl-none{ - display:none !important; - } - - .flex-xl-fill{ - flex:1 1 auto !important; - } - - .flex-xl-row{ - flex-direction:row !important; - } - - .flex-xl-column{ - flex-direction:column !important; - } - - .flex-xl-row-reverse{ - flex-direction:row-reverse !important; - } - - .flex-xl-column-reverse{ - flex-direction:column-reverse !important; - } - - .flex-xl-grow-0{ - flex-grow:0 !important; - } - - .flex-xl-grow-1{ - flex-grow:1 !important; - } - - .flex-xl-shrink-0{ - flex-shrink:0 !important; - } - - .flex-xl-shrink-1{ - flex-shrink:1 !important; - } - - .flex-xl-wrap{ - flex-wrap:wrap !important; - } - - .flex-xl-nowrap{ - flex-wrap:nowrap !important; - } - - .flex-xl-wrap-reverse{ - flex-wrap:wrap-reverse !important; - } - - .gap-xl-0{ - gap:0 !important; - } - - .gap-xl-1{ - gap:0.25rem !important; - } - - .gap-xl-2{ - gap:0.5rem !important; - } - - .gap-xl-3{ - gap:1rem !important; - } - - .gap-xl-4{ - gap:1.5rem !important; - } - - .gap-xl-5{ - gap:3rem !important; - } - - .justify-content-xl-start{ - justify-content:flex-start !important; - } - - .justify-content-xl-end{ - justify-content:flex-end !important; - } - - .justify-content-xl-center{ - justify-content:center !important; - } - - .justify-content-xl-between{ - justify-content:space-between !important; - } - - .justify-content-xl-around{ - justify-content:space-around !important; - } - - .justify-content-xl-evenly{ - justify-content:space-evenly !important; - } - - .align-items-xl-start{ - align-items:flex-start !important; - } - - .align-items-xl-end{ - align-items:flex-end !important; - } - - .align-items-xl-center{ - align-items:center !important; - } - - .align-items-xl-baseline{ - align-items:baseline !important; - } - - .align-items-xl-stretch{ - align-items:stretch !important; - } - - .align-content-xl-start{ - align-content:flex-start !important; - } - - .align-content-xl-end{ - align-content:flex-end !important; - } - - .align-content-xl-center{ - align-content:center !important; - } - - .align-content-xl-between{ - align-content:space-between !important; - } - - .align-content-xl-around{ - align-content:space-around !important; - } - - .align-content-xl-stretch{ - align-content:stretch !important; - } - - .align-self-xl-auto{ - align-self:auto !important; - } - - .align-self-xl-start{ - align-self:flex-start !important; - } - - .align-self-xl-end{ - align-self:flex-end !important; - } - - .align-self-xl-center{ - align-self:center !important; - } - - .align-self-xl-baseline{ - align-self:baseline !important; - } - - .align-self-xl-stretch{ - align-self:stretch !important; - } - - .order-xl-first{ - order:-1 !important; - } - - .order-xl-0{ - order:0 !important; - } - - .order-xl-1{ - order:1 !important; - } - - .order-xl-2{ - order:2 !important; - } - - .order-xl-3{ - order:3 !important; - } - - .order-xl-4{ - order:4 !important; - } - - .order-xl-5{ - order:5 !important; - } - - .order-xl-last{ - order:6 !important; - } - - .m-xl-0{ - margin:0 !important; - } - - .m-xl-1{ - margin:0.25rem !important; - } - - .m-xl-2{ - margin:0.5rem !important; - } - - .m-xl-3{ - margin:1rem !important; - } - - .m-xl-4{ - margin:1.5rem !important; - } - - .m-xl-5{ - margin:3rem !important; - } - - .m-xl-auto{ - margin:auto !important; - } - - .mx-xl-0{ - margin-right:0 !important; - margin-left:0 !important; - } - - .mx-xl-1{ - margin-right:0.25rem !important; - margin-left:0.25rem !important; - } - - .mx-xl-2{ - margin-right:0.5rem !important; - margin-left:0.5rem !important; - } - - .mx-xl-3{ - margin-right:1rem !important; - margin-left:1rem !important; - } - - .mx-xl-4{ - margin-right:1.5rem !important; - margin-left:1.5rem !important; - } - - .mx-xl-5{ - margin-right:3rem !important; - margin-left:3rem !important; - } - - .mx-xl-auto{ - margin-right:auto !important; - margin-left:auto !important; - } - - .my-xl-0{ - margin-top:0 !important; - margin-bottom:0 !important; - } - - .my-xl-1{ - margin-top:0.25rem !important; - margin-bottom:0.25rem !important; - } - - .my-xl-2{ - margin-top:0.5rem !important; - margin-bottom:0.5rem !important; - } - - .my-xl-3{ - margin-top:1rem !important; - margin-bottom:1rem !important; - } - - .my-xl-4{ - margin-top:1.5rem !important; - margin-bottom:1.5rem !important; - } - - .my-xl-5{ - margin-top:3rem !important; - margin-bottom:3rem !important; - } - - .my-xl-auto{ - margin-top:auto !important; - margin-bottom:auto !important; - } - - .mt-xl-0{ - margin-top:0 !important; - } - - .mt-xl-1{ - margin-top:0.25rem !important; - } - - .mt-xl-2{ - margin-top:0.5rem !important; - } - - .mt-xl-3{ - margin-top:1rem !important; - } - - .mt-xl-4{ - margin-top:1.5rem !important; - } - - .mt-xl-5{ - margin-top:3rem !important; - } - - .mt-xl-auto{ - margin-top:auto !important; - } - - .me-xl-0{ - margin-right:0 !important; - } - - .me-xl-1{ - margin-right:0.25rem !important; - } - - .me-xl-2{ - margin-right:0.5rem !important; - } - - .me-xl-3{ - margin-right:1rem !important; - } - - .me-xl-4{ - margin-right:1.5rem !important; - } - - .me-xl-5{ - margin-right:3rem !important; - } - - .me-xl-auto{ - margin-right:auto !important; - } - - .mb-xl-0{ - margin-bottom:0 !important; - } - - .mb-xl-1{ - margin-bottom:0.25rem !important; - } - - .mb-xl-2{ - margin-bottom:0.5rem !important; - } - - .mb-xl-3{ - margin-bottom:1rem !important; - } - - .mb-xl-4{ - margin-bottom:1.5rem !important; - } - - .mb-xl-5{ - margin-bottom:3rem !important; - } - - .mb-xl-auto{ - margin-bottom:auto !important; - } - - .ms-xl-0{ - margin-left:0 !important; - } - - .ms-xl-1{ - margin-left:0.25rem !important; - } - - .ms-xl-2{ - margin-left:0.5rem !important; - } - - .ms-xl-3{ - margin-left:1rem !important; - } - - .ms-xl-4{ - margin-left:1.5rem !important; - } - - .ms-xl-5{ - margin-left:3rem !important; - } - - .ms-xl-auto{ - margin-left:auto !important; - } - - .p-xl-0{ - padding:0 !important; - } - - .p-xl-1{ - padding:0.25rem !important; - } - - .p-xl-2{ - padding:0.5rem !important; - } - - .p-xl-3{ - padding:1rem !important; - } - - .p-xl-4{ - padding:1.5rem !important; - } - - .p-xl-5{ - padding:3rem !important; - } - - .px-xl-0{ - padding-right:0 !important; - padding-left:0 !important; - } - - .px-xl-1{ - padding-right:0.25rem !important; - padding-left:0.25rem !important; - } - - .px-xl-2{ - padding-right:0.5rem !important; - padding-left:0.5rem !important; - } - - .px-xl-3{ - padding-right:1rem !important; - padding-left:1rem !important; - } - - .px-xl-4{ - padding-right:1.5rem !important; - padding-left:1.5rem !important; - } - - .px-xl-5{ - padding-right:3rem !important; - padding-left:3rem !important; - } - - .py-xl-0{ - padding-top:0 !important; - padding-bottom:0 !important; - } - - .py-xl-1{ - padding-top:0.25rem !important; - padding-bottom:0.25rem !important; - } - - .py-xl-2{ - padding-top:0.5rem !important; - padding-bottom:0.5rem !important; - } - - .py-xl-3{ - padding-top:1rem !important; - padding-bottom:1rem !important; - } - - .py-xl-4{ - padding-top:1.5rem !important; - padding-bottom:1.5rem !important; - } - - .py-xl-5{ - padding-top:3rem !important; - padding-bottom:3rem !important; - } - - .pt-xl-0{ - padding-top:0 !important; - } - - .pt-xl-1{ - padding-top:0.25rem !important; - } - - .pt-xl-2{ - padding-top:0.5rem !important; - } - - .pt-xl-3{ - padding-top:1rem !important; - } - - .pt-xl-4{ - padding-top:1.5rem !important; - } - - .pt-xl-5{ - padding-top:3rem !important; - } - - .pe-xl-0{ - padding-right:0 !important; - } - - .pe-xl-1{ - padding-right:0.25rem !important; - } - - .pe-xl-2{ - padding-right:0.5rem !important; - } - - .pe-xl-3{ - padding-right:1rem !important; - } - - .pe-xl-4{ - padding-right:1.5rem !important; - } - - .pe-xl-5{ - padding-right:3rem !important; - } - - .pb-xl-0{ - padding-bottom:0 !important; - } - - .pb-xl-1{ - padding-bottom:0.25rem !important; - } - - .pb-xl-2{ - padding-bottom:0.5rem !important; - } - - .pb-xl-3{ - padding-bottom:1rem !important; - } - - .pb-xl-4{ - padding-bottom:1.5rem !important; - } - - .pb-xl-5{ - padding-bottom:3rem !important; - } - - .ps-xl-0{ - padding-left:0 !important; - } - - .ps-xl-1{ - padding-left:0.25rem !important; - } - - .ps-xl-2{ - padding-left:0.5rem !important; - } - - .ps-xl-3{ - padding-left:1rem !important; - } - - .ps-xl-4{ - padding-left:1.5rem !important; - } - - .ps-xl-5{ - padding-left:3rem !important; - } - - .text-xl-start{ - text-align:left !important; - } - - .text-xl-end{ - text-align:right !important; - } - - .text-xl-center{ - text-align:center !important; - } -} -@media (min-width: 1400px){ - .float-xxl-start{ - float:left !important; - } - - .float-xxl-end{ - float:right !important; - } - - .float-xxl-none{ - float:none !important; - } - - .d-xxl-inline{ - display:inline !important; - } - - .d-xxl-inline-block{ - display:inline-block !important; - } - - .d-xxl-block{ - display:block !important; - } - - .d-xxl-grid{ - display:grid !important; - } - - .d-xxl-table{ - display:table !important; - } - - .d-xxl-table-row{ - display:table-row !important; - } - - .d-xxl-table-cell{ - display:table-cell !important; - } - - .d-xxl-flex{ - display:flex !important; - } - - .d-xxl-inline-flex{ - display:inline-flex !important; - } - - .d-xxl-none{ - display:none !important; - } - - .flex-xxl-fill{ - flex:1 1 auto !important; - } - - .flex-xxl-row{ - flex-direction:row !important; - } - - .flex-xxl-column{ - flex-direction:column !important; - } - - .flex-xxl-row-reverse{ - flex-direction:row-reverse !important; - } - - .flex-xxl-column-reverse{ - flex-direction:column-reverse !important; - } - - .flex-xxl-grow-0{ - flex-grow:0 !important; - } - - .flex-xxl-grow-1{ - flex-grow:1 !important; - } - - .flex-xxl-shrink-0{ - flex-shrink:0 !important; - } - - .flex-xxl-shrink-1{ - flex-shrink:1 !important; - } - - .flex-xxl-wrap{ - flex-wrap:wrap !important; - } - - .flex-xxl-nowrap{ - flex-wrap:nowrap !important; - } - - .flex-xxl-wrap-reverse{ - flex-wrap:wrap-reverse !important; - } - - .gap-xxl-0{ - gap:0 !important; - } - - .gap-xxl-1{ - gap:0.25rem !important; - } - - .gap-xxl-2{ - gap:0.5rem !important; - } - - .gap-xxl-3{ - gap:1rem !important; - } - - .gap-xxl-4{ - gap:1.5rem !important; - } - - .gap-xxl-5{ - gap:3rem !important; - } - - .justify-content-xxl-start{ - justify-content:flex-start !important; - } - - .justify-content-xxl-end{ - justify-content:flex-end !important; - } - - .justify-content-xxl-center{ - justify-content:center !important; - } - - .justify-content-xxl-between{ - justify-content:space-between !important; - } - - .justify-content-xxl-around{ - justify-content:space-around !important; - } - - .justify-content-xxl-evenly{ - justify-content:space-evenly !important; - } - - .align-items-xxl-start{ - align-items:flex-start !important; - } - - .align-items-xxl-end{ - align-items:flex-end !important; - } - - .align-items-xxl-center{ - align-items:center !important; - } - - .align-items-xxl-baseline{ - align-items:baseline !important; - } - - .align-items-xxl-stretch{ - align-items:stretch !important; - } - - .align-content-xxl-start{ - align-content:flex-start !important; - } - - .align-content-xxl-end{ - align-content:flex-end !important; - } - - .align-content-xxl-center{ - align-content:center !important; - } - - .align-content-xxl-between{ - align-content:space-between !important; - } - - .align-content-xxl-around{ - align-content:space-around !important; - } - - .align-content-xxl-stretch{ - align-content:stretch !important; - } - - .align-self-xxl-auto{ - align-self:auto !important; - } - - .align-self-xxl-start{ - align-self:flex-start !important; - } - - .align-self-xxl-end{ - align-self:flex-end !important; - } - - .align-self-xxl-center{ - align-self:center !important; - } - - .align-self-xxl-baseline{ - align-self:baseline !important; - } - - .align-self-xxl-stretch{ - align-self:stretch !important; - } - - .order-xxl-first{ - order:-1 !important; - } - - .order-xxl-0{ - order:0 !important; - } - - .order-xxl-1{ - order:1 !important; - } - - .order-xxl-2{ - order:2 !important; - } - - .order-xxl-3{ - order:3 !important; - } - - .order-xxl-4{ - order:4 !important; - } - - .order-xxl-5{ - order:5 !important; - } - - .order-xxl-last{ - order:6 !important; - } - - .m-xxl-0{ - margin:0 !important; - } - - .m-xxl-1{ - margin:0.25rem !important; - } - - .m-xxl-2{ - margin:0.5rem !important; - } - - .m-xxl-3{ - margin:1rem !important; - } - - .m-xxl-4{ - margin:1.5rem !important; - } - - .m-xxl-5{ - margin:3rem !important; - } - - .m-xxl-auto{ - margin:auto !important; - } - - .mx-xxl-0{ - margin-right:0 !important; - margin-left:0 !important; - } - - .mx-xxl-1{ - margin-right:0.25rem !important; - margin-left:0.25rem !important; - } - - .mx-xxl-2{ - margin-right:0.5rem !important; - margin-left:0.5rem !important; - } - - .mx-xxl-3{ - margin-right:1rem !important; - margin-left:1rem !important; - } - - .mx-xxl-4{ - margin-right:1.5rem !important; - margin-left:1.5rem !important; - } - - .mx-xxl-5{ - margin-right:3rem !important; - margin-left:3rem !important; - } - - .mx-xxl-auto{ - margin-right:auto !important; - margin-left:auto !important; - } - - .my-xxl-0{ - margin-top:0 !important; - margin-bottom:0 !important; - } - - .my-xxl-1{ - margin-top:0.25rem !important; - margin-bottom:0.25rem !important; - } - - .my-xxl-2{ - margin-top:0.5rem !important; - margin-bottom:0.5rem !important; - } - - .my-xxl-3{ - margin-top:1rem !important; - margin-bottom:1rem !important; - } - - .my-xxl-4{ - margin-top:1.5rem !important; - margin-bottom:1.5rem !important; - } - - .my-xxl-5{ - margin-top:3rem !important; - margin-bottom:3rem !important; - } - - .my-xxl-auto{ - margin-top:auto !important; - margin-bottom:auto !important; - } - - .mt-xxl-0{ - margin-top:0 !important; - } - - .mt-xxl-1{ - margin-top:0.25rem !important; - } - - .mt-xxl-2{ - margin-top:0.5rem !important; - } - - .mt-xxl-3{ - margin-top:1rem !important; - } - - .mt-xxl-4{ - margin-top:1.5rem !important; - } - - .mt-xxl-5{ - margin-top:3rem !important; - } - - .mt-xxl-auto{ - margin-top:auto !important; - } - - .me-xxl-0{ - margin-right:0 !important; - } - - .me-xxl-1{ - margin-right:0.25rem !important; - } - - .me-xxl-2{ - margin-right:0.5rem !important; - } - - .me-xxl-3{ - margin-right:1rem !important; - } - - .me-xxl-4{ - margin-right:1.5rem !important; - } - - .me-xxl-5{ - margin-right:3rem !important; - } - - .me-xxl-auto{ - margin-right:auto !important; - } - - .mb-xxl-0{ - margin-bottom:0 !important; - } - - .mb-xxl-1{ - margin-bottom:0.25rem !important; - } - - .mb-xxl-2{ - margin-bottom:0.5rem !important; - } - - .mb-xxl-3{ - margin-bottom:1rem !important; - } - - .mb-xxl-4{ - margin-bottom:1.5rem !important; - } - - .mb-xxl-5{ - margin-bottom:3rem !important; - } - - .mb-xxl-auto{ - margin-bottom:auto !important; - } - - .ms-xxl-0{ - margin-left:0 !important; - } - - .ms-xxl-1{ - margin-left:0.25rem !important; - } - - .ms-xxl-2{ - margin-left:0.5rem !important; - } - - .ms-xxl-3{ - margin-left:1rem !important; - } - - .ms-xxl-4{ - margin-left:1.5rem !important; - } - - .ms-xxl-5{ - margin-left:3rem !important; - } - - .ms-xxl-auto{ - margin-left:auto !important; - } - - .p-xxl-0{ - padding:0 !important; - } - - .p-xxl-1{ - padding:0.25rem !important; - } - - .p-xxl-2{ - padding:0.5rem !important; - } - - .p-xxl-3{ - padding:1rem !important; - } - - .p-xxl-4{ - padding:1.5rem !important; - } - - .p-xxl-5{ - padding:3rem !important; - } - - .px-xxl-0{ - padding-right:0 !important; - padding-left:0 !important; - } - - .px-xxl-1{ - padding-right:0.25rem !important; - padding-left:0.25rem !important; - } - - .px-xxl-2{ - padding-right:0.5rem !important; - padding-left:0.5rem !important; - } - - .px-xxl-3{ - padding-right:1rem !important; - padding-left:1rem !important; - } - - .px-xxl-4{ - padding-right:1.5rem !important; - padding-left:1.5rem !important; - } - - .px-xxl-5{ - padding-right:3rem !important; - padding-left:3rem !important; - } - - .py-xxl-0{ - padding-top:0 !important; - padding-bottom:0 !important; - } - - .py-xxl-1{ - padding-top:0.25rem !important; - padding-bottom:0.25rem !important; - } - - .py-xxl-2{ - padding-top:0.5rem !important; - padding-bottom:0.5rem !important; - } - - .py-xxl-3{ - padding-top:1rem !important; - padding-bottom:1rem !important; - } - - .py-xxl-4{ - padding-top:1.5rem !important; - padding-bottom:1.5rem !important; - } - - .py-xxl-5{ - padding-top:3rem !important; - padding-bottom:3rem !important; - } - - .pt-xxl-0{ - padding-top:0 !important; - } - - .pt-xxl-1{ - padding-top:0.25rem !important; - } - - .pt-xxl-2{ - padding-top:0.5rem !important; - } - - .pt-xxl-3{ - padding-top:1rem !important; - } - - .pt-xxl-4{ - padding-top:1.5rem !important; - } - - .pt-xxl-5{ - padding-top:3rem !important; - } - - .pe-xxl-0{ - padding-right:0 !important; - } - - .pe-xxl-1{ - padding-right:0.25rem !important; - } - - .pe-xxl-2{ - padding-right:0.5rem !important; - } - - .pe-xxl-3{ - padding-right:1rem !important; - } - - .pe-xxl-4{ - padding-right:1.5rem !important; - } - - .pe-xxl-5{ - padding-right:3rem !important; - } - - .pb-xxl-0{ - padding-bottom:0 !important; - } - - .pb-xxl-1{ - padding-bottom:0.25rem !important; - } - - .pb-xxl-2{ - padding-bottom:0.5rem !important; - } - - .pb-xxl-3{ - padding-bottom:1rem !important; - } - - .pb-xxl-4{ - padding-bottom:1.5rem !important; - } - - .pb-xxl-5{ - padding-bottom:3rem !important; - } - - .ps-xxl-0{ - padding-left:0 !important; - } - - .ps-xxl-1{ - padding-left:0.25rem !important; - } - - .ps-xxl-2{ - padding-left:0.5rem !important; - } - - .ps-xxl-3{ - padding-left:1rem !important; - } - - .ps-xxl-4{ - padding-left:1.5rem !important; - } - - .ps-xxl-5{ - padding-left:3rem !important; - } - - .text-xxl-start{ - text-align:left !important; - } - - .text-xxl-end{ - text-align:right !important; - } - - .text-xxl-center{ - text-align:center !important; - } -} -@media (min-width: 1200px){ - .fs-1{ - font-size:2.5rem !important; - } - - .fs-2{ - font-size:2rem !important; - } - - .fs-3{ - font-size:1.75rem !important; - } - - .fs-4{ - font-size:1.5rem !important; - } -} -@media print{ - .d-print-inline{ - display:inline !important; - } - - .d-print-inline-block{ - display:inline-block !important; - } - - .d-print-block{ - display:block !important; - } - - .d-print-grid{ - display:grid !important; - } - - .d-print-table{ - display:table !important; - } - - .d-print-table-row{ - display:table-row !important; - } - - .d-print-table-cell{ - display:table-cell !important; - } - - .d-print-flex{ - display:flex !important; - } - - .d-print-inline-flex{ - display:inline-flex !important; - } - - .d-print-none{ - display:none !important; - } -} -body{ - font-size:0.875rem; -} - -.lni{ - width:16px; - height:16px; - vertical-align:text-bottom; - font-size:20px !important; - font-weight:bold !important; -} -.sidebar{ - position:fixed; - top:0; - bottom:0; - left:0; - z-index:100; - padding:48px 0 0; - box-shadow:inset -1px 0 0 rgba(0, 0, 0, 0.1); -} - -@media (max-width: 767.98px){ - .sidebar{ - top:5rem; - } -} -.sidebar-sticky{ - position:relative; - top:0; - height:calc(100vh - 48px); - padding-top:0.5rem; - overflow-x:hidden; - overflow-y:auto; -} - -.sidebar .nav-link{ - font-weight:500; - color:#333; -} - -.sidebar .nav-link .lni{ - margin-right:8px; - color:#727272; -} - -.sidebar .nav-link.active{ - color:#2470dc; -} - -.sidebar .nav-link:hover .lni, -.sidebar .nav-link.active .lni{ - color:inherit; -} - -.sidebar-heading{ - font-size:0.75rem; - text-transform:uppercase; -} -.navbar-brand{ - padding-top:0.75rem; - padding-bottom:0.75rem; - font-size:1rem; - background-color:rgba(0, 0, 0, 0.25); - box-shadow:inset -1px 0 0 rgba(0, 0, 0, 0.25); -} - -.navbar .navbar-toggler{ - top:0.25rem; - right:1rem; -} - -.navbar .form-control{ - padding:0.75rem 1rem; - border-width:0; - border-radius:0; -} - -.form-control-dark{ - color:#fff; - background-color:rgba(255, 255, 255, 0.1); - border-color:rgba(255, 255, 255, 0.1); -} - -.form-control-dark:focus{ - border-color:transparent; - box-shadow:0 0 0 3px rgba(255, 255, 255, 0.25); -} - -.smooth-dnd-container{ - margin:1rem; -} -.smooth-dnd-container.pool{ - border:1px solid #ccc; - display:block !important; - overflow:auto; -} -.smooth-dnd-container.pool .card{ - cursor:-webkit-grab; - cursor:grab; - max-height:15rem; - max-width:15rem; - overflow-y:auto; -} -.smooth-dnd-container.selection{ - border:1px solid #ccc; - min-height:10rem; - min-width:10rem; -} -.smooth-dnd-container.selection .card{ - cursor:-webkit-grab; - cursor:grab; - max-height:15rem; - max-width:15rem; - overflow:scroll; - overflow-y:auto; -} -.switch{ - position:relative; - display:inline-block; - width:60px; - height:34px; -} -.switch input{ - opacity:0; - width:0; - height:0; -} -.slider{ - position:absolute; - cursor:pointer; - top:0; - left:0; - right:0; - bottom:0; - background-color:#ccc; - transition:0.4s; -} -.slider::before{ - position:absolute; - content:""; - height:26px; - width:26px; - left:4px; - bottom:4px; - background-color:white; - transition:0.4s; -} - -input:checked + .slider{ - background-color:#2196F3; -} - -input:focus + .slider{ - box-shadow:0 0 1px #2196F3; -} - -input:checked + .slider:before{ - transform:translateX(26px); -} -.slider.round{ - border-radius:34px; -} - -.slider.round:before{ - border-radius:50%; -} - -.inco_data{ - height:initial; -} \ No newline at end of file diff --git a/public/b-o/js/app.js b/public/b-o/js/app.js deleted file mode 100644 index 1a822ec..0000000 --- a/public/b-o/js/app.js +++ /dev/null @@ -1,65523 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/"; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js": -/*!******************************************************************!*\ - !*** ./node_modules/@fancyapps/fancybox/dist/jquery.fancybox.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -// ================================================== -// fancyBox v3.5.7 -// -// Licensed GPLv3 for open source use -// or fancyBox Commercial License for commercial use -// -// http://fancyapps.com/fancybox/ -// Copyright 2019 fancyApps -// -// ================================================== -(function (window, document, $, undefined) { - "use strict"; - - window.console = window.console || { - info: function (stuff) {} - }; - - // If there's no jQuery, fancyBox can't work - // ========================================= - - if (!$) { - return; - } - - // Check if fancyBox is already initialized - // ======================================== - - if ($.fn.fancybox) { - console.info("fancyBox already initialized"); - - return; - } - - // Private default settings - // ======================== - - var defaults = { - // Close existing modals - // Set this to false if you do not need to stack multiple instances - closeExisting: false, - - // Enable infinite gallery navigation - loop: false, - - // Horizontal space between slides - gutter: 50, - - // Enable keyboard navigation - keyboard: true, - - // Should allow caption to overlap the content - preventCaptionOverlap: true, - - // Should display navigation arrows at the screen edges - arrows: true, - - // Should display counter at the top left corner - infobar: true, - - // Should display close button (using `btnTpl.smallBtn` template) over the content - // Can be true, false, "auto" - // If "auto" - will be automatically enabled for "html", "inline" or "ajax" items - smallBtn: "auto", - - // Should display toolbar (buttons at the top) - // Can be true, false, "auto" - // If "auto" - will be automatically hidden if "smallBtn" is enabled - toolbar: "auto", - - // What buttons should appear in the top right corner. - // Buttons will be created using templates from `btnTpl` option - // and they will be placed into toolbar (class="fancybox-toolbar"` element) - buttons: [ - "zoom", - //"share", - "slideShow", - //"fullScreen", - //"download", - "thumbs", - "close" - ], - - // Detect "idle" time in seconds - idleTime: 3, - - // Disable right-click and use simple image protection for images - protect: false, - - // Shortcut to make content "modal" - disable keyboard navigtion, hide buttons, etc - modal: false, - - image: { - // Wait for images to load before displaying - // true - wait for image to load and then display; - // false - display thumbnail and load the full-sized image over top, - // requires predefined image dimensions (`data-width` and `data-height` attributes) - preload: false - }, - - ajax: { - // Object containing settings for ajax request - settings: { - // This helps to indicate that request comes from the modal - // Feel free to change naming - data: { - fancybox: true - } - } - }, - - iframe: { - // Iframe template - tpl: '', - - // Preload iframe before displaying it - // This allows to calculate iframe content width and height - // (note: Due to "Same Origin Policy", you can't get cross domain data). - preload: true, - - // Custom CSS styling for iframe wrapping element - // You can use this to set custom iframe dimensions - css: {}, - - // Iframe tag attributes - attr: { - scrolling: "auto" - } - }, - - // For HTML5 video only - video: { - tpl: '", - format: "", // custom video format - autoStart: true - }, - - // Default content type if cannot be detected automatically - defaultType: "image", - - // Open/close animation type - // Possible values: - // false - disable - // "zoom" - zoom images from/to thumbnail - // "fade" - // "zoom-in-out" - // - animationEffect: "zoom", - - // Duration in ms for open/close animation - animationDuration: 366, - - // Should image change opacity while zooming - // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios - zoomOpacity: "auto", - - // Transition effect between slides - // - // Possible values: - // false - disable - // "fade' - // "slide' - // "circular' - // "tube' - // "zoom-in-out' - // "rotate' - // - transitionEffect: "fade", - - // Duration in ms for transition animation - transitionDuration: 366, - - // Custom CSS class for slide element - slideClass: "", - - // Custom CSS class for layout - baseClass: "", - - // Base template for layout - baseTpl: '", - - // Loading indicator template - spinnerTpl: '
', - - // Error message template - errorTpl: '

{{ERROR}}

', - - btnTpl: { - download: '' + - '' + - "", - - zoom: '", - - close: '", - - // Arrows - arrowLeft: '", - - arrowRight: '", - - // This small close button will be appended to your html/inline/ajax content by default, - // if "smallBtn" option is not set to false - smallBtn: '" - }, - - // Container is injected into this element - parentEl: "body", - - // Hide browser vertical scrollbars; use at your own risk - hideScrollbar: true, - - // Focus handling - // ============== - - // Try to focus on the first focusable element after opening - autoFocus: true, - - // Put focus back to active element after closing - backFocus: true, - - // Do not let user to focus on element outside modal content - trapFocus: true, - - // Module specific options - // ======================= - - fullScreen: { - autoStart: false - }, - - // Set `touch: false` to disable panning/swiping - touch: { - vertical: true, // Allow to drag content vertically - momentum: true // Continue movement after releasing mouse/touch when panning - }, - - // Hash value when initializing manually, - // set `false` to disable hash change - hash: null, - - // Customize or add new media types - // Example: - /* - media : { - youtube : { - params : { - autoplay : 0 - } - } - } - */ - media: {}, - - slideShow: { - autoStart: false, - speed: 3000 - }, - - thumbs: { - autoStart: false, // Display thumbnails on opening - hideOnClose: true, // Hide thumbnail grid when closing animation starts - parentEl: ".fancybox-container", // Container is injected into this element - axis: "y" // Vertical (y) or horizontal (x) scrolling - }, - - // Use mousewheel to navigate gallery - // If 'auto' - enabled for images only - wheel: "auto", - - // Callbacks - //========== - - // See Documentation/API/Events for more information - // Example: - /* - afterShow: function( instance, current ) { - console.info( 'Clicked element:' ); - console.info( current.opts.$orig ); - } - */ - - onInit: $.noop, // When instance has been initialized - - beforeLoad: $.noop, // Before the content of a slide is being loaded - afterLoad: $.noop, // When the content of a slide is done loading - - beforeShow: $.noop, // Before open animation starts - afterShow: $.noop, // When content is done loading and animating - - beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close. - afterClose: $.noop, // After instance has been closed - - onActivate: $.noop, // When instance is brought to front - onDeactivate: $.noop, // When other instance has been activated - - // Interaction - // =========== - - // Use options below to customize taken action when user clicks or double clicks on the fancyBox area, - // each option can be string or method that returns value. - // - // Possible values: - // "close" - close instance - // "next" - move to next gallery item - // "nextOrClose" - move to next gallery item or close if gallery has only one item - // "toggleControls" - show/hide controls - // "zoom" - zoom image (if loaded) - // false - do nothing - - // Clicked on the content - clickContent: function (current, event) { - return current.type === "image" ? "zoom" : false; - }, - - // Clicked on the slide - clickSlide: "close", - - // Clicked on the background (backdrop) element; - // if you have not changed the layout, then most likely you need to use `clickSlide` option - clickOutside: "close", - - // Same as previous two, but for double click - dblclickContent: false, - dblclickSlide: false, - dblclickOutside: false, - - // Custom options when mobile device is detected - // ============================================= - - mobile: { - preventCaptionOverlap: false, - idleTime: false, - clickContent: function (current, event) { - return current.type === "image" ? "toggleControls" : false; - }, - clickSlide: function (current, event) { - return current.type === "image" ? "toggleControls" : "close"; - }, - dblclickContent: function (current, event) { - return current.type === "image" ? "zoom" : false; - }, - dblclickSlide: function (current, event) { - return current.type === "image" ? "zoom" : false; - } - }, - - // Internationalization - // ==================== - - lang: "en", - i18n: { - en: { - CLOSE: "Close", - NEXT: "Next", - PREV: "Previous", - ERROR: "The requested content cannot be loaded.
Please try again later.", - PLAY_START: "Start slideshow", - PLAY_STOP: "Pause slideshow", - FULL_SCREEN: "Full screen", - THUMBS: "Thumbnails", - DOWNLOAD: "Download", - SHARE: "Share", - ZOOM: "Zoom" - }, - de: { - CLOSE: "Schließen", - NEXT: "Weiter", - PREV: "Zurück", - ERROR: "Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.", - PLAY_START: "Diaschau starten", - PLAY_STOP: "Diaschau beenden", - FULL_SCREEN: "Vollbild", - THUMBS: "Vorschaubilder", - DOWNLOAD: "Herunterladen", - SHARE: "Teilen", - ZOOM: "Vergrößern" - } - } - }; - - // Few useful variables and methods - // ================================ - - var $W = $(window); - var $D = $(document); - - var called = 0; - - // Check if an object is a jQuery object and not a native JavaScript object - // ======================================================================== - var isQuery = function (obj) { - return obj && obj.hasOwnProperty && obj instanceof $; - }; - - // Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame" - // =============================================================================== - var requestAFrame = (function () { - return ( - window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - // if all else fails, use setTimeout - function (callback) { - return window.setTimeout(callback, 1000 / 60); - } - ); - })(); - - var cancelAFrame = (function () { - return ( - window.cancelAnimationFrame || - window.webkitCancelAnimationFrame || - window.mozCancelAnimationFrame || - window.oCancelAnimationFrame || - function (id) { - window.clearTimeout(id); - } - ); - })(); - - // Detect the supported transition-end event property name - // ======================================================= - var transitionEnd = (function () { - var el = document.createElement("fakeelement"), - t; - - var transitions = { - transition: "transitionend", - OTransition: "oTransitionEnd", - MozTransition: "transitionend", - WebkitTransition: "webkitTransitionEnd" - }; - - for (t in transitions) { - if (el.style[t] !== undefined) { - return transitions[t]; - } - } - - return "transitionend"; - })(); - - // Force redraw on an element. - // This helps in cases where the browser doesn't redraw an updated element properly - // ================================================================================ - var forceRedraw = function ($el) { - return $el && $el.length && $el[0].offsetHeight; - }; - - // Exclude array (`buttons`) options from deep merging - // =================================================== - var mergeOpts = function (opts1, opts2) { - var rez = $.extend(true, {}, opts1, opts2); - - $.each(opts2, function (key, value) { - if ($.isArray(value)) { - rez[key] = value; - } - }); - - return rez; - }; - - // How much of an element is visible in viewport - // ============================================= - - var inViewport = function (elem) { - var elemCenter, rez; - - if (!elem || elem.ownerDocument !== document) { - return false; - } - - $(".fancybox-container").css("pointer-events", "none"); - - elemCenter = { - x: elem.getBoundingClientRect().left + elem.offsetWidth / 2, - y: elem.getBoundingClientRect().top + elem.offsetHeight / 2 - }; - - rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem; - - $(".fancybox-container").css("pointer-events", ""); - - return rez; - }; - - // Class definition - // ================ - - var FancyBox = function (content, opts, index) { - var self = this; - - self.opts = mergeOpts({ - index: index - }, $.fancybox.defaults); - - if ($.isPlainObject(opts)) { - self.opts = mergeOpts(self.opts, opts); - } - - if ($.fancybox.isMobile) { - self.opts = mergeOpts(self.opts, self.opts.mobile); - } - - self.id = self.opts.id || ++called; - - self.currIndex = parseInt(self.opts.index, 10) || 0; - self.prevIndex = null; - - self.prevPos = null; - self.currPos = 0; - - self.firstRun = true; - - // All group items - self.group = []; - - // Existing slides (for current, next and previous gallery items) - self.slides = {}; - - // Create group elements - self.addContent(content); - - if (!self.group.length) { - return; - } - - self.init(); - }; - - $.extend(FancyBox.prototype, { - // Create DOM structure - // ==================== - - init: function () { - var self = this, - firstItem = self.group[self.currIndex], - firstItemOpts = firstItem.opts, - $container, - buttonStr; - - if (firstItemOpts.closeExisting) { - $.fancybox.close(true); - } - - // Hide scrollbars - // =============== - - $("body").addClass("fancybox-active"); - - if ( - !$.fancybox.getInstance() && - firstItemOpts.hideScrollbar !== false && - !$.fancybox.isMobile && - document.body.scrollHeight > window.innerHeight - ) { - $("head").append( - '" - ); - - $("body").addClass("compensate-for-scrollbar"); - } - - // Build html markup and set references - // ==================================== - - // Build html code for buttons and insert into main template - buttonStr = ""; - - $.each(firstItemOpts.buttons, function (index, value) { - buttonStr += firstItemOpts.btnTpl[value] || ""; - }); - - // Create markup from base template, it will be initially hidden to - // avoid unnecessary work like painting while initializing is not complete - $container = $( - self.translate( - self, - firstItemOpts.baseTpl - .replace("{{buttons}}", buttonStr) - .replace("{{arrows}}", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight) - ) - ) - .attr("id", "fancybox-container-" + self.id) - .addClass(firstItemOpts.baseClass) - .data("FancyBox", self) - .appendTo(firstItemOpts.parentEl); - - // Create object holding references to jQuery wrapped nodes - self.$refs = { - container: $container - }; - - ["bg", "inner", "infobar", "toolbar", "stage", "caption", "navigation"].forEach(function (item) { - self.$refs[item] = $container.find(".fancybox-" + item); - }); - - self.trigger("onInit"); - - // Enable events, deactive previous instances - self.activate(); - - // Build slides, load and reveal content - self.jumpTo(self.currIndex); - }, - - // Simple i18n support - replaces object keys found in template - // with corresponding values - // ============================================================ - - translate: function (obj, str) { - var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en; - - return str.replace(/\{\{(\w+)\}\}/g, function (match, n) { - return arr[n] === undefined ? match : arr[n]; - }); - }, - - // Populate current group with fresh content - // Check if each object has valid type and content - // =============================================== - - addContent: function (content) { - var self = this, - items = $.makeArray(content), - thumbs; - - $.each(items, function (i, item) { - var obj = {}, - opts = {}, - $item, - type, - found, - src, - srcParts; - - // Step 1 - Make sure we have an object - // ==================================== - - if ($.isPlainObject(item)) { - // We probably have manual usage here, something like - // $.fancybox.open( [ { src : "image.jpg", type : "image" } ] ) - - obj = item; - opts = item.opts || item; - } else if ($.type(item) === "object" && $(item).length) { - // Here we probably have jQuery collection returned by some selector - $item = $(item); - - // Support attributes like `data-options='{"touch" : false}'` and `data-touch='false'` - opts = $item.data() || {}; - opts = $.extend(true, {}, opts, opts.options); - - // Here we store clicked element - opts.$orig = $item; - - obj.src = self.opts.src || opts.src || $item.attr("href"); - - // Assume that simple syntax is used, for example: - // `$.fancybox.open( $("#test"), {} );` - if (!obj.type && !obj.src) { - obj.type = "inline"; - obj.src = item; - } - } else { - // Assume we have a simple html code, for example: - // $.fancybox.open( '

Hi!

' ); - obj = { - type: "html", - src: item + "" - }; - } - - // Each gallery object has full collection of options - obj.opts = $.extend(true, {}, self.opts, opts); - - // Do not merge buttons array - if ($.isArray(opts.buttons)) { - obj.opts.buttons = opts.buttons; - } - - if ($.fancybox.isMobile && obj.opts.mobile) { - obj.opts = mergeOpts(obj.opts, obj.opts.mobile); - } - - // Step 2 - Make sure we have content type, if not - try to guess - // ============================================================== - - type = obj.type || obj.opts.type; - src = obj.src || ""; - - if (!type && src) { - if ((found = src.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))) { - type = "video"; - - if (!obj.opts.video.format) { - obj.opts.video.format = "video/" + (found[1] === "ogv" ? "ogg" : found[1]); - } - } else if (src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)) { - type = "image"; - } else if (src.match(/\.(pdf)((\?|#).*)?$/i)) { - type = "iframe"; - obj = $.extend(true, obj, { - contentType: "pdf", - opts: { - iframe: { - preload: false - } - } - }); - } else if (src.charAt(0) === "#") { - type = "inline"; - } - } - - if (type) { - obj.type = type; - } else { - self.trigger("objectNeedsType", obj); - } - - if (!obj.contentType) { - obj.contentType = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1 ? "html" : obj.type; - } - - // Step 3 - Some adjustments - // ========================= - - obj.index = self.group.length; - - if (obj.opts.smallBtn == "auto") { - obj.opts.smallBtn = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1; - } - - if (obj.opts.toolbar === "auto") { - obj.opts.toolbar = !obj.opts.smallBtn; - } - - // Find thumbnail image, check if exists and if is in the viewport - obj.$thumb = obj.opts.$thumb || null; - - if (obj.opts.$trigger && obj.index === self.opts.index) { - obj.$thumb = obj.opts.$trigger.find("img:first"); - - if (obj.$thumb.length) { - obj.opts.$orig = obj.opts.$trigger; - } - } - - if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) { - obj.$thumb = obj.opts.$orig.find("img:first"); - } - - if (obj.$thumb && !obj.$thumb.length) { - obj.$thumb = null; - } - - obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null); - - // "caption" is a "special" option, it can be used to customize caption per gallery item - if ($.type(obj.opts.caption) === "function") { - obj.opts.caption = obj.opts.caption.apply(item, [self, obj]); - } - - if ($.type(self.opts.caption) === "function") { - obj.opts.caption = self.opts.caption.apply(item, [self, obj]); - } - - // Make sure we have caption as a string or jQuery object - if (!(obj.opts.caption instanceof $)) { - obj.opts.caption = obj.opts.caption === undefined ? "" : obj.opts.caption + ""; - } - - // Check if url contains "filter" used to filter the content - // Example: "ajax.html #something" - if (obj.type === "ajax") { - srcParts = src.split(/\s+/, 2); - - if (srcParts.length > 1) { - obj.src = srcParts.shift(); - - obj.opts.filter = srcParts.shift(); - } - } - - // Hide all buttons and disable interactivity for modal items - if (obj.opts.modal) { - obj.opts = $.extend(true, obj.opts, { - trapFocus: true, - // Remove buttons - infobar: 0, - toolbar: 0, - - smallBtn: 0, - - // Disable keyboard navigation - keyboard: 0, - - // Disable some modules - slideShow: 0, - fullScreen: 0, - thumbs: 0, - touch: 0, - - // Disable click event handlers - clickContent: false, - clickSlide: false, - clickOutside: false, - dblclickContent: false, - dblclickSlide: false, - dblclickOutside: false - }); - } - - // Step 4 - Add processed object to group - // ====================================== - - self.group.push(obj); - }); - - // Update controls if gallery is already opened - if (Object.keys(self.slides).length) { - self.updateControls(); - - // Update thumbnails, if needed - thumbs = self.Thumbs; - - if (thumbs && thumbs.isActive) { - thumbs.create(); - - thumbs.focus(); - } - } - }, - - // Attach an event handler functions for: - // - navigation buttons - // - browser scrolling, resizing; - // - focusing - // - keyboard - // - detecting inactivity - // ====================================== - - addEvents: function () { - var self = this; - - self.removeEvents(); - - // Make navigation elements clickable - // ================================== - - self.$refs.container - .on("click.fb-close", "[data-fancybox-close]", function (e) { - e.stopPropagation(); - e.preventDefault(); - - self.close(e); - }) - .on("touchstart.fb-prev click.fb-prev", "[data-fancybox-prev]", function (e) { - e.stopPropagation(); - e.preventDefault(); - - self.previous(); - }) - .on("touchstart.fb-next click.fb-next", "[data-fancybox-next]", function (e) { - e.stopPropagation(); - e.preventDefault(); - - self.next(); - }) - .on("click.fb", "[data-fancybox-zoom]", function (e) { - // Click handler for zoom button - self[self.isScaledDown() ? "scaleToActual" : "scaleToFit"](); - }); - - // Handle page scrolling and browser resizing - // ========================================== - - $W.on("orientationchange.fb resize.fb", function (e) { - if (e && e.originalEvent && e.originalEvent.type === "resize") { - if (self.requestId) { - cancelAFrame(self.requestId); - } - - self.requestId = requestAFrame(function () { - self.update(e); - }); - } else { - if (self.current && self.current.type === "iframe") { - self.$refs.stage.hide(); - } - - setTimeout( - function () { - self.$refs.stage.show(); - - self.update(e); - }, - $.fancybox.isMobile ? 600 : 250 - ); - } - }); - - $D.on("keydown.fb", function (e) { - var instance = $.fancybox ? $.fancybox.getInstance() : null, - current = instance.current, - keycode = e.keyCode || e.which; - - // Trap keyboard focus inside of the modal - // ======================================= - - if (keycode == 9) { - if (current.opts.trapFocus) { - self.focus(e); - } - - return; - } - - // Enable keyboard navigation - // ========================== - - if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is("input,textarea,video,audio,select")) { - return; - } - - // Backspace and Esc keys - if (keycode === 8 || keycode === 27) { - e.preventDefault(); - - self.close(e); - - return; - } - - // Left arrow and Up arrow - if (keycode === 37 || keycode === 38) { - e.preventDefault(); - - self.previous(); - - return; - } - - // Righ arrow and Down arrow - if (keycode === 39 || keycode === 40) { - e.preventDefault(); - - self.next(); - - return; - } - - self.trigger("afterKeydown", e, keycode); - }); - - // Hide controls after some inactivity period - if (self.group[self.currIndex].opts.idleTime) { - self.idleSecondsCounter = 0; - - $D.on( - "mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle", - function (e) { - self.idleSecondsCounter = 0; - - if (self.isIdle) { - self.showControls(); - } - - self.isIdle = false; - } - ); - - self.idleInterval = window.setInterval(function () { - self.idleSecondsCounter++; - - if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) { - self.isIdle = true; - self.idleSecondsCounter = 0; - - self.hideControls(); - } - }, 1000); - } - }, - - // Remove events added by the core - // =============================== - - removeEvents: function () { - var self = this; - - $W.off("orientationchange.fb resize.fb"); - $D.off("keydown.fb .fb-idle"); - - this.$refs.container.off(".fb-close .fb-prev .fb-next"); - - if (self.idleInterval) { - window.clearInterval(self.idleInterval); - - self.idleInterval = null; - } - }, - - // Change to previous gallery item - // =============================== - - previous: function (duration) { - return this.jumpTo(this.currPos - 1, duration); - }, - - // Change to next gallery item - // =========================== - - next: function (duration) { - return this.jumpTo(this.currPos + 1, duration); - }, - - // Switch to selected gallery item - // =============================== - - jumpTo: function (pos, duration) { - var self = this, - groupLen = self.group.length, - firstRun, - isMoved, - loop, - current, - previous, - slidePos, - stagePos, - prop, - diff; - - if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) { - return; - } - - // Should loop? - pos = parseInt(pos, 10); - loop = self.current ? self.current.opts.loop : self.opts.loop; - - if (!loop && (pos < 0 || pos >= groupLen)) { - return false; - } - - // Check if opening for the first time; this helps to speed things up - firstRun = self.firstRun = !Object.keys(self.slides).length; - - // Create slides - previous = self.current; - - self.prevIndex = self.currIndex; - self.prevPos = self.currPos; - - current = self.createSlide(pos); - - if (groupLen > 1) { - if (loop || current.index < groupLen - 1) { - self.createSlide(pos + 1); - } - - if (loop || current.index > 0) { - self.createSlide(pos - 1); - } - } - - self.current = current; - self.currIndex = current.index; - self.currPos = current.pos; - - self.trigger("beforeShow", firstRun); - - self.updateControls(); - - // Validate duration length - current.forcedDuration = undefined; - - if ($.isNumeric(duration)) { - current.forcedDuration = duration; - } else { - duration = current.opts[firstRun ? "animationDuration" : "transitionDuration"]; - } - - duration = parseInt(duration, 10); - - // Check if user has swiped the slides or if still animating - isMoved = self.isMoved(current); - - // Make sure current slide is visible - current.$slide.addClass("fancybox-slide--current"); - - // Fresh start - reveal container, current slide and start loading content - if (firstRun) { - if (current.opts.animationEffect && duration) { - self.$refs.container.css("transition-duration", duration + "ms"); - } - - self.$refs.container.addClass("fancybox-is-open").trigger("focus"); - - // Attempt to load content into slide - // This will later call `afterLoad` -> `revealContent` - self.loadSlide(current); - - self.preload("image"); - - return; - } - - // Get actual slide/stage positions (before cleaning up) - slidePos = $.fancybox.getTranslate(previous.$slide); - stagePos = $.fancybox.getTranslate(self.$refs.stage); - - // Clean up all slides - $.each(self.slides, function (index, slide) { - $.fancybox.stop(slide.$slide, true); - }); - - if (previous.pos !== current.pos) { - previous.isComplete = false; - } - - previous.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"); - - // If slides are out of place, then animate them to correct position - if (isMoved) { - // Calculate horizontal swipe distance - diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter); - - $.each(self.slides, function (index, slide) { - slide.$slide.removeClass("fancybox-animated").removeClass(function (index, className) { - return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" "); - }); - - // Make sure that each slide is in equal distance - // This is mostly needed for freshly added slides, because they are not yet positioned - var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter; - - $.fancybox.setTranslate(slide.$slide, { - top: 0, - left: leftPos - stagePos.left + diff - }); - - if (slide.pos !== current.pos) { - slide.$slide.addClass("fancybox-slide--" + (slide.pos > current.pos ? "next" : "previous")); - } - - // Redraw to make sure that transition will start - forceRedraw(slide.$slide); - - // Animate the slide - $.fancybox.animate( - slide.$slide, { - top: 0, - left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter - }, - duration, - function () { - slide.$slide - .css({ - transform: "", - opacity: "" - }) - .removeClass("fancybox-slide--next fancybox-slide--previous"); - - if (slide.pos === self.currPos) { - self.complete(); - } - } - ); - }); - } else if (duration && current.opts.transitionEffect) { - // Set transition effect for previously active slide - prop = "fancybox-animated fancybox-fx-" + current.opts.transitionEffect; - - previous.$slide.addClass("fancybox-slide--" + (previous.pos > current.pos ? "next" : "previous")); - - $.fancybox.animate( - previous.$slide, - prop, - duration, - function () { - previous.$slide.removeClass(prop).removeClass("fancybox-slide--next fancybox-slide--previous"); - }, - false - ); - } - - if (current.isLoaded) { - self.revealContent(current); - } else { - self.loadSlide(current); - } - - self.preload("image"); - }, - - // Create new "slide" element - // These are gallery items that are actually added to DOM - // ======================================================= - - createSlide: function (pos) { - var self = this, - $slide, - index; - - index = pos % self.group.length; - index = index < 0 ? self.group.length + index : index; - - if (!self.slides[pos] && self.group[index]) { - $slide = $('
').appendTo(self.$refs.stage); - - self.slides[pos] = $.extend(true, {}, self.group[index], { - pos: pos, - $slide: $slide, - isLoaded: false - }); - - self.updateSlide(self.slides[pos]); - } - - return self.slides[pos]; - }, - - // Scale image to the actual size of the image; - // x and y values should be relative to the slide - // ============================================== - - scaleToActual: function (x, y, duration) { - var self = this, - current = self.current, - $content = current.$content, - canvasWidth = $.fancybox.getTranslate(current.$slide).width, - canvasHeight = $.fancybox.getTranslate(current.$slide).height, - newImgWidth = current.width, - newImgHeight = current.height, - imgPos, - posX, - posY, - scaleX, - scaleY; - - if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) { - return; - } - - self.isAnimating = true; - - $.fancybox.stop($content); - - x = x === undefined ? canvasWidth * 0.5 : x; - y = y === undefined ? canvasHeight * 0.5 : y; - - imgPos = $.fancybox.getTranslate($content); - - imgPos.top -= $.fancybox.getTranslate(current.$slide).top; - imgPos.left -= $.fancybox.getTranslate(current.$slide).left; - - scaleX = newImgWidth / imgPos.width; - scaleY = newImgHeight / imgPos.height; - - // Get center position for original image - posX = canvasWidth * 0.5 - newImgWidth * 0.5; - posY = canvasHeight * 0.5 - newImgHeight * 0.5; - - // Make sure image does not move away from edges - if (newImgWidth > canvasWidth) { - posX = imgPos.left * scaleX - (x * scaleX - x); - - if (posX > 0) { - posX = 0; - } - - if (posX < canvasWidth - newImgWidth) { - posX = canvasWidth - newImgWidth; - } - } - - if (newImgHeight > canvasHeight) { - posY = imgPos.top * scaleY - (y * scaleY - y); - - if (posY > 0) { - posY = 0; - } - - if (posY < canvasHeight - newImgHeight) { - posY = canvasHeight - newImgHeight; - } - } - - self.updateCursor(newImgWidth, newImgHeight); - - $.fancybox.animate( - $content, { - top: posY, - left: posX, - scaleX: scaleX, - scaleY: scaleY - }, - duration || 366, - function () { - self.isAnimating = false; - } - ); - - // Stop slideshow - if (self.SlideShow && self.SlideShow.isActive) { - self.SlideShow.stop(); - } - }, - - // Scale image to fit inside parent element - // ======================================== - - scaleToFit: function (duration) { - var self = this, - current = self.current, - $content = current.$content, - end; - - if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) { - return; - } - - self.isAnimating = true; - - $.fancybox.stop($content); - - end = self.getFitPos(current); - - self.updateCursor(end.width, end.height); - - $.fancybox.animate( - $content, { - top: end.top, - left: end.left, - scaleX: end.width / $content.width(), - scaleY: end.height / $content.height() - }, - duration || 366, - function () { - self.isAnimating = false; - } - ); - }, - - // Calculate image size to fit inside viewport - // =========================================== - - getFitPos: function (slide) { - var self = this, - $content = slide.$content, - $slide = slide.$slide, - width = slide.width || slide.opts.width, - height = slide.height || slide.opts.height, - maxWidth, - maxHeight, - minRatio, - aspectRatio, - rez = {}; - - if (!slide.isLoaded || !$content || !$content.length) { - return false; - } - - maxWidth = $.fancybox.getTranslate(self.$refs.stage).width; - maxHeight = $.fancybox.getTranslate(self.$refs.stage).height; - - maxWidth -= - parseFloat($slide.css("paddingLeft")) + - parseFloat($slide.css("paddingRight")) + - parseFloat($content.css("marginLeft")) + - parseFloat($content.css("marginRight")); - - maxHeight -= - parseFloat($slide.css("paddingTop")) + - parseFloat($slide.css("paddingBottom")) + - parseFloat($content.css("marginTop")) + - parseFloat($content.css("marginBottom")); - - if (!width || !height) { - width = maxWidth; - height = maxHeight; - } - - minRatio = Math.min(1, maxWidth / width, maxHeight / height); - - width = minRatio * width; - height = minRatio * height; - - // Adjust width/height to precisely fit into container - if (width > maxWidth - 0.5) { - width = maxWidth; - } - - if (height > maxHeight - 0.5) { - height = maxHeight; - } - - if (slide.type === "image") { - rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css("paddingTop")); - rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css("paddingLeft")); - } else if (slide.contentType === "video") { - // Force aspect ratio for the video - // "I say the whole world must learn of our peaceful ways… by force!" - aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9; - - if (height > width / aspectRatio) { - height = width / aspectRatio; - } else if (width > height * aspectRatio) { - width = height * aspectRatio; - } - } - - rez.width = width; - rez.height = height; - - return rez; - }, - - // Update content size and position for all slides - // ============================================== - - update: function (e) { - var self = this; - - $.each(self.slides, function (key, slide) { - self.updateSlide(slide, e); - }); - }, - - // Update slide content position and size - // ====================================== - - updateSlide: function (slide, e) { - var self = this, - $content = slide && slide.$content, - width = slide.width || slide.opts.width, - height = slide.height || slide.opts.height, - $slide = slide.$slide; - - // First, prevent caption overlap, if needed - self.adjustCaption(slide); - - // Then resize content to fit inside the slide - if ($content && (width || height || slide.contentType === "video") && !slide.hasError) { - $.fancybox.stop($content); - - $.fancybox.setTranslate($content, self.getFitPos(slide)); - - if (slide.pos === self.currPos) { - self.isAnimating = false; - - self.updateCursor(); - } - } - - // Then some adjustments - self.adjustLayout(slide); - - if ($slide.length) { - $slide.trigger("refresh"); - - if (slide.pos === self.currPos) { - self.$refs.toolbar - .add(self.$refs.navigation.find(".fancybox-button--arrow_right")) - .toggleClass("compensate-for-scrollbar", $slide.get(0).scrollHeight > $slide.get(0).clientHeight); - } - } - - self.trigger("onUpdate", slide, e); - }, - - // Horizontally center slide - // ========================= - - centerSlide: function (duration) { - var self = this, - current = self.current, - $slide = current.$slide; - - if (self.isClosing || !current) { - return; - } - - $slide.siblings().css({ - transform: "", - opacity: "" - }); - - $slide - .parent() - .children() - .removeClass("fancybox-slide--previous fancybox-slide--next"); - - $.fancybox.animate( - $slide, { - top: 0, - left: 0, - opacity: 1 - }, - duration === undefined ? 0 : duration, - function () { - // Clean up - $slide.css({ - transform: "", - opacity: "" - }); - - if (!current.isComplete) { - self.complete(); - } - }, - false - ); - }, - - // Check if current slide is moved (swiped) - // ======================================== - - isMoved: function (slide) { - var current = slide || this.current, - slidePos, - stagePos; - - if (!current) { - return false; - } - - stagePos = $.fancybox.getTranslate(this.$refs.stage); - slidePos = $.fancybox.getTranslate(current.$slide); - - return ( - !current.$slide.hasClass("fancybox-animated") && - (Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5) - ); - }, - - // Update cursor style depending if content can be zoomed - // ====================================================== - - updateCursor: function (nextWidth, nextHeight) { - var self = this, - current = self.current, - $container = self.$refs.container, - canPan, - isZoomable; - - if (!current || self.isClosing || !self.Guestures) { - return; - } - - $container.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"); - - canPan = self.canPan(nextWidth, nextHeight); - - isZoomable = canPan ? true : self.isZoomable(); - - $container.toggleClass("fancybox-is-zoomable", isZoomable); - - $("[data-fancybox-zoom]").prop("disabled", !isZoomable); - - if (canPan) { - $container.addClass("fancybox-can-pan"); - } else if ( - isZoomable && - (current.opts.clickContent === "zoom" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == "zoom")) - ) { - $container.addClass("fancybox-can-zoomIn"); - } else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== "video") { - $container.addClass("fancybox-can-swipe"); - } - }, - - // Check if current slide is zoomable - // ================================== - - isZoomable: function () { - var self = this, - current = self.current, - fitPos; - - // Assume that slide is zoomable if: - // - image is still loading - // - actual size of the image is smaller than available area - if (current && !self.isClosing && current.type === "image" && !current.hasError) { - if (!current.isLoaded) { - return true; - } - - fitPos = self.getFitPos(current); - - if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) { - return true; - } - } - - return false; - }, - - // Check if current image dimensions are smaller than actual - // ========================================================= - - isScaledDown: function (nextWidth, nextHeight) { - var self = this, - rez = false, - current = self.current, - $content = current.$content; - - if (nextWidth !== undefined && nextHeight !== undefined) { - rez = nextWidth < current.width && nextHeight < current.height; - } else if ($content) { - rez = $.fancybox.getTranslate($content); - rez = rez.width < current.width && rez.height < current.height; - } - - return rez; - }, - - // Check if image dimensions exceed parent element - // =============================================== - - canPan: function (nextWidth, nextHeight) { - var self = this, - current = self.current, - pos = null, - rez = false; - - if (current.type === "image" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) { - rez = self.getFitPos(current); - - if (nextWidth !== undefined && nextHeight !== undefined) { - pos = { - width: nextWidth, - height: nextHeight - }; - } else if (current.isComplete) { - pos = $.fancybox.getTranslate(current.$content); - } - - if (pos && rez) { - rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5; - } - } - - return rez; - }, - - // Load content into the slide - // =========================== - - loadSlide: function (slide) { - var self = this, - type, - $slide, - ajaxLoad; - - if (slide.isLoading || slide.isLoaded) { - return; - } - - slide.isLoading = true; - - if (self.trigger("beforeLoad", slide) === false) { - slide.isLoading = false; - - return false; - } - - type = slide.type; - $slide = slide.$slide; - - $slide - .off("refresh") - .trigger("onReset") - .addClass(slide.opts.slideClass); - - // Create content depending on the type - switch (type) { - case "image": - self.setImage(slide); - - break; - - case "iframe": - self.setIframe(slide); - - break; - - case "html": - self.setContent(slide, slide.src || slide.content); - - break; - - case "video": - self.setContent( - slide, - slide.opts.video.tpl - .replace(/\{\{src\}\}/gi, slide.src) - .replace("{{format}}", slide.opts.videoFormat || slide.opts.video.format || "") - .replace("{{poster}}", slide.thumb || "") - ); - - break; - - case "inline": - if ($(slide.src).length) { - self.setContent(slide, $(slide.src)); - } else { - self.setError(slide); - } - - break; - - case "ajax": - self.showLoading(slide); - - ajaxLoad = $.ajax( - $.extend({}, slide.opts.ajax.settings, { - url: slide.src, - success: function (data, textStatus) { - if (textStatus === "success") { - self.setContent(slide, data); - } - }, - error: function (jqXHR, textStatus) { - if (jqXHR && textStatus !== "abort") { - self.setError(slide); - } - } - }) - ); - - $slide.one("onReset", function () { - ajaxLoad.abort(); - }); - - break; - - default: - self.setError(slide); - - break; - } - - return true; - }, - - // Use thumbnail image, if possible - // ================================ - - setImage: function (slide) { - var self = this, - ghost; - - // Check if need to show loading icon - setTimeout(function () { - var $img = slide.$image; - - if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) { - self.showLoading(slide); - } - }, 50); - - //Check if image has srcset - self.checkSrcset(slide); - - // This will be wrapper containing both ghost and actual image - slide.$content = $('
') - .addClass("fancybox-is-hidden") - .appendTo(slide.$slide.addClass("fancybox-slide--image")); - - // If we have a thumbnail, we can display it while actual image is loading - // Users will not stare at black screen and actual image will appear gradually - if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) { - slide.width = slide.opts.width; - slide.height = slide.opts.height; - - ghost = document.createElement("img"); - - ghost.onerror = function () { - $(this).remove(); - - slide.$ghost = null; - }; - - ghost.onload = function () { - self.afterLoad(slide); - }; - - slide.$ghost = $(ghost) - .addClass("fancybox-image") - .appendTo(slide.$content) - .attr("src", slide.thumb); - } - - // Start loading actual image - self.setBigImage(slide); - }, - - // Check if image has srcset and get the source - // ============================================ - checkSrcset: function (slide) { - var srcset = slide.opts.srcset || slide.opts.image.srcset, - found, - temp, - pxRatio, - windowWidth; - - // If we have "srcset", then we need to find first matching "src" value. - // This is necessary, because when you set an src attribute, the browser will preload the image - // before any javascript or even CSS is applied. - if (srcset) { - pxRatio = window.devicePixelRatio || 1; - windowWidth = window.innerWidth * pxRatio; - - temp = srcset.split(",").map(function (el) { - var ret = {}; - - el.trim() - .split(/\s+/) - .forEach(function (el, i) { - var value = parseInt(el.substring(0, el.length - 1), 10); - - if (i === 0) { - return (ret.url = el); - } - - if (value) { - ret.value = value; - ret.postfix = el[el.length - 1]; - } - }); - - return ret; - }); - - // Sort by value - temp.sort(function (a, b) { - return a.value - b.value; - }); - - // Ok, now we have an array of all srcset values - for (var j = 0; j < temp.length; j++) { - var el = temp[j]; - - if ((el.postfix === "w" && el.value >= windowWidth) || (el.postfix === "x" && el.value >= pxRatio)) { - found = el; - break; - } - } - - // If not found, take the last one - if (!found && temp.length) { - found = temp[temp.length - 1]; - } - - if (found) { - slide.src = found.url; - - // If we have default width/height values, we can calculate height for matching source - if (slide.width && slide.height && found.postfix == "w") { - slide.height = (slide.width / slide.height) * found.value; - slide.width = found.value; - } - - slide.opts.srcset = srcset; - } - } - }, - - // Create full-size image - // ====================== - - setBigImage: function (slide) { - var self = this, - img = document.createElement("img"), - $img = $(img); - - slide.$image = $img - .one("error", function () { - self.setError(slide); - }) - .one("load", function () { - var sizes; - - if (!slide.$ghost) { - self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight); - - self.afterLoad(slide); - } - - if (self.isClosing) { - return; - } - - if (slide.opts.srcset) { - sizes = slide.opts.sizes; - - if (!sizes || sizes === "auto") { - sizes = - (slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? "100" : Math.round((slide.width / slide.height) * 100)) + - "vw"; - } - - $img.attr("sizes", sizes).attr("srcset", slide.opts.srcset); - } - - // Hide temporary image after some delay - if (slide.$ghost) { - setTimeout(function () { - if (slide.$ghost && !self.isClosing) { - slide.$ghost.hide(); - } - }, Math.min(300, Math.max(1000, slide.height / 1600))); - } - - self.hideLoading(slide); - }) - .addClass("fancybox-image") - .attr("src", slide.src) - .appendTo(slide.$content); - - if ((img.complete || img.readyState == "complete") && $img.naturalWidth && $img.naturalHeight) { - $img.trigger("load"); - } else if (img.error) { - $img.trigger("error"); - } - }, - - // Computes the slide size from image size and maxWidth/maxHeight - // ============================================================== - - resolveImageSlideSize: function (slide, imgWidth, imgHeight) { - var maxWidth = parseInt(slide.opts.width, 10), - maxHeight = parseInt(slide.opts.height, 10); - - // Sets the default values from the image - slide.width = imgWidth; - slide.height = imgHeight; - - if (maxWidth > 0) { - slide.width = maxWidth; - slide.height = Math.floor((maxWidth * imgHeight) / imgWidth); - } - - if (maxHeight > 0) { - slide.width = Math.floor((maxHeight * imgWidth) / imgHeight); - slide.height = maxHeight; - } - }, - - // Create iframe wrapper, iframe and bindings - // ========================================== - - setIframe: function (slide) { - var self = this, - opts = slide.opts.iframe, - $slide = slide.$slide, - $iframe; - - slide.$content = $('
') - .css(opts.css) - .appendTo($slide); - - $slide.addClass("fancybox-slide--" + slide.contentType); - - slide.$iframe = $iframe = $(opts.tpl.replace(/\{rnd\}/g, new Date().getTime())) - .attr(opts.attr) - .appendTo(slide.$content); - - if (opts.preload) { - self.showLoading(slide); - - // Unfortunately, it is not always possible to determine if iframe is successfully loaded - // (due to browser security policy) - - $iframe.on("load.fb error.fb", function (e) { - this.isReady = 1; - - slide.$slide.trigger("refresh"); - - self.afterLoad(slide); - }); - - // Recalculate iframe content size - // =============================== - - $slide.on("refresh.fb", function () { - var $content = slide.$content, - frameWidth = opts.css.width, - frameHeight = opts.css.height, - $contents, - $body; - - if ($iframe[0].isReady !== 1) { - return; - } - - try { - $contents = $iframe.contents(); - $body = $contents.find("body"); - } catch (ignore) {} - - // Calculate content dimensions, if it is accessible - if ($body && $body.length && $body.children().length) { - // Avoid scrolling to top (if multiple instances) - $slide.css("overflow", "visible"); - - $content.css({ - width: "100%", - "max-width": "100%", - height: "9999px" - }); - - if (frameWidth === undefined) { - frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true))); - } - - $content.css("width", frameWidth ? frameWidth : "").css("max-width", ""); - - if (frameHeight === undefined) { - frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true))); - } - - $content.css("height", frameHeight ? frameHeight : ""); - - $slide.css("overflow", "auto"); - } - - $content.removeClass("fancybox-is-hidden"); - }); - } else { - self.afterLoad(slide); - } - - $iframe.attr("src", slide.src); - - // Remove iframe if closing or changing gallery item - $slide.one("onReset", function () { - // This helps IE not to throw errors when closing - try { - $(this) - .find("iframe") - .hide() - .unbind() - .attr("src", "//about:blank"); - } catch (ignore) {} - - $(this) - .off("refresh.fb") - .empty(); - - slide.isLoaded = false; - slide.isRevealed = false; - }); - }, - - // Wrap and append content to the slide - // ====================================== - - setContent: function (slide, content) { - var self = this; - - if (self.isClosing) { - return; - } - - self.hideLoading(slide); - - if (slide.$content) { - $.fancybox.stop(slide.$content); - } - - slide.$slide.empty(); - - // If content is a jQuery object, then it will be moved to the slide. - // The placeholder is created so we will know where to put it back. - if (isQuery(content) && content.parent().length) { - // Make sure content is not already moved to fancyBox - if (content.hasClass("fancybox-content") || content.parent().hasClass("fancybox-content")) { - content.parents(".fancybox-slide").trigger("onReset"); - } - - // Create temporary element marking original place of the content - slide.$placeholder = $("
") - .hide() - .insertAfter(content); - - // Make sure content is visible - content.css("display", "inline-block"); - } else if (!slide.hasError) { - // If content is just a plain text, try to convert it to html - if ($.type(content) === "string") { - content = $("
") - .append($.trim(content)) - .contents(); - } - - // If "filter" option is provided, then filter content - if (slide.opts.filter) { - content = $("
") - .html(content) - .find(slide.opts.filter); - } - } - - slide.$slide.one("onReset", function () { - // Pause all html5 video/audio - $(this) - .find("video,audio") - .trigger("pause"); - - // Put content back - if (slide.$placeholder) { - slide.$placeholder.after(content.removeClass("fancybox-content").hide()).remove(); - - slide.$placeholder = null; - } - - // Remove custom close button - if (slide.$smallBtn) { - slide.$smallBtn.remove(); - - slide.$smallBtn = null; - } - - // Remove content and mark slide as not loaded - if (!slide.hasError) { - $(this).empty(); - - slide.isLoaded = false; - slide.isRevealed = false; - } - }); - - $(content).appendTo(slide.$slide); - - if ($(content).is("video,audio")) { - $(content).addClass("fancybox-video"); - - $(content).wrap("
"); - - slide.contentType = "video"; - - slide.opts.width = slide.opts.width || $(content).attr("width"); - slide.opts.height = slide.opts.height || $(content).attr("height"); - } - - slide.$content = slide.$slide - .children() - .filter("div,form,main,video,audio,article,.fancybox-content") - .first(); - - slide.$content.siblings().hide(); - - // Re-check if there is a valid content - // (in some cases, ajax response can contain various elements or plain text) - if (!slide.$content.length) { - slide.$content = slide.$slide - .wrapInner("
") - .children() - .first(); - } - - slide.$content.addClass("fancybox-content"); - - slide.$slide.addClass("fancybox-slide--" + slide.contentType); - - self.afterLoad(slide); - }, - - // Display error message - // ===================== - - setError: function (slide) { - slide.hasError = true; - - slide.$slide - .trigger("onReset") - .removeClass("fancybox-slide--" + slide.contentType) - .addClass("fancybox-slide--error"); - - slide.contentType = "html"; - - this.setContent(slide, this.translate(slide, slide.opts.errorTpl)); - - if (slide.pos === this.currPos) { - this.isAnimating = false; - } - }, - - // Show loading icon inside the slide - // ================================== - - showLoading: function (slide) { - var self = this; - - slide = slide || self.current; - - if (slide && !slide.$spinner) { - slide.$spinner = $(self.translate(self, self.opts.spinnerTpl)) - .appendTo(slide.$slide) - .hide() - .fadeIn("fast"); - } - }, - - // Remove loading icon from the slide - // ================================== - - hideLoading: function (slide) { - var self = this; - - slide = slide || self.current; - - if (slide && slide.$spinner) { - slide.$spinner.stop().remove(); - - delete slide.$spinner; - } - }, - - // Adjustments after slide content has been loaded - // =============================================== - - afterLoad: function (slide) { - var self = this; - - if (self.isClosing) { - return; - } - - slide.isLoading = false; - slide.isLoaded = true; - - self.trigger("afterLoad", slide); - - self.hideLoading(slide); - - // Add small close button - if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) { - slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content); - } - - // Disable right click - if (slide.opts.protect && slide.$content && !slide.hasError) { - slide.$content.on("contextmenu.fb", function (e) { - if (e.button == 2) { - e.preventDefault(); - } - - return true; - }); - - // Add fake element on top of the image - // This makes a bit harder for user to select image - if (slide.type === "image") { - $('
').appendTo(slide.$content); - } - } - - self.adjustCaption(slide); - - self.adjustLayout(slide); - - if (slide.pos === self.currPos) { - self.updateCursor(); - } - - self.revealContent(slide); - }, - - // Prevent caption overlap, - // fix css inconsistency across browsers - // ===================================== - - adjustCaption: function (slide) { - var self = this, - current = slide || self.current, - caption = current.opts.caption, - preventOverlap = current.opts.preventCaptionOverlap, - $caption = self.$refs.caption, - $clone, - captionH = false; - - $caption.toggleClass("fancybox-caption--separate", preventOverlap); - - if (preventOverlap && caption && caption.length) { - if (current.pos !== self.currPos) { - $clone = $caption.clone().appendTo($caption.parent()); - - $clone - .children() - .eq(0) - .empty() - .html(caption); - - captionH = $clone.outerHeight(true); - - $clone.empty().remove(); - } else if (self.$caption) { - captionH = self.$caption.outerHeight(true); - } - - current.$slide.css("padding-bottom", captionH || ""); - } - }, - - // Simple hack to fix inconsistency across browsers, described here (affects Edge, too): - // https://bugzilla.mozilla.org/show_bug.cgi?id=748518 - // ==================================================================================== - - adjustLayout: function (slide) { - var self = this, - current = slide || self.current, - scrollHeight, - marginBottom, - inlinePadding, - actualPadding; - - if (current.isLoaded && current.opts.disableLayoutFix !== true) { - current.$content.css("margin-bottom", ""); - - // If we would always set margin-bottom for the content, - // then it would potentially break vertical align - if (current.$content.outerHeight() > current.$slide.height() + 0.5) { - inlinePadding = current.$slide[0].style["padding-bottom"]; - actualPadding = current.$slide.css("padding-bottom"); - - if (parseFloat(actualPadding) > 0) { - scrollHeight = current.$slide[0].scrollHeight; - - current.$slide.css("padding-bottom", 0); - - if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) { - marginBottom = actualPadding; - } - - current.$slide.css("padding-bottom", inlinePadding); - } - } - - current.$content.css("margin-bottom", marginBottom); - } - }, - - // Make content visible - // This method is called right after content has been loaded or - // user navigates gallery and transition should start - // ============================================================ - - revealContent: function (slide) { - var self = this, - $slide = slide.$slide, - end = false, - start = false, - isMoved = self.isMoved(slide), - isRevealed = slide.isRevealed, - effect, - effectClassName, - duration, - opacity; - - slide.isRevealed = true; - - effect = slide.opts[self.firstRun ? "animationEffect" : "transitionEffect"]; - duration = slide.opts[self.firstRun ? "animationDuration" : "transitionDuration"]; - - duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10); - - if (isMoved || slide.pos !== self.currPos || !duration) { - effect = false; - } - - // Check if can zoom - if (effect === "zoom") { - if (slide.pos === self.currPos && duration && slide.type === "image" && !slide.hasError && (start = self.getThumbPos(slide))) { - end = self.getFitPos(slide); - } else { - effect = "fade"; - } - } - - // Zoom animation - // ============== - if (effect === "zoom") { - self.isAnimating = true; - - end.scaleX = end.width / start.width; - end.scaleY = end.height / start.height; - - // Check if we need to animate opacity - opacity = slide.opts.zoomOpacity; - - if (opacity == "auto") { - opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1; - } - - if (opacity) { - start.opacity = 0.1; - end.opacity = 1; - } - - // Draw image at start position - $.fancybox.setTranslate(slide.$content.removeClass("fancybox-is-hidden"), start); - - forceRedraw(slide.$content); - - // Start animation - $.fancybox.animate(slide.$content, end, duration, function () { - self.isAnimating = false; - - self.complete(); - }); - - return; - } - - self.updateSlide(slide); - - // Simply show content if no effect - // ================================ - if (!effect) { - slide.$content.removeClass("fancybox-is-hidden"); - - if (!isRevealed && isMoved && slide.type === "image" && !slide.hasError) { - slide.$content.hide().fadeIn("fast"); - } - - if (slide.pos === self.currPos) { - self.complete(); - } - - return; - } - - // Prepare for CSS transiton - // ========================= - $.fancybox.stop($slide); - - //effectClassName = "fancybox-animated fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-fx-" + effect; - effectClassName = "fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-animated fancybox-fx-" + effect; - - $slide.addClass(effectClassName).removeClass("fancybox-slide--current"); //.addClass(effectClassName); - - slide.$content.removeClass("fancybox-is-hidden"); - - // Force reflow - forceRedraw($slide); - - if (slide.type !== "image") { - slide.$content.hide().show(0); - } - - $.fancybox.animate( - $slide, - "fancybox-slide--current", - duration, - function () { - $slide.removeClass(effectClassName).css({ - transform: "", - opacity: "" - }); - - if (slide.pos === self.currPos) { - self.complete(); - } - }, - true - ); - }, - - // Check if we can and have to zoom from thumbnail - //================================================ - - getThumbPos: function (slide) { - var rez = false, - $thumb = slide.$thumb, - thumbPos, - btw, - brw, - bbw, - blw; - - if (!$thumb || !inViewport($thumb[0])) { - return false; - } - - thumbPos = $.fancybox.getTranslate($thumb); - - btw = parseFloat($thumb.css("border-top-width") || 0); - brw = parseFloat($thumb.css("border-right-width") || 0); - bbw = parseFloat($thumb.css("border-bottom-width") || 0); - blw = parseFloat($thumb.css("border-left-width") || 0); - - rez = { - top: thumbPos.top + btw, - left: thumbPos.left + blw, - width: thumbPos.width - brw - blw, - height: thumbPos.height - btw - bbw, - scaleX: 1, - scaleY: 1 - }; - - return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false; - }, - - // Final adjustments after current gallery item is moved to position - // and it`s content is loaded - // ================================================================== - - complete: function () { - var self = this, - current = self.current, - slides = {}, - $el; - - if (self.isMoved() || !current.isLoaded) { - return; - } - - if (!current.isComplete) { - current.isComplete = true; - - current.$slide.siblings().trigger("onReset"); - - self.preload("inline"); - - // Trigger any CSS transiton inside the slide - forceRedraw(current.$slide); - - current.$slide.addClass("fancybox-slide--complete"); - - // Remove unnecessary slides - $.each(self.slides, function (key, slide) { - if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) { - slides[slide.pos] = slide; - } else if (slide) { - $.fancybox.stop(slide.$slide); - - slide.$slide.off().remove(); - } - }); - - self.slides = slides; - } - - self.isAnimating = false; - - self.updateCursor(); - - self.trigger("afterShow"); - - // Autoplay first html5 video/audio - if (!!current.opts.video.autoStart) { - current.$slide - .find("video,audio") - .filter(":visible:first") - .trigger("play") - .one("ended", function () { - if (Document.exitFullscreen) { - Document.exitFullscreen(); - } else if (this.webkitExitFullscreen) { - this.webkitExitFullscreen(); - } - - self.next(); - }); - } - - // Try to focus on the first focusable element - if (current.opts.autoFocus && current.contentType === "html") { - // Look for the first input with autofocus attribute - $el = current.$content.find("input[autofocus]:enabled:visible:first"); - - if ($el.length) { - $el.trigger("focus"); - } else { - self.focus(null, true); - } - } - - // Avoid jumping - current.$slide.scrollTop(0).scrollLeft(0); - }, - - // Preload next and previous slides - // ================================ - - preload: function (type) { - var self = this, - prev, - next; - - if (self.group.length < 2) { - return; - } - - next = self.slides[self.currPos + 1]; - prev = self.slides[self.currPos - 1]; - - if (prev && prev.type === type) { - self.loadSlide(prev); - } - - if (next && next.type === type) { - self.loadSlide(next); - } - }, - - // Try to find and focus on the first focusable element - // ==================================================== - - focus: function (e, firstRun) { - var self = this, - focusableStr = [ - "a[href]", - "area[href]", - 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', - "select:not([disabled]):not([aria-hidden])", - "textarea:not([disabled]):not([aria-hidden])", - "button:not([disabled]):not([aria-hidden])", - "iframe", - "object", - "embed", - "video", - "audio", - "[contenteditable]", - '[tabindex]:not([tabindex^="-"])' - ].join(","), - focusableItems, - focusedItemIndex; - - if (self.isClosing) { - return; - } - - if (e || !self.current || !self.current.isComplete) { - // Focus on any element inside fancybox - focusableItems = self.$refs.container.find("*:visible"); - } else { - // Focus inside current slide - focusableItems = self.current.$slide.find("*:visible" + (firstRun ? ":not(.fancybox-close-small)" : "")); - } - - focusableItems = focusableItems.filter(focusableStr).filter(function () { - return $(this).css("visibility") !== "hidden" && !$(this).hasClass("disabled"); - }); - - if (focusableItems.length) { - focusedItemIndex = focusableItems.index(document.activeElement); - - if (e && e.shiftKey) { - // Back tab - if (focusedItemIndex < 0 || focusedItemIndex == 0) { - e.preventDefault(); - - focusableItems.eq(focusableItems.length - 1).trigger("focus"); - } - } else { - // Outside or Forward tab - if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) { - if (e) { - e.preventDefault(); - } - - focusableItems.eq(0).trigger("focus"); - } - } - } else { - self.$refs.container.trigger("focus"); - } - }, - - // Activates current instance - brings container to the front and enables keyboard, - // notifies other instances about deactivating - // ================================================================================= - - activate: function () { - var self = this; - - // Deactivate all instances - $(".fancybox-container").each(function () { - var instance = $(this).data("FancyBox"); - - // Skip self and closing instances - if (instance && instance.id !== self.id && !instance.isClosing) { - instance.trigger("onDeactivate"); - - instance.removeEvents(); - - instance.isVisible = false; - } - }); - - self.isVisible = true; - - if (self.current || self.isIdle) { - self.update(); - - self.updateControls(); - } - - self.trigger("onActivate"); - - self.addEvents(); - }, - - // Start closing procedure - // This will start "zoom-out" animation if needed and clean everything up afterwards - // ================================================================================= - - close: function (e, d) { - var self = this, - current = self.current, - effect, - duration, - $content, - domRect, - opacity, - start, - end; - - var done = function () { - self.cleanUp(e); - }; - - if (self.isClosing) { - return false; - } - - self.isClosing = true; - - // If beforeClose callback prevents closing, make sure content is centered - if (self.trigger("beforeClose", e) === false) { - self.isClosing = false; - - requestAFrame(function () { - self.update(); - }); - - return false; - } - - // Remove all events - // If there are multiple instances, they will be set again by "activate" method - self.removeEvents(); - - $content = current.$content; - effect = current.opts.animationEffect; - duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0; - - current.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"); - - if (e !== true) { - $.fancybox.stop(current.$slide); - } else { - effect = false; - } - - // Remove other slides - current.$slide - .siblings() - .trigger("onReset") - .remove(); - - // Trigger animations - if (duration) { - self.$refs.container - .removeClass("fancybox-is-open") - .addClass("fancybox-is-closing") - .css("transition-duration", duration + "ms"); - } - - // Clean up - self.hideLoading(current); - - self.hideControls(true); - - self.updateCursor(); - - // Check if possible to zoom-out - if ( - effect === "zoom" && - !($content && duration && current.type === "image" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current))) - ) { - effect = "fade"; - } - - if (effect === "zoom") { - $.fancybox.stop($content); - - domRect = $.fancybox.getTranslate($content); - - start = { - top: domRect.top, - left: domRect.left, - scaleX: domRect.width / end.width, - scaleY: domRect.height / end.height, - width: end.width, - height: end.height - }; - - // Check if we need to animate opacity - opacity = current.opts.zoomOpacity; - - if (opacity == "auto") { - opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1; - } - - if (opacity) { - end.opacity = 0; - } - - $.fancybox.setTranslate($content, start); - - forceRedraw($content); - - $.fancybox.animate($content, end, duration, done); - - return true; - } - - if (effect && duration) { - $.fancybox.animate( - current.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"), - "fancybox-animated fancybox-fx-" + effect, - duration, - done - ); - } else { - // If skip animation - if (e === true) { - setTimeout(done, duration); - } else { - done(); - } - } - - return true; - }, - - // Final adjustments after removing the instance - // ============================================= - - cleanUp: function (e) { - var self = this, - instance, - $focus = self.current.opts.$orig, - x, - y; - - self.current.$slide.trigger("onReset"); - - self.$refs.container.empty().remove(); - - self.trigger("afterClose", e); - - // Place back focus - if (!!self.current.opts.backFocus) { - if (!$focus || !$focus.length || !$focus.is(":visible")) { - $focus = self.$trigger; - } - - if ($focus && $focus.length) { - x = window.scrollX; - y = window.scrollY; - - $focus.trigger("focus"); - - $("html, body") - .scrollTop(y) - .scrollLeft(x); - } - } - - self.current = null; - - // Check if there are other instances - instance = $.fancybox.getInstance(); - - if (instance) { - instance.activate(); - } else { - $("body").removeClass("fancybox-active compensate-for-scrollbar"); - - $("#fancybox-style-noscroll").remove(); - } - }, - - // Call callback and trigger an event - // ================================== - - trigger: function (name, slide) { - var args = Array.prototype.slice.call(arguments, 1), - self = this, - obj = slide && slide.opts ? slide : self.current, - rez; - - if (obj) { - args.unshift(obj); - } else { - obj = self; - } - - args.unshift(self); - - if ($.isFunction(obj.opts[name])) { - rez = obj.opts[name].apply(obj, args); - } - - if (rez === false) { - return rez; - } - - if (name === "afterClose" || !self.$refs) { - $D.trigger(name + ".fb", args); - } else { - self.$refs.container.trigger(name + ".fb", args); - } - }, - - // Update infobar values, navigation button states and reveal caption - // ================================================================== - - updateControls: function () { - var self = this, - current = self.current, - index = current.index, - $container = self.$refs.container, - $caption = self.$refs.caption, - caption = current.opts.caption; - - // Recalculate content dimensions - current.$slide.trigger("refresh"); - - // Set caption - if (caption && caption.length) { - self.$caption = $caption; - - $caption - .children() - .eq(0) - .html(caption); - } else { - self.$caption = null; - } - - if (!self.hasHiddenControls && !self.isIdle) { - self.showControls(); - } - - // Update info and navigation elements - $container.find("[data-fancybox-count]").html(self.group.length); - $container.find("[data-fancybox-index]").html(index + 1); - - $container.find("[data-fancybox-prev]").prop("disabled", !current.opts.loop && index <= 0); - $container.find("[data-fancybox-next]").prop("disabled", !current.opts.loop && index >= self.group.length - 1); - - if (current.type === "image") { - // Re-enable buttons; update download button source - $container - .find("[data-fancybox-zoom]") - .show() - .end() - .find("[data-fancybox-download]") - .attr("href", current.opts.image.src || current.src) - .show(); - } else if (current.opts.toolbar) { - $container.find("[data-fancybox-download],[data-fancybox-zoom]").hide(); - } - - // Make sure focus is not on disabled button/element - if ($(document.activeElement).is(":hidden,[disabled]")) { - self.$refs.container.trigger("focus"); - } - }, - - // Hide toolbar and caption - // ======================== - - hideControls: function (andCaption) { - var self = this, - arr = ["infobar", "toolbar", "nav"]; - - if (andCaption || !self.current.opts.preventCaptionOverlap) { - arr.push("caption"); - } - - this.$refs.container.removeClass( - arr - .map(function (i) { - return "fancybox-show-" + i; - }) - .join(" ") - ); - - this.hasHiddenControls = true; - }, - - showControls: function () { - var self = this, - opts = self.current ? self.current.opts : self.opts, - $container = self.$refs.container; - - self.hasHiddenControls = false; - self.idleSecondsCounter = 0; - - $container - .toggleClass("fancybox-show-toolbar", !!(opts.toolbar && opts.buttons)) - .toggleClass("fancybox-show-infobar", !!(opts.infobar && self.group.length > 1)) - .toggleClass("fancybox-show-caption", !!self.$caption) - .toggleClass("fancybox-show-nav", !!(opts.arrows && self.group.length > 1)) - .toggleClass("fancybox-is-modal", !!opts.modal); - }, - - // Toggle toolbar and caption - // ========================== - - toggleControls: function () { - if (this.hasHiddenControls) { - this.showControls(); - } else { - this.hideControls(); - } - } - }); - - $.fancybox = { - version: "3.5.7", - defaults: defaults, - - // Get current instance and execute a command. - // - // Examples of usage: - // - // $instance = $.fancybox.getInstance(); - // $.fancybox.getInstance().jumpTo( 1 ); - // $.fancybox.getInstance( 'jumpTo', 1 ); - // $.fancybox.getInstance( function() { - // console.info( this.currIndex ); - // }); - // ====================================================== - - getInstance: function (command) { - var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"), - args = Array.prototype.slice.call(arguments, 1); - - if (instance instanceof FancyBox) { - if ($.type(command) === "string") { - instance[command].apply(instance, args); - } else if ($.type(command) === "function") { - command.apply(instance, args); - } - - return instance; - } - - return false; - }, - - // Create new instance - // =================== - - open: function (items, opts, index) { - return new FancyBox(items, opts, index); - }, - - // Close current or all instances - // ============================== - - close: function (all) { - var instance = this.getInstance(); - - if (instance) { - instance.close(); - - // Try to find and close next instance - if (all === true) { - this.close(all); - } - } - }, - - // Close all instances and unbind all events - // ========================================= - - destroy: function () { - this.close(true); - - $D.add("body").off("click.fb-start", "**"); - }, - - // Try to detect mobile devices - // ============================ - - isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), - - // Detect if 'translate3d' support is available - // ============================================ - - use3d: (function () { - var div = document.createElement("div"); - - return ( - window.getComputedStyle && - window.getComputedStyle(div) && - window.getComputedStyle(div).getPropertyValue("transform") && - !(document.documentMode && document.documentMode < 11) - ); - })(), - - // Helper function to get current visual state of an element - // returns array[ top, left, horizontal-scale, vertical-scale, opacity ] - // ===================================================================== - - getTranslate: function ($el) { - var domRect; - - if (!$el || !$el.length) { - return false; - } - - domRect = $el[0].getBoundingClientRect(); - - return { - top: domRect.top || 0, - left: domRect.left || 0, - width: domRect.width, - height: domRect.height, - opacity: parseFloat($el.css("opacity")) - }; - }, - - // Shortcut for setting "translate3d" properties for element - // Can set be used to set opacity, too - // ======================================================== - - setTranslate: function ($el, props) { - var str = "", - css = {}; - - if (!$el || !props) { - return; - } - - if (props.left !== undefined || props.top !== undefined) { - str = - (props.left === undefined ? $el.position().left : props.left) + - "px, " + - (props.top === undefined ? $el.position().top : props.top) + - "px"; - - if (this.use3d) { - str = "translate3d(" + str + ", 0px)"; - } else { - str = "translate(" + str + ")"; - } - } - - if (props.scaleX !== undefined && props.scaleY !== undefined) { - str += " scale(" + props.scaleX + ", " + props.scaleY + ")"; - } else if (props.scaleX !== undefined) { - str += " scaleX(" + props.scaleX + ")"; - } - - if (str.length) { - css.transform = str; - } - - if (props.opacity !== undefined) { - css.opacity = props.opacity; - } - - if (props.width !== undefined) { - css.width = props.width; - } - - if (props.height !== undefined) { - css.height = props.height; - } - - return $el.css(css); - }, - - // Simple CSS transition handler - // ============================= - - animate: function ($el, to, duration, callback, leaveAnimationName) { - var self = this, - from; - - if ($.isFunction(duration)) { - callback = duration; - duration = null; - } - - self.stop($el); - - from = self.getTranslate($el); - - $el.on(transitionEnd, function (e) { - // Skip events from child elements and z-index change - if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == "z-index")) { - return; - } - - self.stop($el); - - if ($.isNumeric(duration)) { - $el.css("transition-duration", ""); - } - - if ($.isPlainObject(to)) { - if (to.scaleX !== undefined && to.scaleY !== undefined) { - self.setTranslate($el, { - top: to.top, - left: to.left, - width: from.width * to.scaleX, - height: from.height * to.scaleY, - scaleX: 1, - scaleY: 1 - }); - } - } else if (leaveAnimationName !== true) { - $el.removeClass(to); - } - - if ($.isFunction(callback)) { - callback(e); - } - }); - - if ($.isNumeric(duration)) { - $el.css("transition-duration", duration + "ms"); - } - - // Start animation by changing CSS properties or class name - if ($.isPlainObject(to)) { - if (to.scaleX !== undefined && to.scaleY !== undefined) { - delete to.width; - delete to.height; - - if ($el.parent().hasClass("fancybox-slide--image")) { - $el.parent().addClass("fancybox-is-scaling"); - } - } - - $.fancybox.setTranslate($el, to); - } else { - $el.addClass(to); - } - - // Make sure that `transitionend` callback gets fired - $el.data( - "timer", - setTimeout(function () { - $el.trigger(transitionEnd); - }, duration + 33) - ); - }, - - stop: function ($el, callCallback) { - if ($el && $el.length) { - clearTimeout($el.data("timer")); - - if (callCallback) { - $el.trigger(transitionEnd); - } - - $el.off(transitionEnd).css("transition-duration", ""); - - $el.parent().removeClass("fancybox-is-scaling"); - } - } - }; - - // Default click handler for "fancyboxed" links - // ============================================ - - function _run(e, opts) { - var items = [], - index = 0, - $target, - value, - instance; - - // Avoid opening multiple times - if (e && e.isDefaultPrevented()) { - return; - } - - e.preventDefault(); - - opts = opts || {}; - - if (e && e.data) { - opts = mergeOpts(e.data.options, opts); - } - - $target = opts.$target || $(e.currentTarget).trigger("blur"); - instance = $.fancybox.getInstance(); - - if (instance && instance.$trigger && instance.$trigger.is($target)) { - return; - } - - if (opts.selector) { - items = $(opts.selector); - } else { - // Get all related items and find index for clicked one - value = $target.attr("data-fancybox") || ""; - - if (value) { - items = e.data ? e.data.items : []; - items = items.length ? items.filter('[data-fancybox="' + value + '"]') : $('[data-fancybox="' + value + '"]'); - } else { - items = [$target]; - } - } - - index = $(items).index($target); - - // Sometimes current item can not be found - if (index < 0) { - index = 0; - } - - instance = $.fancybox.open(items, opts, index); - - // Save last active element - instance.$trigger = $target; - } - - // Create a jQuery plugin - // ====================== - - $.fn.fancybox = function (options) { - var selector; - - options = options || {}; - selector = options.selector || false; - - if (selector) { - // Use body element instead of document so it executes first - $("body") - .off("click.fb-start", selector) - .on("click.fb-start", selector, { - options: options - }, _run); - } else { - this.off("click.fb-start").on( - "click.fb-start", { - items: this, - options: options - }, - _run - ); - } - - return this; - }; - - // Self initializing plugin for all elements having `data-fancybox` attribute - // ========================================================================== - - $D.on("click.fb-start", "[data-fancybox]", _run); - - // Enable "trigger elements" - // ========================= - - $D.on("click.fb-start", "[data-fancybox-trigger]", function (e) { - $('[data-fancybox="' + $(this).attr("data-fancybox-trigger") + '"]') - .eq($(this).attr("data-fancybox-index") || 0) - .trigger("click.fb-start", { - $trigger: $(this) - }); - }); - - // Track focus event for better accessibility styling - // ================================================== - (function () { - var buttonStr = ".fancybox-button", - focusStr = "fancybox-focus", - $pressed = null; - - $D.on("mousedown mouseup focus blur", buttonStr, function (e) { - switch (e.type) { - case "mousedown": - $pressed = $(this); - break; - case "mouseup": - $pressed = null; - break; - case "focusin": - $(buttonStr).removeClass(focusStr); - - if (!$(this).is($pressed) && !$(this).is("[disabled]")) { - $(this).addClass(focusStr); - } - break; - case "focusout": - $(buttonStr).removeClass(focusStr); - break; - } - }); - })(); -})(window, document, jQuery); -// ========================================================================== -// -// Media -// Adds additional media type support -// -// ========================================================================== -(function ($) { - "use strict"; - - // Object containing properties for each media type - var defaults = { - youtube: { - matcher: /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i, - params: { - autoplay: 1, - autohide: 1, - fs: 1, - rel: 0, - hd: 1, - wmode: "transparent", - enablejsapi: 1, - html5: 1 - }, - paramPlace: 8, - type: "iframe", - url: "https://www.youtube-nocookie.com/embed/$4", - thumb: "https://img.youtube.com/vi/$4/hqdefault.jpg" - }, - - vimeo: { - matcher: /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/, - params: { - autoplay: 1, - hd: 1, - show_title: 1, - show_byline: 1, - show_portrait: 0, - fullscreen: 1 - }, - paramPlace: 3, - type: "iframe", - url: "//player.vimeo.com/video/$2" - }, - - instagram: { - matcher: /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, - type: "image", - url: "//$1/p/$2/media/?size=l" - }, - - // Examples: - // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 - // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z - // https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en - // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572 - gmap_place: { - matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i, - type: "iframe", - url: function (rez) { - return ( - "//maps.google." + - rez[2] + - "/?ll=" + - (rez[9] ? rez[9] + "&z=" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\//, "&") : "") : rez[12] + "").replace(/\?/, "&") + - "&output=" + - (rez[12] && rez[12].indexOf("layer=c") > 0 ? "svembed" : "embed") - ); - } - }, - - // Examples: - // https://www.google.com/maps/search/Empire+State+Building/ - // https://www.google.com/maps/search/?api=1&query=centurylink+field - // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 - gmap_search: { - matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i, - type: "iframe", - url: function (rez) { - return "//maps.google." + rez[2] + "/maps?q=" + rez[5].replace("query=", "q=").replace("api=1", "") + "&output=embed"; - } - } - }; - - // Formats matching url to final form - var format = function (url, rez, params) { - if (!url) { - return; - } - - params = params || ""; - - if ($.type(params) === "object") { - params = $.param(params, true); - } - - $.each(rez, function (key, value) { - url = url.replace("$" + key, value || ""); - }); - - if (params.length) { - url += (url.indexOf("?") > 0 ? "&" : "?") + params; - } - - return url; - }; - - $(document).on("objectNeedsType.fb", function (e, instance, item) { - var url = item.src || "", - type = false, - media, - thumb, - rez, - params, - urlParams, - paramObj, - provider; - - media = $.extend(true, {}, defaults, item.opts.media); - - // Look for any matching media type - $.each(media, function (providerName, providerOpts) { - rez = url.match(providerOpts.matcher); - - if (!rez) { - return; - } - - type = providerOpts.type; - provider = providerName; - paramObj = {}; - - if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) { - urlParams = rez[providerOpts.paramPlace]; - - if (urlParams[0] == "?") { - urlParams = urlParams.substring(1); - } - - urlParams = urlParams.split("&"); - - for (var m = 0; m < urlParams.length; ++m) { - var p = urlParams[m].split("=", 2); - - if (p.length == 2) { - paramObj[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); - } - } - } - - params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj); - - url = - $.type(providerOpts.url) === "function" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params); - - thumb = - $.type(providerOpts.thumb) === "function" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez); - - if (providerName === "youtube") { - url = url.replace(/&t=((\d+)m)?(\d+)s/, function (match, p1, m, s) { - return "&start=" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10)); - }); - } else if (providerName === "vimeo") { - url = url.replace("&%23", "#"); - } - - return false; - }); - - // If it is found, then change content type and update the url - - if (type) { - if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) { - item.opts.thumb = thumb; - } - - if (type === "iframe") { - item.opts = $.extend(true, item.opts, { - iframe: { - preload: false, - attr: { - scrolling: "no" - } - } - }); - } - - $.extend(item, { - type: type, - src: url, - origSrc: item.src, - contentSource: provider, - contentType: type === "image" ? "image" : provider == "gmap_place" || provider == "gmap_search" ? "map" : "video" - }); - } else if (url) { - item.type = item.opts.defaultType; - } - }); - - // Load YouTube/Video API on request to detect when video finished playing - var VideoAPILoader = { - youtube: { - src: "https://www.youtube.com/iframe_api", - class: "YT", - loading: false, - loaded: false - }, - - vimeo: { - src: "https://player.vimeo.com/api/player.js", - class: "Vimeo", - loading: false, - loaded: false - }, - - load: function (vendor) { - var _this = this, - script; - - if (this[vendor].loaded) { - setTimeout(function () { - _this.done(vendor); - }); - return; - } - - if (this[vendor].loading) { - return; - } - - this[vendor].loading = true; - - script = document.createElement("script"); - script.type = "text/javascript"; - script.src = this[vendor].src; - - if (vendor === "youtube") { - window.onYouTubeIframeAPIReady = function () { - _this[vendor].loaded = true; - _this.done(vendor); - }; - } else { - script.onload = function () { - _this[vendor].loaded = true; - _this.done(vendor); - }; - } - - document.body.appendChild(script); - }, - done: function (vendor) { - var instance, $el, player; - - if (vendor === "youtube") { - delete window.onYouTubeIframeAPIReady; - } - - instance = $.fancybox.getInstance(); - - if (instance) { - $el = instance.current.$content.find("iframe"); - - if (vendor === "youtube" && YT !== undefined && YT) { - player = new YT.Player($el.attr("id"), { - events: { - onStateChange: function (e) { - if (e.data == 0) { - instance.next(); - } - } - } - }); - } else if (vendor === "vimeo" && Vimeo !== undefined && Vimeo) { - player = new Vimeo.Player($el); - - player.on("ended", function () { - instance.next(); - }); - } - } - } - }; - - $(document).on({ - "afterShow.fb": function (e, instance, current) { - if (instance.group.length > 1 && (current.contentSource === "youtube" || current.contentSource === "vimeo")) { - VideoAPILoader.load(current.contentSource); - } - } - }); -})(jQuery); -// ========================================================================== -// -// Guestures -// Adds touch guestures, handles click and tap events -// -// ========================================================================== -(function (window, document, $) { - "use strict"; - - var requestAFrame = (function () { - return ( - window.requestAnimationFrame || - window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - // if all else fails, use setTimeout - function (callback) { - return window.setTimeout(callback, 1000 / 60); - } - ); - })(); - - var cancelAFrame = (function () { - return ( - window.cancelAnimationFrame || - window.webkitCancelAnimationFrame || - window.mozCancelAnimationFrame || - window.oCancelAnimationFrame || - function (id) { - window.clearTimeout(id); - } - ); - })(); - - var getPointerXY = function (e) { - var result = []; - - e = e.originalEvent || e || window.e; - e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e]; - - for (var key in e) { - if (e[key].pageX) { - result.push({ - x: e[key].pageX, - y: e[key].pageY - }); - } else if (e[key].clientX) { - result.push({ - x: e[key].clientX, - y: e[key].clientY - }); - } - } - - return result; - }; - - var distance = function (point2, point1, what) { - if (!point1 || !point2) { - return 0; - } - - if (what === "x") { - return point2.x - point1.x; - } else if (what === "y") { - return point2.y - point1.y; - } - - return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2)); - }; - - var isClickable = function ($el) { - if ( - $el.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe') || - $.isFunction($el.get(0).onclick) || - $el.data("selectable") - ) { - return true; - } - - // Check for attributes like data-fancybox-next or data-fancybox-close - for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) { - if (atts[i].nodeName.substr(0, 14) === "data-fancybox-") { - return true; - } - } - - return false; - }; - - var hasScrollbars = function (el) { - var overflowY = window.getComputedStyle(el)["overflow-y"], - overflowX = window.getComputedStyle(el)["overflow-x"], - vertical = (overflowY === "scroll" || overflowY === "auto") && el.scrollHeight > el.clientHeight, - horizontal = (overflowX === "scroll" || overflowX === "auto") && el.scrollWidth > el.clientWidth; - - return vertical || horizontal; - }; - - var isScrollable = function ($el) { - var rez = false; - - while (true) { - rez = hasScrollbars($el.get(0)); - - if (rez) { - break; - } - - $el = $el.parent(); - - if (!$el.length || $el.hasClass("fancybox-stage") || $el.is("body")) { - break; - } - } - - return rez; - }; - - var Guestures = function (instance) { - var self = this; - - self.instance = instance; - - self.$bg = instance.$refs.bg; - self.$stage = instance.$refs.stage; - self.$container = instance.$refs.container; - - self.destroy(); - - self.$container.on("touchstart.fb.touch mousedown.fb.touch", $.proxy(self, "ontouchstart")); - }; - - Guestures.prototype.destroy = function () { - var self = this; - - self.$container.off(".fb.touch"); - - $(document).off(".fb.touch"); - - if (self.requestId) { - cancelAFrame(self.requestId); - self.requestId = null; - } - - if (self.tapped) { - clearTimeout(self.tapped); - self.tapped = null; - } - }; - - Guestures.prototype.ontouchstart = function (e) { - var self = this, - $target = $(e.target), - instance = self.instance, - current = instance.current, - $slide = current.$slide, - $content = current.$content, - isTouchDevice = e.type == "touchstart"; - - // Do not respond to both (touch and mouse) events - if (isTouchDevice) { - self.$container.off("mousedown.fb.touch"); - } - - // Ignore right click - if (e.originalEvent && e.originalEvent.button == 2) { - return; - } - - // Ignore taping on links, buttons, input elements - if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) { - return; - } - // Ignore clicks on the scrollbar - if (!$target.is("img") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) { - return; - } - - // Ignore clicks while zooming or closing - if (!current || instance.isAnimating || current.$slide.hasClass("fancybox-animated")) { - e.stopPropagation(); - e.preventDefault(); - - return; - } - - self.realPoints = self.startPoints = getPointerXY(e); - - if (!self.startPoints.length) { - return; - } - - // Allow other scripts to catch touch event if "touch" is set to false - if (current.touch) { - e.stopPropagation(); - } - - self.startEvent = e; - - self.canTap = true; - self.$target = $target; - self.$content = $content; - self.opts = current.opts.touch; - - self.isPanning = false; - self.isSwiping = false; - self.isZooming = false; - self.isScrolling = false; - self.canPan = instance.canPan(); - - self.startTime = new Date().getTime(); - self.distanceX = self.distanceY = self.distance = 0; - - self.canvasWidth = Math.round($slide[0].clientWidth); - self.canvasHeight = Math.round($slide[0].clientHeight); - - self.contentLastPos = null; - self.contentStartPos = $.fancybox.getTranslate(self.$content) || { - top: 0, - left: 0 - }; - self.sliderStartPos = $.fancybox.getTranslate($slide); - - // Since position will be absolute, but we need to make it relative to the stage - self.stagePos = $.fancybox.getTranslate(instance.$refs.stage); - - self.sliderStartPos.top -= self.stagePos.top; - self.sliderStartPos.left -= self.stagePos.left; - - self.contentStartPos.top -= self.stagePos.top; - self.contentStartPos.left -= self.stagePos.left; - - $(document) - .off(".fb.touch") - .on(isTouchDevice ? "touchend.fb.touch touchcancel.fb.touch" : "mouseup.fb.touch mouseleave.fb.touch", $.proxy(self, "ontouchend")) - .on(isTouchDevice ? "touchmove.fb.touch" : "mousemove.fb.touch", $.proxy(self, "ontouchmove")); - - if ($.fancybox.isMobile) { - document.addEventListener("scroll", self.onscroll, true); - } - - // Skip if clicked outside the sliding area - if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) { - if ($target.is(".fancybox-image")) { - e.preventDefault(); - } - - if (!($.fancybox.isMobile && $target.parents(".fancybox-caption").length)) { - return; - } - } - - self.isScrollable = isScrollable($target) || isScrollable($target.parent()); - - // Check if element is scrollable and try to prevent default behavior (scrolling) - if (!($.fancybox.isMobile && self.isScrollable)) { - e.preventDefault(); - } - - // One finger or mouse click - swipe or pan an image - if (self.startPoints.length === 1 || current.hasError) { - if (self.canPan) { - $.fancybox.stop(self.$content); - - self.isPanning = true; - } else { - self.isSwiping = true; - } - - self.$container.addClass("fancybox-is-grabbing"); - } - - // Two fingers - zoom image - if (self.startPoints.length === 2 && current.type === "image" && (current.isLoaded || current.$ghost)) { - self.canTap = false; - self.isSwiping = false; - self.isPanning = false; - - self.isZooming = true; - - $.fancybox.stop(self.$content); - - self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft(); - self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop(); - - self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width; - self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height; - - self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]); - } - }; - - Guestures.prototype.onscroll = function (e) { - var self = this; - - self.isScrolling = true; - - document.removeEventListener("scroll", self.onscroll, true); - }; - - Guestures.prototype.ontouchmove = function (e) { - var self = this; - - // Make sure user has not released over iframe or disabled element - if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) { - self.ontouchend(e); - return; - } - - if (self.isScrolling) { - self.canTap = false; - return; - } - - self.newPoints = getPointerXY(e); - - if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) { - return; - } - - if (!(self.isSwiping && self.isSwiping === true)) { - e.preventDefault(); - } - - self.distanceX = distance(self.newPoints[0], self.startPoints[0], "x"); - self.distanceY = distance(self.newPoints[0], self.startPoints[0], "y"); - - self.distance = distance(self.newPoints[0], self.startPoints[0]); - - // Skip false ontouchmove events (Chrome) - if (self.distance > 0) { - if (self.isSwiping) { - self.onSwipe(e); - } else if (self.isPanning) { - self.onPan(); - } else if (self.isZooming) { - self.onZoom(); - } - } - }; - - Guestures.prototype.onSwipe = function (e) { - var self = this, - instance = self.instance, - swiping = self.isSwiping, - left = self.sliderStartPos.left || 0, - angle; - - // If direction is not yet determined - if (swiping === true) { - // We need at least 10px distance to correctly calculate an angle - if (Math.abs(self.distance) > 10) { - self.canTap = false; - - if (instance.group.length < 2 && self.opts.vertical) { - self.isSwiping = "y"; - } else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === "auto" && $(window).width() > 800)) { - self.isSwiping = "x"; - } else { - angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI); - - self.isSwiping = angle > 45 && angle < 135 ? "y" : "x"; - } - - if (self.isSwiping === "y" && $.fancybox.isMobile && self.isScrollable) { - self.isScrolling = true; - - return; - } - - instance.isDragging = self.isSwiping; - - // Reset points to avoid jumping, because we dropped first swipes to calculate the angle - self.startPoints = self.newPoints; - - $.each(instance.slides, function (index, slide) { - var slidePos, stagePos; - - $.fancybox.stop(slide.$slide); - - slidePos = $.fancybox.getTranslate(slide.$slide); - stagePos = $.fancybox.getTranslate(instance.$refs.stage); - - slide.$slide - .css({ - transform: "", - opacity: "", - "transition-duration": "" - }) - .removeClass("fancybox-animated") - .removeClass(function (index, className) { - return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" "); - }); - - if (slide.pos === instance.current.pos) { - self.sliderStartPos.top = slidePos.top - stagePos.top; - self.sliderStartPos.left = slidePos.left - stagePos.left; - } - - $.fancybox.setTranslate(slide.$slide, { - top: slidePos.top - stagePos.top, - left: slidePos.left - stagePos.left - }); - }); - - // Stop slideshow - if (instance.SlideShow && instance.SlideShow.isActive) { - instance.SlideShow.stop(); - } - } - - return; - } - - // Sticky edges - if (swiping == "x") { - if ( - self.distanceX > 0 && - (self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop)) - ) { - left = left + Math.pow(self.distanceX, 0.8); - } else if ( - self.distanceX < 0 && - (self.instance.group.length < 2 || - (self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop)) - ) { - left = left - Math.pow(-self.distanceX, 0.8); - } else { - left = left + self.distanceX; - } - } - - self.sliderLastPos = { - top: swiping == "x" ? 0 : self.sliderStartPos.top + self.distanceY, - left: left - }; - - if (self.requestId) { - cancelAFrame(self.requestId); - - self.requestId = null; - } - - self.requestId = requestAFrame(function () { - if (self.sliderLastPos) { - $.each(self.instance.slides, function (index, slide) { - var pos = slide.pos - self.instance.currPos; - - $.fancybox.setTranslate(slide.$slide, { - top: self.sliderLastPos.top, - left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter - }); - }); - - self.$container.addClass("fancybox-is-sliding"); - } - }); - }; - - Guestures.prototype.onPan = function () { - var self = this; - - // Prevent accidental movement (sometimes, when tapping casually, finger can move a bit) - if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) { - self.startPoints = self.newPoints; - return; - } - - self.canTap = false; - - self.contentLastPos = self.limitMovement(); - - if (self.requestId) { - cancelAFrame(self.requestId); - } - - self.requestId = requestAFrame(function () { - $.fancybox.setTranslate(self.$content, self.contentLastPos); - }); - }; - - // Make panning sticky to the edges - Guestures.prototype.limitMovement = function () { - var self = this; - - var canvasWidth = self.canvasWidth; - var canvasHeight = self.canvasHeight; - - var distanceX = self.distanceX; - var distanceY = self.distanceY; - - var contentStartPos = self.contentStartPos; - - var currentOffsetX = contentStartPos.left; - var currentOffsetY = contentStartPos.top; - - var currentWidth = contentStartPos.width; - var currentHeight = contentStartPos.height; - - var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY; - - if (currentWidth > canvasWidth) { - newOffsetX = currentOffsetX + distanceX; - } else { - newOffsetX = currentOffsetX; - } - - newOffsetY = currentOffsetY + distanceY; - - // Slow down proportionally to traveled distance - minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5); - minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5); - - maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5); - maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5); - - // -> - if (distanceX > 0 && newOffsetX > minTranslateX) { - newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0; - } - - // <- - if (distanceX < 0 && newOffsetX < maxTranslateX) { - newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0; - } - - // \/ - if (distanceY > 0 && newOffsetY > minTranslateY) { - newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0; - } - - // /\ - if (distanceY < 0 && newOffsetY < maxTranslateY) { - newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0; - } - - return { - top: newOffsetY, - left: newOffsetX - }; - }; - - Guestures.prototype.limitPosition = function (newOffsetX, newOffsetY, newWidth, newHeight) { - var self = this; - - var canvasWidth = self.canvasWidth; - var canvasHeight = self.canvasHeight; - - if (newWidth > canvasWidth) { - newOffsetX = newOffsetX > 0 ? 0 : newOffsetX; - newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX; - } else { - // Center horizontally - newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2); - } - - if (newHeight > canvasHeight) { - newOffsetY = newOffsetY > 0 ? 0 : newOffsetY; - newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY; - } else { - // Center vertically - newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2); - } - - return { - top: newOffsetY, - left: newOffsetX - }; - }; - - Guestures.prototype.onZoom = function () { - var self = this; - - // Calculate current distance between points to get pinch ratio and new width and height - var contentStartPos = self.contentStartPos; - - var currentWidth = contentStartPos.width; - var currentHeight = contentStartPos.height; - - var currentOffsetX = contentStartPos.left; - var currentOffsetY = contentStartPos.top; - - var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]); - - var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers; - - var newWidth = Math.floor(currentWidth * pinchRatio); - var newHeight = Math.floor(currentHeight * pinchRatio); - - // This is the translation due to pinch-zooming - var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX; - var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY; - - // Point between the two touches - var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft(); - var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop(); - - // And this is the translation due to translation of the centerpoint - // between the two fingers - var translateFromTranslatingX = centerPointEndX - self.centerPointStartX; - var translateFromTranslatingY = centerPointEndY - self.centerPointStartY; - - // The new offset is the old/current one plus the total translation - var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX); - var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY); - - var newPos = { - top: newOffsetY, - left: newOffsetX, - scaleX: pinchRatio, - scaleY: pinchRatio - }; - - self.canTap = false; - - self.newWidth = newWidth; - self.newHeight = newHeight; - - self.contentLastPos = newPos; - - if (self.requestId) { - cancelAFrame(self.requestId); - } - - self.requestId = requestAFrame(function () { - $.fancybox.setTranslate(self.$content, self.contentLastPos); - }); - }; - - Guestures.prototype.ontouchend = function (e) { - var self = this; - - var swiping = self.isSwiping; - var panning = self.isPanning; - var zooming = self.isZooming; - var scrolling = self.isScrolling; - - self.endPoints = getPointerXY(e); - self.dMs = Math.max(new Date().getTime() - self.startTime, 1); - - self.$container.removeClass("fancybox-is-grabbing"); - - $(document).off(".fb.touch"); - - document.removeEventListener("scroll", self.onscroll, true); - - if (self.requestId) { - cancelAFrame(self.requestId); - - self.requestId = null; - } - - self.isSwiping = false; - self.isPanning = false; - self.isZooming = false; - self.isScrolling = false; - - self.instance.isDragging = false; - - if (self.canTap) { - return self.onTap(e); - } - - self.speed = 100; - - // Speed in px/ms - self.velocityX = (self.distanceX / self.dMs) * 0.5; - self.velocityY = (self.distanceY / self.dMs) * 0.5; - - if (panning) { - self.endPanning(); - } else if (zooming) { - self.endZooming(); - } else { - self.endSwiping(swiping, scrolling); - } - - return; - }; - - Guestures.prototype.endSwiping = function (swiping, scrolling) { - var self = this, - ret = false, - len = self.instance.group.length, - distanceX = Math.abs(self.distanceX), - canAdvance = swiping == "x" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50), - speedX = 300; - - self.sliderLastPos = null; - - // Close if swiped vertically / navigate if horizontally - if (swiping == "y" && !scrolling && Math.abs(self.distanceY) > 50) { - // Continue vertical movement - $.fancybox.animate( - self.instance.current.$slide, { - top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150, - opacity: 0 - }, - 200 - ); - ret = self.instance.close(true, 250); - } else if (canAdvance && self.distanceX > 0) { - ret = self.instance.previous(speedX); - } else if (canAdvance && self.distanceX < 0) { - ret = self.instance.next(speedX); - } - - if (ret === false && (swiping == "x" || swiping == "y")) { - self.instance.centerSlide(200); - } - - self.$container.removeClass("fancybox-is-sliding"); - }; - - // Limit panning from edges - // ======================== - Guestures.prototype.endPanning = function () { - var self = this, - newOffsetX, - newOffsetY, - newPos; - - if (!self.contentLastPos) { - return; - } - - if (self.opts.momentum === false || self.dMs > 350) { - newOffsetX = self.contentLastPos.left; - newOffsetY = self.contentLastPos.top; - } else { - // Continue movement - newOffsetX = self.contentLastPos.left + self.velocityX * 500; - newOffsetY = self.contentLastPos.top + self.velocityY * 500; - } - - newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height); - - newPos.width = self.contentStartPos.width; - newPos.height = self.contentStartPos.height; - - $.fancybox.animate(self.$content, newPos, 366); - }; - - Guestures.prototype.endZooming = function () { - var self = this; - - var current = self.instance.current; - - var newOffsetX, newOffsetY, newPos, reset; - - var newWidth = self.newWidth; - var newHeight = self.newHeight; - - if (!self.contentLastPos) { - return; - } - - newOffsetX = self.contentLastPos.left; - newOffsetY = self.contentLastPos.top; - - reset = { - top: newOffsetY, - left: newOffsetX, - width: newWidth, - height: newHeight, - scaleX: 1, - scaleY: 1 - }; - - // Reset scalex/scaleY values; this helps for perfomance and does not break animation - $.fancybox.setTranslate(self.$content, reset); - - if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) { - self.instance.scaleToFit(150); - } else if (newWidth > current.width || newHeight > current.height) { - self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150); - } else { - newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight); - - $.fancybox.animate(self.$content, newPos, 150); - } - }; - - Guestures.prototype.onTap = function (e) { - var self = this; - var $target = $(e.target); - - var instance = self.instance; - var current = instance.current; - - var endPoints = (e && getPointerXY(e)) || self.startPoints; - - var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0; - var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0; - - var where; - - var process = function (prefix) { - var action = current.opts[prefix]; - - if ($.isFunction(action)) { - action = action.apply(instance, [current, e]); - } - - if (!action) { - return; - } - - switch (action) { - case "close": - instance.close(self.startEvent); - - break; - - case "toggleControls": - instance.toggleControls(); - - break; - - case "next": - instance.next(); - - break; - - case "nextOrClose": - if (instance.group.length > 1) { - instance.next(); - } else { - instance.close(self.startEvent); - } - - break; - - case "zoom": - if (current.type == "image" && (current.isLoaded || current.$ghost)) { - if (instance.canPan()) { - instance.scaleToFit(); - } else if (instance.isScaledDown()) { - instance.scaleToActual(tapX, tapY); - } else if (instance.group.length < 2) { - instance.close(self.startEvent); - } - } - - break; - } - }; - - // Ignore right click - if (e.originalEvent && e.originalEvent.button == 2) { - return; - } - - // Skip if clicked on the scrollbar - if (!$target.is("img") && tapX > $target[0].clientWidth + $target.offset().left) { - return; - } - - // Check where is clicked - if ($target.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container")) { - where = "Outside"; - } else if ($target.is(".fancybox-slide")) { - where = "Slide"; - } else if ( - instance.current.$content && - instance.current.$content - .find($target) - .addBack() - .filter($target).length - ) { - where = "Content"; - } else { - return; - } - - // Check if this is a double tap - if (self.tapped) { - // Stop previously created single tap - clearTimeout(self.tapped); - self.tapped = null; - - // Skip if distance between taps is too big - if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) { - return this; - } - - // OK, now we assume that this is a double-tap - process("dblclick" + where); - } else { - // Single tap will be processed if user has not clicked second time within 300ms - // or there is no need to wait for double-tap - self.tapX = tapX; - self.tapY = tapY; - - if (current.opts["dblclick" + where] && current.opts["dblclick" + where] !== current.opts["click" + where]) { - self.tapped = setTimeout(function () { - self.tapped = null; - - if (!instance.isAnimating) { - process("click" + where); - } - }, 500); - } else { - process("click" + where); - } - } - - return this; - }; - - $(document) - .on("onActivate.fb", function (e, instance) { - if (instance && !instance.Guestures) { - instance.Guestures = new Guestures(instance); - } - }) - .on("beforeClose.fb", function (e, instance) { - if (instance && instance.Guestures) { - instance.Guestures.destroy(); - } - }); -})(window, document, jQuery); -// ========================================================================== -// -// SlideShow -// Enables slideshow functionality -// -// Example of usage: -// $.fancybox.getInstance().SlideShow.start() -// -// ========================================================================== -(function (document, $) { - "use strict"; - - $.extend(true, $.fancybox.defaults, { - btnTpl: { - slideShow: '" - }, - slideShow: { - autoStart: false, - speed: 3000, - progress: true - } - }); - - var SlideShow = function (instance) { - this.instance = instance; - this.init(); - }; - - $.extend(SlideShow.prototype, { - timer: null, - isActive: false, - $button: null, - - init: function () { - var self = this, - instance = self.instance, - opts = instance.group[instance.currIndex].opts.slideShow; - - self.$button = instance.$refs.toolbar.find("[data-fancybox-play]").on("click", function () { - self.toggle(); - }); - - if (instance.group.length < 2 || !opts) { - self.$button.hide(); - } else if (opts.progress) { - self.$progress = $('
').appendTo(instance.$refs.inner); - } - }, - - set: function (force) { - var self = this, - instance = self.instance, - current = instance.current; - - // Check if reached last element - if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) { - if (self.isActive && current.contentType !== "video") { - if (self.$progress) { - $.fancybox.animate(self.$progress.show(), { - scaleX: 1 - }, current.opts.slideShow.speed); - } - - self.timer = setTimeout(function () { - if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) { - instance.jumpTo(0); - } else { - instance.next(); - } - }, current.opts.slideShow.speed); - } - } else { - self.stop(); - instance.idleSecondsCounter = 0; - instance.showControls(); - } - }, - - clear: function () { - var self = this; - - clearTimeout(self.timer); - - self.timer = null; - - if (self.$progress) { - self.$progress.removeAttr("style").hide(); - } - }, - - start: function () { - var self = this, - current = self.instance.current; - - if (current) { - self.$button - .attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP) - .removeClass("fancybox-button--play") - .addClass("fancybox-button--pause"); - - self.isActive = true; - - if (current.isComplete) { - self.set(true); - } - - self.instance.trigger("onSlideShowChange", true); - } - }, - - stop: function () { - var self = this, - current = self.instance.current; - - self.clear(); - - self.$button - .attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START) - .removeClass("fancybox-button--pause") - .addClass("fancybox-button--play"); - - self.isActive = false; - - self.instance.trigger("onSlideShowChange", false); - - if (self.$progress) { - self.$progress.removeAttr("style").hide(); - } - }, - - toggle: function () { - var self = this; - - if (self.isActive) { - self.stop(); - } else { - self.start(); - } - } - }); - - $(document).on({ - "onInit.fb": function (e, instance) { - if (instance && !instance.SlideShow) { - instance.SlideShow = new SlideShow(instance); - } - }, - - "beforeShow.fb": function (e, instance, current, firstRun) { - var SlideShow = instance && instance.SlideShow; - - if (firstRun) { - if (SlideShow && current.opts.slideShow.autoStart) { - SlideShow.start(); - } - } else if (SlideShow && SlideShow.isActive) { - SlideShow.clear(); - } - }, - - "afterShow.fb": function (e, instance, current) { - var SlideShow = instance && instance.SlideShow; - - if (SlideShow && SlideShow.isActive) { - SlideShow.set(); - } - }, - - "afterKeydown.fb": function (e, instance, current, keypress, keycode) { - var SlideShow = instance && instance.SlideShow; - - // "P" or Spacebar - if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is("button,a,input")) { - keypress.preventDefault(); - - SlideShow.toggle(); - } - }, - - "beforeClose.fb onDeactivate.fb": function (e, instance) { - var SlideShow = instance && instance.SlideShow; - - if (SlideShow) { - SlideShow.stop(); - } - } - }); - - // Page Visibility API to pause slideshow when window is not active - $(document).on("visibilitychange", function () { - var instance = $.fancybox.getInstance(), - SlideShow = instance && instance.SlideShow; - - if (SlideShow && SlideShow.isActive) { - if (document.hidden) { - SlideShow.clear(); - } else { - SlideShow.set(); - } - } - }); -})(document, jQuery); -// ========================================================================== -// -// FullScreen -// Adds fullscreen functionality -// -// ========================================================================== -(function (document, $) { - "use strict"; - - // Collection of methods supported by user browser - var fn = (function () { - var fnMap = [ - ["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror"], - // new WebKit - [ - "webkitRequestFullscreen", - "webkitExitFullscreen", - "webkitFullscreenElement", - "webkitFullscreenEnabled", - "webkitfullscreenchange", - "webkitfullscreenerror" - ], - // old WebKit (Safari 5.1) - [ - "webkitRequestFullScreen", - "webkitCancelFullScreen", - "webkitCurrentFullScreenElement", - "webkitCancelFullScreen", - "webkitfullscreenchange", - "webkitfullscreenerror" - ], - [ - "mozRequestFullScreen", - "mozCancelFullScreen", - "mozFullScreenElement", - "mozFullScreenEnabled", - "mozfullscreenchange", - "mozfullscreenerror" - ], - ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError"] - ]; - - var ret = {}; - - for (var i = 0; i < fnMap.length; i++) { - var val = fnMap[i]; - - if (val && val[1] in document) { - for (var j = 0; j < val.length; j++) { - ret[fnMap[0][j]] = val[j]; - } - - return ret; - } - } - - return false; - })(); - - if (fn) { - var FullScreen = { - request: function (elem) { - elem = elem || document.documentElement; - - elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT); - }, - exit: function () { - document[fn.exitFullscreen](); - }, - toggle: function (elem) { - elem = elem || document.documentElement; - - if (this.isFullscreen()) { - this.exit(); - } else { - this.request(elem); - } - }, - isFullscreen: function () { - return Boolean(document[fn.fullscreenElement]); - }, - enabled: function () { - return Boolean(document[fn.fullscreenEnabled]); - } - }; - - $.extend(true, $.fancybox.defaults, { - btnTpl: { - fullScreen: '" - }, - fullScreen: { - autoStart: false - } - }); - - $(document).on(fn.fullscreenchange, function () { - var isFullscreen = FullScreen.isFullscreen(), - instance = $.fancybox.getInstance(); - - if (instance) { - // If image is zooming, then force to stop and reposition properly - if (instance.current && instance.current.type === "image" && instance.isAnimating) { - instance.isAnimating = false; - - instance.update(true, true, 0); - - if (!instance.isComplete) { - instance.complete(); - } - } - - instance.trigger("onFullscreenChange", isFullscreen); - - instance.$refs.container.toggleClass("fancybox-is-fullscreen", isFullscreen); - - instance.$refs.toolbar - .find("[data-fancybox-fullscreen]") - .toggleClass("fancybox-button--fsenter", !isFullscreen) - .toggleClass("fancybox-button--fsexit", isFullscreen); - } - }); - } - - $(document).on({ - "onInit.fb": function (e, instance) { - var $container; - - if (!fn) { - instance.$refs.toolbar.find("[data-fancybox-fullscreen]").remove(); - - return; - } - - if (instance && instance.group[instance.currIndex].opts.fullScreen) { - $container = instance.$refs.container; - - $container.on("click.fb-fullscreen", "[data-fancybox-fullscreen]", function (e) { - e.stopPropagation(); - e.preventDefault(); - - FullScreen.toggle(); - }); - - if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) { - FullScreen.request(); - } - - // Expose API - instance.FullScreen = FullScreen; - } else if (instance) { - instance.$refs.toolbar.find("[data-fancybox-fullscreen]").hide(); - } - }, - - "afterKeydown.fb": function (e, instance, current, keypress, keycode) { - // "F" - if (instance && instance.FullScreen && keycode === 70) { - keypress.preventDefault(); - - instance.FullScreen.toggle(); - } - }, - - "beforeClose.fb": function (e, instance) { - if (instance && instance.FullScreen && instance.$refs.container.hasClass("fancybox-is-fullscreen")) { - FullScreen.exit(); - } - } - }); -})(document, jQuery); -// ========================================================================== -// -// Thumbs -// Displays thumbnails in a grid -// -// ========================================================================== -(function (document, $) { - "use strict"; - - var CLASS = "fancybox-thumbs", - CLASS_ACTIVE = CLASS + "-active"; - - // Make sure there are default values - $.fancybox.defaults = $.extend( - true, { - btnTpl: { - thumbs: '" - }, - thumbs: { - autoStart: false, // Display thumbnails on opening - hideOnClose: true, // Hide thumbnail grid when closing animation starts - parentEl: ".fancybox-container", // Container is injected into this element - axis: "y" // Vertical (y) or horizontal (x) scrolling - } - }, - $.fancybox.defaults - ); - - var FancyThumbs = function (instance) { - this.init(instance); - }; - - $.extend(FancyThumbs.prototype, { - $button: null, - $grid: null, - $list: null, - isVisible: false, - isActive: false, - - init: function (instance) { - var self = this, - group = instance.group, - enabled = 0; - - self.instance = instance; - self.opts = group[instance.currIndex].opts.thumbs; - - instance.Thumbs = self; - - self.$button = instance.$refs.toolbar.find("[data-fancybox-thumbs]"); - - // Enable thumbs if at least two group items have thumbnails - for (var i = 0, len = group.length; i < len; i++) { - if (group[i].thumb) { - enabled++; - } - - if (enabled > 1) { - break; - } - } - - if (enabled > 1 && !!self.opts) { - self.$button.removeAttr("style").on("click", function () { - self.toggle(); - }); - - self.isActive = true; - } else { - self.$button.hide(); - } - }, - - create: function () { - var self = this, - instance = self.instance, - parentEl = self.opts.parentEl, - list = [], - src; - - if (!self.$grid) { - // Create main element - self.$grid = $('
').appendTo( - instance.$refs.container - .find(parentEl) - .addBack() - .filter(parentEl) - ); - - // Add "click" event that performs gallery navigation - self.$grid.on("click", "a", function () { - instance.jumpTo($(this).attr("data-index")); - }); - } - - // Build the list - if (!self.$list) { - self.$list = $('
').appendTo(self.$grid); - } - - $.each(instance.group, function (i, item) { - src = item.thumb; - - if (!src && item.type === "image") { - src = item.src; - } - - list.push( - '" - ); - }); - - self.$list[0].innerHTML = list.join(""); - - if (self.opts.axis === "x") { - // Set fixed width for list element to enable horizontal scrolling - self.$list.width( - parseInt(self.$grid.css("padding-right"), 10) + - instance.group.length * - self.$list - .children() - .eq(0) - .outerWidth(true) - ); - } - }, - - focus: function (duration) { - var self = this, - $list = self.$list, - $grid = self.$grid, - thumb, - thumbPos; - - if (!self.instance.current) { - return; - } - - thumb = $list - .children() - .removeClass(CLASS_ACTIVE) - .filter('[data-index="' + self.instance.current.index + '"]') - .addClass(CLASS_ACTIVE); - - thumbPos = thumb.position(); - - // Check if need to scroll to make current thumb visible - if (self.opts.axis === "y" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) { - $list.stop().animate({ - scrollTop: $list.scrollTop() + thumbPos.top - }, - duration - ); - } else if ( - self.opts.axis === "x" && - (thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth())) - ) { - $list - .parent() - .stop() - .animate({ - scrollLeft: thumbPos.left - }, - duration - ); - } - }, - - update: function () { - var that = this; - that.instance.$refs.container.toggleClass("fancybox-show-thumbs", this.isVisible); - - if (that.isVisible) { - if (!that.$grid) { - that.create(); - } - - that.instance.trigger("onThumbsShow"); - - that.focus(0); - } else if (that.$grid) { - that.instance.trigger("onThumbsHide"); - } - - // Update content position - that.instance.update(); - }, - - hide: function () { - this.isVisible = false; - this.update(); - }, - - show: function () { - this.isVisible = true; - this.update(); - }, - - toggle: function () { - this.isVisible = !this.isVisible; - this.update(); - } - }); - - $(document).on({ - "onInit.fb": function (e, instance) { - var Thumbs; - - if (instance && !instance.Thumbs) { - Thumbs = new FancyThumbs(instance); - - if (Thumbs.isActive && Thumbs.opts.autoStart === true) { - Thumbs.show(); - } - } - }, - - "beforeShow.fb": function (e, instance, item, firstRun) { - var Thumbs = instance && instance.Thumbs; - - if (Thumbs && Thumbs.isVisible) { - Thumbs.focus(firstRun ? 0 : 250); - } - }, - - "afterKeydown.fb": function (e, instance, current, keypress, keycode) { - var Thumbs = instance && instance.Thumbs; - - // "G" - if (Thumbs && Thumbs.isActive && keycode === 71) { - keypress.preventDefault(); - - Thumbs.toggle(); - } - }, - - "beforeClose.fb": function (e, instance) { - var Thumbs = instance && instance.Thumbs; - - if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) { - Thumbs.$grid.hide(); - } - } - }); -})(document, jQuery); -//// ========================================================================== -// -// Share -// Displays simple form for sharing current url -// -// ========================================================================== -(function (document, $) { - "use strict"; - - $.extend(true, $.fancybox.defaults, { - btnTpl: { - share: '" - }, - share: { - url: function (instance, item) { - return ( - (!instance.currentHash && !(item.type === "inline" || item.type === "html") ? item.origSrc || item.src : false) || window.location - ); - }, - tpl: '
' + - "

{{SHARE}}

" + - "

" + - '' + - '' + - "Facebook" + - "" + - '' + - '' + - "Twitter" + - "" + - '' + - '' + - "Pinterest" + - "" + - "

" + - '

' + - "
" - } - }); - - function escapeHtml(string) { - var entityMap = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'", - "/": "/", - "`": "`", - "=": "=" - }; - - return String(string).replace(/[&<>"'`=\/]/g, function (s) { - return entityMap[s]; - }); - } - - $(document).on("click", "[data-fancybox-share]", function () { - var instance = $.fancybox.getInstance(), - current = instance.current || null, - url, - tpl; - - if (!current) { - return; - } - - if ($.type(current.opts.share.url) === "function") { - url = current.opts.share.url.apply(current, [instance, current]); - } - - tpl = current.opts.share.tpl - .replace(/\{\{media\}\}/g, current.type === "image" ? encodeURIComponent(current.src) : "") - .replace(/\{\{url\}\}/g, encodeURIComponent(url)) - .replace(/\{\{url_raw\}\}/g, escapeHtml(url)) - .replace(/\{\{descr\}\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : ""); - - $.fancybox.open({ - src: instance.translate(instance, tpl), - type: "html", - opts: { - touch: false, - animationEffect: false, - afterLoad: function (shareInstance, shareCurrent) { - // Close self if parent instance is closing - instance.$refs.container.one("beforeClose.fb", function () { - shareInstance.close(null, 0); - }); - - // Opening links in a popup window - shareCurrent.$content.find(".fancybox-share__button").click(function () { - window.open(this.href, "Share", "width=550, height=450"); - return false; - }); - }, - mobile: { - autoFocus: false - } - } - }); - }); -})(document, jQuery); -// ========================================================================== -// -// Hash -// Enables linking to each modal -// -// ========================================================================== -(function (window, document, $) { - "use strict"; - - // Simple $.escapeSelector polyfill (for jQuery prior v3) - if (!$.escapeSelector) { - $.escapeSelector = function (sel) { - var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; - var fcssescape = function (ch, asCodePoint) { - if (asCodePoint) { - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if (ch === "\0") { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }; - - return (sel + "").replace(rcssescape, fcssescape); - }; - } - - // Get info about gallery name and current index from url - function parseUrl() { - var hash = window.location.hash.substr(1), - rez = hash.split("-"), - index = rez.length > 1 && /^\+?\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1, - gallery = rez.join("-"); - - return { - hash: hash, - /* Index is starting from 1 */ - index: index < 1 ? 1 : index, - gallery: gallery - }; - } - - // Trigger click evnt on links to open new fancyBox instance - function triggerFromUrl(url) { - if (url.gallery !== "") { - // If we can find element matching 'data-fancybox' atribute, - // then triggering click event should start fancyBox - $("[data-fancybox='" + $.escapeSelector(url.gallery) + "']") - .eq(url.index - 1) - .focus() - .trigger("click.fb-start"); - } - } - - // Get gallery name from current instance - function getGalleryID(instance) { - var opts, ret; - - if (!instance) { - return false; - } - - opts = instance.current ? instance.current.opts : instance.opts; - ret = opts.hash || (opts.$orig ? opts.$orig.data("fancybox") || opts.$orig.data("fancybox-trigger") : ""); - - return ret === "" ? false : ret; - } - - // Start when DOM becomes ready - $(function () { - // Check if user has disabled this module - if ($.fancybox.defaults.hash === false) { - return; - } - - // Update hash when opening/closing fancyBox - $(document).on({ - "onInit.fb": function (e, instance) { - var url, gallery; - - if (instance.group[instance.currIndex].opts.hash === false) { - return; - } - - url = parseUrl(); - gallery = getGalleryID(instance); - - // Make sure gallery start index matches index from hash - if (gallery && url.gallery && gallery == url.gallery) { - instance.currIndex = url.index - 1; - } - }, - - "beforeShow.fb": function (e, instance, current, firstRun) { - var gallery; - - if (!current || current.opts.hash === false) { - return; - } - - // Check if need to update window hash - gallery = getGalleryID(instance); - - if (!gallery) { - return; - } - - // Variable containing last hash value set by fancyBox - // It will be used to determine if fancyBox needs to close after hash change is detected - instance.currentHash = gallery + (instance.group.length > 1 ? "-" + (current.index + 1) : ""); - - // If current hash is the same (this instance most likely is opened by hashchange), then do nothing - if (window.location.hash === "#" + instance.currentHash) { - return; - } - - if (firstRun && !instance.origHash) { - instance.origHash = window.location.hash; - } - - if (instance.hashTimer) { - clearTimeout(instance.hashTimer); - } - - // Update hash - instance.hashTimer = setTimeout(function () { - if ("replaceState" in window.history) { - window.history[firstRun ? "pushState" : "replaceState"]({}, - document.title, - window.location.pathname + window.location.search + "#" + instance.currentHash - ); - - if (firstRun) { - instance.hasCreatedHistory = true; - } - } else { - window.location.hash = instance.currentHash; - } - - instance.hashTimer = null; - }, 300); - }, - - "beforeClose.fb": function (e, instance, current) { - if (!current || current.opts.hash === false) { - return; - } - - clearTimeout(instance.hashTimer); - - // Goto previous history entry - if (instance.currentHash && instance.hasCreatedHistory) { - window.history.back(); - } else if (instance.currentHash) { - if ("replaceState" in window.history) { - window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || "")); - } else { - window.location.hash = instance.origHash; - } - } - - instance.currentHash = null; - } - }); - - // Check if need to start/close after url has changed - $(window).on("hashchange.fb", function () { - var url = parseUrl(), - fb = null; - - // Find last fancyBox instance that has "hash" - $.each( - $(".fancybox-container") - .get() - .reverse(), - function (index, value) { - var tmp = $(value).data("FancyBox"); - - if (tmp && tmp.currentHash) { - fb = tmp; - return false; - } - } - ); - - if (fb) { - // Now, compare hash values - if (fb.currentHash !== url.gallery + "-" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) { - fb.currentHash = null; - - fb.close(); - } - } else if (url.gallery !== "") { - triggerFromUrl(url); - } - }); - - // Check current hash and trigger click event on matching element to start fancyBox, if needed - setTimeout(function () { - if (!$.fancybox.getInstance()) { - triggerFromUrl(parseUrl()); - } - }, 50); - }); -})(window, document, jQuery); -// ========================================================================== -// -// Wheel -// Basic mouse weheel support for gallery navigation -// -// ========================================================================== -(function (document, $) { - "use strict"; - - var prevTime = new Date().getTime(); - - $(document).on({ - "onInit.fb": function (e, instance, current) { - instance.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll", function (e) { - var current = instance.current, - currTime = new Date().getTime(); - - if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === "auto" && current.type !== "image")) { - return; - } - - e.preventDefault(); - e.stopPropagation(); - - if (current.$slide.hasClass("fancybox-animated")) { - return; - } - - e = e.originalEvent || e; - - if (currTime - prevTime < 250) { - return; - } - - prevTime = currTime; - - instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? "next" : "previous"](); - }); - } - }); -})(document, jQuery); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/createPopper.js": -/*!*********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/createPopper.js ***! - \*********************************************************/ -/*! exports provided: popperGenerator, createPopper, detectOverflow */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popperGenerator", function() { return popperGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPopper", function() { return createPopper; }); -/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js"); -/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); -/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js"); -/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js"); -/* harmony import */ var _utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/validateModifiers.js */ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js"); -/* harmony import */ var _utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/uniqueBy.js */ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectOverflow", function() { return _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_11__["default"]; }); - -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - - - - - - - - - - - - - -var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; -var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; -var DEFAULT_OPTIONS = { - placement: 'bottom', - modifiers: [], - strategy: 'absolute' -}; - -function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return !args.some(function (element) { - return !(element && typeof element.getBoundingClientRect === 'function'); - }); -} - -function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; - } - - var _generatorOptions = generatorOptions, - _generatorOptions$def = _generatorOptions.defaultModifiers, - defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, - _generatorOptions$def2 = _generatorOptions.defaultOptions, - defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper(reference, popper, options) { - if (options === void 0) { - options = defaultOptions; - } - - var state = { - placement: 'bottom', - orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), - modifiersData: {}, - elements: { - reference: reference, - popper: popper - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state: state, - setOptions: function setOptions(setOptionsAction) { - var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; - cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions, state.options, options); - state.scrollParents = { - reference: Object(_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_12__["isElement"])(reference) ? Object(_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__["default"])(reference) : reference.contextElement ? Object(_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__["default"])(reference.contextElement) : [], - popper: Object(_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper) - }; // Orders the modifiers based on their dependencies and `phase` - // properties - - var orderedModifiers = Object(_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_5__["default"])(Object(_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_10__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers - - state.orderedModifiers = orderedModifiers.filter(function (m) { - return m.enabled; - }); // Validate the provided modifiers so that the consumer will get warned - // if one of the modifiers is invalid for any reason - - if (true) { - var modifiers = Object(_utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_8__["default"])([].concat(orderedModifiers, state.options.modifiers), function (_ref) { - var name = _ref.name; - return name; - }); - Object(_utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_7__["default"])(modifiers); - - if (Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.options.placement) === _enums_js__WEBPACK_IMPORTED_MODULE_13__["auto"]) { - var flipModifier = state.orderedModifiers.find(function (_ref2) { - var name = _ref2.name; - return name === 'flip'; - }); - - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); - } - } - - var _getComputedStyle = Object(_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(popper), - marginTop = _getComputedStyle.marginTop, - marginRight = _getComputedStyle.marginRight, - marginBottom = _getComputedStyle.marginBottom, - marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can - // cause bugs with positioning, so we'll warn the consumer - - - if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { - return parseFloat(margin); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); - } - } - - runModifierEffects(); - return instance.update(); - }, - // Sync update – it will always be executed, even if not necessary. This - // is useful for low frequency updates where sync behavior simplifies the - // logic. - // For high frequency updates (e.g. `resize` and `scroll` events), always - // prefer the async Popper#update method - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } - - var _state$elements = state.elements, - reference = _state$elements.reference, - popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements - // anymore - - if (!areValidElements(reference, popper)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - - return; - } // Store the reference and popper rects to be read by modifiers - - - state.rects = { - reference: Object(_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(reference, Object(_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper), state.options.strategy === 'fixed'), - popper: Object(_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper) - }; // Modifiers have the ability to reset the current update cycle. The - // most common use case for this is the `flip` modifier changing the - // placement, which then needs to re-run all the modifiers, because the - // logic was previously ran for the previous placement and is therefore - // stale/incorrect - - state.reset = false; - state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier - // is filled with the initial data specified by the modifier. This means - // it doesn't persist and is fresh on each update. - // To ensure persistent data, use `${name}#persistent` - - state.orderedModifiers.forEach(function (modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - var __debug_loops__ = 0; - - for (var index = 0; index < state.orderedModifiers.length; index++) { - if (true) { - __debug_loops__ += 1; - - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } - } - - if (state.reset === true) { - state.reset = false; - index = -1; - continue; - } - - var _state$orderedModifie = state.orderedModifiers[index], - fn = _state$orderedModifie.fn, - _state$orderedModifie2 = _state$orderedModifie.options, - _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, - name = _state$orderedModifie.name; - - if (typeof fn === 'function') { - state = fn({ - state: state, - options: _options, - name: name, - instance: instance - }) || state; - } - } - }, - // Async and optimistically optimized update – it will not be executed if - // not necessary (debounced to run at most once-per-tick) - update: Object(_utils_debounce_js__WEBPACK_IMPORTED_MODULE_6__["default"])(function () { - return new Promise(function (resolve) { - instance.forceUpdate(); - resolve(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; - } - }; - - if (!areValidElements(reference, popper)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - - return instance; - } - - instance.setOptions(options).then(function (state) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state); - } - }); // Modifiers have the ability to execute arbitrary code before the first - // update cycle runs. They will be executed in the same order as the update - // cycle. This is useful when a modifier adds some persistent data that - // other modifiers need to use, but the modifier is run after the dependent - // one. - - function runModifierEffects() { - state.orderedModifiers.forEach(function (_ref3) { - var name = _ref3.name, - _ref3$options = _ref3.options, - options = _ref3$options === void 0 ? {} : _ref3$options, - effect = _ref3.effect; - - if (typeof effect === 'function') { - var cleanupFn = effect({ - state: state, - name: name, - instance: instance, - options: options - }); - - var noopFn = function noopFn() {}; - - effectCleanupFns.push(cleanupFn || noopFn); - } - }); - } - - function cleanupModifierEffects() { - effectCleanupFns.forEach(function (fn) { - return fn(); - }); - effectCleanupFns = []; - } - - return instance; - }; -} -var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js": -/*!***************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***! - \***************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return contains; }); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - -function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method - - if (parent.contains(child)) { - return true; - } // then fallback to custom implementation with Shadow DOM support - else if (rootNode && Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__["isShadowRoot"])(rootNode)) { - var next = child; - - do { - if (next && parent.isSameNode(next)) { - return true; - } // $FlowFixMe[prop-missing]: need a better way to handle this... - - - next = next.parentNode || next.host; - } while (next); - } // Give up, the result is false - - - return false; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js": -/*!****************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***! - \****************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getBoundingClientRect; }); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - -function getBoundingClientRect(element, includeScale) { - if (includeScale === void 0) { - includeScale = false; - } - - var rect = element.getBoundingClientRect(); - var scaleX = 1; - var scaleY = 1; - - if (Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__["isHTMLElement"])(element) && includeScale) { - var offsetHeight = element.offsetHeight; - var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale - // Fallback to 1 in case both values are `0` - - if (offsetWidth > 0) { - scaleX = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_1__["round"])(rect.width) / offsetWidth || 1; - } - - if (offsetHeight > 0) { - scaleY = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_1__["round"])(rect.height) / offsetHeight || 1; - } - } - - return { - width: rect.width / scaleX, - height: rect.height / scaleY, - top: rect.top / scaleY, - right: rect.right / scaleX, - bottom: rect.bottom / scaleY, - left: rect.left / scaleX, - x: rect.left / scaleX, - y: rect.top / scaleY - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***! - \**********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getClippingRect; }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js"); -/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js"); -/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); -/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); -/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - - - - - - - - -function getInnerBoundingClientRect(element) { - var rect = Object(_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; -} - -function getClientRectFromMixedType(element, clippingParent) { - return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_0__["viewport"] ? Object(_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_12__["default"])(Object(_getViewportRect_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) : Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__["isElement"])(clippingParent) ? getInnerBoundingClientRect(clippingParent) : Object(_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_12__["default"])(Object(_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element))); -} // A "clipping parent" is an overflowable container with the characteristic of -// clipping (or hiding) overflowing elements with a position different from -// `initial` - - -function getClippingParents(element) { - var clippingParents = Object(_listScrollParents_js__WEBPACK_IMPORTED_MODULE_3__["default"])(Object(_getParentNode_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element)); - var canEscapeClipping = ['absolute', 'fixed'].indexOf(Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element).position) >= 0; - var clipperElement = canEscapeClipping && Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__["isHTMLElement"])(element) ? Object(_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element) : element; - - if (!Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__["isElement"])(clipperElement)) { - return []; - } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 - - - return clippingParents.filter(function (clippingParent) { - return Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_7__["isElement"])(clippingParent) && Object(_contains_js__WEBPACK_IMPORTED_MODULE_10__["default"])(clippingParent, clipperElement) && Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent) !== 'body'; - }); -} // Gets the maximum area that the element is visible in due to any number of -// clipping parents - - -function getClippingRect(element, boundary, rootBoundary) { - var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); - var clippingParents = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents[0]; - var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent); - accRect.top = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_13__["max"])(rect.top, accRect.top); - accRect.right = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_13__["min"])(rect.right, accRect.right); - accRect.bottom = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_13__["min"])(rect.bottom, accRect.bottom); - accRect.left = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_13__["max"])(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***! - \***********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getCompositeRect; }); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - - -function isElementScaled(element) { - var rect = element.getBoundingClientRect(); - var scaleX = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_7__["round"])(rect.width) / element.offsetWidth || 1; - var scaleY = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_7__["round"])(rect.height) / element.offsetHeight || 1; - return scaleX !== 1 || scaleY !== 1; -} // Returns the composite rect of an element relative to its offsetParent. -// Composite means it takes into account transforms as well as layout. - - -function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } - - var isOffsetParentAnElement = Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isHTMLElement"])(offsetParent); - var offsetParentIsScaled = Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isHTMLElement"])(offsetParent) && isElementScaled(offsetParent); - var documentElement = Object(_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent); - var rect = Object(_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(elementOrVirtualElement, offsetParentIsScaled); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 - }; - - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 - Object(_isScrollParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(documentElement)) { - scroll = Object(_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent); - } - - if (Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isHTMLElement"])(offsetParent)) { - offsets = Object(_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(offsetParent, true); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = Object(_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_4__["default"])(documentElement); - } - } - - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***! - \***********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getComputedStyle; }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - -function getComputedStyle(element) { - return Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js": -/*!*************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***! - \*************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getDocumentElement; }); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - -function getDocumentElement(element) { - // $FlowFixMe[incompatible-return]: assume body is always available - return ((Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__["isElement"])(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] - element.document) || window.document).documentElement; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***! - \**********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getDocumentRect; }); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); -/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - // Gets the entire size of the scrollable document area, even extending outside -// of the `` and `` rect bounds if horizontally scrollable - -function getDocumentRect(element) { - var _element$ownerDocumen; - - var html = Object(_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); - var winScroll = Object(_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); - var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; - var width = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_4__["max"])(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_4__["max"])(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x = -winScroll.scrollLeft + Object(_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element); - var y = -winScroll.scrollTop; - - if (Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(body || html).direction === 'rtl') { - x += Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_4__["max"])(html.clientWidth, body ? body.clientWidth : 0) - width; - } - - return { - width: width, - height: height, - x: x, - y: y - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***! - \***************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getHTMLElementScroll; }); -function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***! - \********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getLayoutRect; }); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); - // Returns the layout rect of an element relative to its offsetParent. Layout -// means it doesn't take into account transforms. - -function getLayoutRect(element) { - var clientRect = Object(_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed. - // Fixes https://github.com/popperjs/popper-core/issues/1223 - - var width = element.offsetWidth; - var height = element.offsetHeight; - - if (Math.abs(clientRect.width - width) <= 1) { - width = clientRect.width; - } - - if (Math.abs(clientRect.height - height) <= 1) { - height = clientRect.height; - } - - return { - x: element.offsetLeft, - y: element.offsetTop, - width: width, - height: height - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js": -/*!******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***! - \******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getNodeName; }); -function getNodeName(element) { - return element ? (element.nodeName || '').toLowerCase() : null; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***! - \********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getNodeScroll; }); -/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js"); - - - - -function getNodeScroll(node) { - if (node === Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(node) || !Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_2__["isHTMLElement"])(node)) { - return Object(_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); - } else { - return Object(_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node); - } -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***! - \**********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getOffsetParent; }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js"); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); - - - - - - - -function getTrueOffsetParent(element) { - if (!Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isHTMLElement"])(element) || // https://github.com/popperjs/popper-core/issues/837 - Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).position === 'fixed') { - return null; - } - - return element.offsetParent; -} // `.offsetParent` reports `null` for fixed elements, while absolute elements -// return the containing block - - -function getContainingBlock(element) { - var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; - var isIE = navigator.userAgent.indexOf('Trident') !== -1; - - if (isIE && Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isHTMLElement"])(element)) { - // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport - var elementCss = Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element); - - if (elementCss.position === 'fixed') { - return null; - } - } - - var currentNode = Object(_getParentNode_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element); - - if (Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isShadowRoot"])(currentNode)) { - currentNode = currentNode.host; - } - - while (Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isHTMLElement"])(currentNode) && ['html', 'body'].indexOf(Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode)) < 0) { - var css = Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that - // create a containing block. - // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - - if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { - return currentNode; - } else { - currentNode = currentNode.parentNode; - } - } - - return null; -} // Gets the closest ancestor positioned element. Handles some edge cases, -// such as table ancestors and cross browser bugs. - - -function getOffsetParent(element) { - var window = Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); - var offsetParent = getTrueOffsetParent(element); - - while (offsetParent && Object(_isTableElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) && Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent).position === 'static') { - offsetParent = getTrueOffsetParent(offsetParent); - } - - if (offsetParent && (Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent) === 'html' || Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent) === 'body' && Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent).position === 'static')) { - return window; - } - - return offsetParent || getContainingBlock(element) || window; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***! - \********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getParentNode; }); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - - -function getParentNode(element) { - if (Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') { - return element; - } - - return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle - // $FlowFixMe[incompatible-return] - // $FlowFixMe[prop-missing] - element.assignedSlot || // step into the shadow DOM of the parent of a slotted node - element.parentNode || ( // DOM Element detected - Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_2__["isShadowRoot"])(element) ? element.host : null) || // ShadowRoot detected - // $FlowFixMe[incompatible-call]: HTMLElement is a Node - Object(_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element) // fallback - - ); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***! - \**********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getScrollParent; }); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); -/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - - - -function getScrollParent(node) { - if (['html', 'body', '#document'].indexOf(Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) >= 0) { - // $FlowFixMe[incompatible-return]: assume body is always available - return node.ownerDocument.body; - } - - if (Object(_instanceOf_js__WEBPACK_IMPORTED_MODULE_3__["isHTMLElement"])(node) && Object(_isScrollParent_js__WEBPACK_IMPORTED_MODULE_1__["default"])(node)) { - return node; - } - - return getScrollParent(Object(_getParentNode_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***! - \**********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getViewportRect; }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); - - - -function getViewportRect(element) { - var win = Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); - var html = Object(_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); - var visualViewport = win.visualViewport; - var width = html.clientWidth; - var height = html.clientHeight; - var x = 0; - var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper - // can be obscured underneath it. - // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even - // if it isn't open, so if this isn't available, the popper will be detected - // to overflow the bottom of the screen too early. - - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) - // In Chrome, it returns a value very close to 0 (+/-) but contains rounding - // errors due to floating point numbers, so we need to check precision. - // Safari returns a number <= 0, usually < -1 when pinch-zoomed - // Feature detection fails in mobile emulation mode in Chrome. - // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < - // 0.001 - // Fallback here: "Not Safari" userAgent - - if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; - } - } - - return { - width: width, - height: height, - x: x + Object(_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element), - y: y - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js": -/*!****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***! - \****************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getWindow; }); -function getWindow(node) { - if (node == null) { - return window; - } - - if (node.toString() !== '[object Window]') { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; - } - - return node; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***! - \**********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getWindowScroll; }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - -function getWindowScroll(node) { - var win = Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft: scrollLeft, - scrollTop: scrollTop - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***! - \**************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getWindowScrollBarX; }); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); - - - -function getWindowScrollBarX(element) { - // If has a CSS width greater than the viewport, then this will be - // incorrect for RTL. - // Popper 1 is broken in this case and never had a bug report so let's assume - // it's not an issue. I don't think anyone ever specifies width on - // anyway. - // Browsers where the left scrollbar doesn't cause an issue report `0` for - // this (e.g. Edge 2019, IE11, Safari) - return Object(_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object(_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + Object(_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***! - \*****************************************************************/ -/*! exports provided: isElement, isHTMLElement, isShadowRoot */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return isElement; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isHTMLElement", function() { return isHTMLElement; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isShadowRoot", function() { return isShadowRoot; }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - - -function isElement(node) { - var OwnElement = Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element; - return node instanceof OwnElement || node instanceof Element; -} - -function isHTMLElement(node) { - var OwnElement = Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; -} - -function isShadowRoot(node) { - // IE 11 has no ShadowRoot - if (typeof ShadowRoot === 'undefined') { - return false; - } - - var OwnElement = Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; -} - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***! - \*********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isScrollParent; }); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); - -function isScrollParent(element) { - // Firefox wants us to check `-x` and `-y` variations as well - var _getComputedStyle = Object(_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element), - overflow = _getComputedStyle.overflow, - overflowX = _getComputedStyle.overflowX, - overflowY = _getComputedStyle.overflowY; - - return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***! - \*********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isTableElement; }); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); - -function isTableElement(element) { - return ['table', 'td', 'th'].indexOf(Object(_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js": -/*!************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***! - \************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return listScrollParents; }); -/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js"); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); - - - - -/* -given a DOM element, return the list of all scroll parents, up the list of ancesors -until we get to the top window object. This list is what we attach scroll listeners -to, because if any of these parent elements scroll, we'll need to re-calculate the -reference element's position. -*/ - -function listScrollParents(element, list) { - var _element$ownerDocumen; - - if (list === void 0) { - list = []; - } - - var scrollParent = Object(_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); - var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); - var win = Object(_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], Object(_isScrollParent_js__WEBPACK_IMPORTED_MODULE_3__["default"])(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here - updatedList.concat(listScrollParents(Object(_getParentNode_js__WEBPACK_IMPORTED_MODULE_1__["default"])(target))); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/enums.js": -/*!**************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/enums.js ***! - \**************************************************/ -/*! exports provided: top, bottom, right, left, auto, basePlacements, start, end, clippingParents, viewport, popper, reference, variationPlacements, placements, beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite, modifierPhases */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "top", function() { return top; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bottom", function() { return bottom; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "right", function() { return right; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "left", function() { return left; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auto", function() { return auto; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "basePlacements", function() { return basePlacements; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "start", function() { return start; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "end", function() { return end; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clippingParents", function() { return clippingParents; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "viewport", function() { return viewport; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popper", function() { return popper; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reference", function() { return reference; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "variationPlacements", function() { return variationPlacements; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "placements", function() { return placements; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "beforeRead", function() { return beforeRead; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "read", function() { return read; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "afterRead", function() { return afterRead; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "beforeMain", function() { return beforeMain; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "main", function() { return main; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "afterMain", function() { return afterMain; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "beforeWrite", function() { return beforeWrite; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "write", function() { return write; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "afterWrite", function() { return afterWrite; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "modifierPhases", function() { return modifierPhases; }); -var top = 'top'; -var bottom = 'bottom'; -var right = 'right'; -var left = 'left'; -var auto = 'auto'; -var basePlacements = [top, bottom, right, left]; -var start = 'start'; -var end = 'end'; -var clippingParents = 'clippingParents'; -var viewport = 'viewport'; -var popper = 'popper'; -var reference = 'reference'; -var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); -}, []); -var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); -}, []); // modifiers that need to read the DOM - -var beforeRead = 'beforeRead'; -var read = 'read'; -var afterRead = 'afterRead'; // pure-logic modifiers - -var beforeMain = 'beforeMain'; -var main = 'main'; -var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) - -var beforeWrite = 'beforeWrite'; -var write = 'write'; -var afterWrite = 'afterWrite'; -var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/index.js": -/*!**************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/index.js ***! - \**************************************************/ -/*! exports provided: top, bottom, right, left, auto, basePlacements, start, end, clippingParents, viewport, popper, reference, variationPlacements, placements, beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite, modifierPhases, applyStyles, arrow, computeStyles, eventListeners, flip, hide, offset, popperOffsets, preventOverflow, popperGenerator, detectOverflow, createPopperBase, createPopper, createPopperLite */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "top", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["top"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bottom", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["bottom"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "right", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["right"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "left", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auto", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["auto"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "basePlacements", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["basePlacements"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "start", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["start"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "end", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["end"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clippingParents", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["clippingParents"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "viewport", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["viewport"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popper", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["popper"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reference", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["reference"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "variationPlacements", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["variationPlacements"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "placements", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["placements"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "beforeRead", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["beforeRead"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "read", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["read"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "afterRead", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["afterRead"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "beforeMain", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["beforeMain"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "main", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["main"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "afterMain", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["afterMain"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "beforeWrite", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["beforeWrite"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "write", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["write"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "afterWrite", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["afterWrite"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "modifierPhases", function() { return _enums_js__WEBPACK_IMPORTED_MODULE_0__["modifierPhases"]; }); - -/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyStyles", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["applyStyles"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "arrow", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["arrow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "computeStyles", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["computeStyles"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "eventListeners", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["eventListeners"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flip", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["flip"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hide", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["hide"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "offset", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["offset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popperOffsets", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["popperOffsets"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "preventOverflow", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__["preventOverflow"]; }); - -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popperGenerator", function() { return _createPopper_js__WEBPACK_IMPORTED_MODULE_2__["popperGenerator"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectOverflow", function() { return _createPopper_js__WEBPACK_IMPORTED_MODULE_2__["detectOverflow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createPopperBase", function() { return _createPopper_js__WEBPACK_IMPORTED_MODULE_2__["createPopper"]; }); - -/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createPopper", function() { return _popper_js__WEBPACK_IMPORTED_MODULE_3__["createPopper"]; }); - -/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createPopperLite", function() { return _popper_lite_js__WEBPACK_IMPORTED_MODULE_4__["createPopper"]; }); - - - // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js": -/*!******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***! - \******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - // This modifier takes the styles prepared by the `computeStyles` modifier -// and applies them to the HTMLElements such as popper and arrow - -function applyStyles(_ref) { - var state = _ref.state; - Object.keys(state.elements).forEach(function (name) { - var style = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; // arrow is optional + virtual elements - - if (!Object(_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__["isHTMLElement"])(element) || !Object(_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) { - return; - } // Flow doesn't support to extend this property, but it's the most - // effective way to apply styles to an HTMLElement - // $FlowFixMe[cannot-write] - - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (name) { - var value = attributes[name]; - - if (value === false) { - element.removeAttribute(name); - } else { - element.setAttribute(name, value === true ? '' : value); - } - }); - }); -} - -function effect(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: '0', - top: '0', - margin: '0' - }, - arrow: { - position: 'absolute' - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - state.styles = initialStyles; - - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } - - return function () { - Object.keys(state.elements).forEach(function (name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them - - var style = styleProperties.reduce(function (style, property) { - style[property] = ''; - return style; - }, {}); // arrow is optional + virtual elements - - if (!Object(_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__["isHTMLElement"])(element) || !Object(_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) { - return; - } - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (attribute) { - element.removeAttribute(attribute); - }); - }); - }; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'applyStyles', - enabled: true, - phase: 'write', - fn: applyStyles, - effect: effect, - requires: ['computeStyles'] -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js": -/*!************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***! - \************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); -/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); -/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); -/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); -/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - - - - - - - - - // eslint-disable-next-line import/no-unused-modules - -var toPaddingObject = function toPaddingObject(padding, state) { - padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { - placement: state.placement - })) : padding; - return Object(_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_6__["default"])(typeof padding !== 'number' ? padding : Object(_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_7__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_8__["basePlacements"])); -}; - -function arrow(_ref) { - var _state$modifiersData$; - - var state = _ref.state, - name = _ref.name, - options = _ref.options; - var arrowElement = state.elements.arrow; - var popperOffsets = state.modifiersData.popperOffsets; - var basePlacement = Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.placement); - var axis = Object(_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement); - var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_8__["left"], _enums_js__WEBPACK_IMPORTED_MODULE_8__["right"]].indexOf(basePlacement) >= 0; - var len = isVertical ? 'height' : 'width'; - - if (!arrowElement || !popperOffsets) { - return; - } - - var paddingObject = toPaddingObject(options.padding, state); - var arrowRect = Object(_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arrowElement); - var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_8__["top"] : _enums_js__WEBPACK_IMPORTED_MODULE_8__["left"]; - var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_8__["bottom"] : _enums_js__WEBPACK_IMPORTED_MODULE_8__["right"]; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; - var startDiff = popperOffsets[axis] - state.rects.reference[axis]; - var arrowOffsetParent = Object(_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arrowElement); - var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is - // outside of the popper bounds - - var min = paddingObject[minProp]; - var max = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset = Object(_utils_within_js__WEBPACK_IMPORTED_MODULE_5__["within"])(min, center, max); // Prevents breaking syntax highlighting... - - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); -} - -function effect(_ref2) { - var state = _ref2.state, - options = _ref2.options; - var _options$element = options.element, - arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; - - if (arrowElement == null) { - return; - } // CSS selector - - - if (typeof arrowElement === 'string') { - arrowElement = state.elements.popper.querySelector(arrowElement); - - if (!arrowElement) { - return; - } - } - - if (true) { - if (!Object(_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_9__["isHTMLElement"])(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); - } - } - - if (!Object(_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.elements.popper, arrowElement)) { - if (true) { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); - } - - return; - } - - state.elements.arrow = arrowElement; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'arrow', - enabled: true, - phase: 'main', - fn: arrow, - effect: effect, - requires: ['popperOffsets'], - requiresIfExists: ['preventOverflow'] -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***! - \********************************************************************/ -/*! exports provided: mapToStyles, default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapToStyles", function() { return mapToStyles; }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - // eslint-disable-next-line import/no-unused-modules - -var unsetSides = { - top: 'auto', - right: 'auto', - bottom: 'auto', - left: 'auto' -}; // Round the offsets to the nearest suitable subpixel based on the DPR. -// Zooming can change the DPR, but it seems to report a value that will -// cleanly divide the values into the appropriate subpixels. - -function roundOffsetsByDPR(_ref) { - var x = _ref.x, - y = _ref.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_7__["round"])(x * dpr) / dpr || 0, - y: Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_7__["round"])(y * dpr) / dpr || 0 - }; -} - -function mapToStyles(_ref2) { - var _Object$assign2; - - var popper = _ref2.popper, - popperRect = _ref2.popperRect, - placement = _ref2.placement, - variation = _ref2.variation, - offsets = _ref2.offsets, - position = _ref2.position, - gpuAcceleration = _ref2.gpuAcceleration, - adaptive = _ref2.adaptive, - roundOffsets = _ref2.roundOffsets, - isFixed = _ref2.isFixed; - var _offsets$x = offsets.x, - x = _offsets$x === void 0 ? 0 : _offsets$x, - _offsets$y = offsets.y, - y = _offsets$y === void 0 ? 0 : _offsets$y; - - var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ - x: x, - y: y - }) : { - x: x, - y: y - }; - - x = _ref3.x; - y = _ref3.y; - var hasX = offsets.hasOwnProperty('x'); - var hasY = offsets.hasOwnProperty('y'); - var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"]; - var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_0__["top"]; - var win = window; - - if (adaptive) { - var offsetParent = Object(_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper); - var heightProp = 'clientHeight'; - var widthProp = 'clientWidth'; - - if (offsetParent === Object(_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper)) { - offsetParent = Object(_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper); - - if (Object(_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent).position !== 'static' && position === 'absolute') { - heightProp = 'scrollHeight'; - widthProp = 'scrollWidth'; - } - } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it - - - offsetParent = offsetParent; - - if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__["top"] || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"] || placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__["right"]) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__["end"]) { - sideY = _enums_js__WEBPACK_IMPORTED_MODULE_0__["bottom"]; - var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] - offsetParent[heightProp]; - y -= offsetY - popperRect.height; - y *= gpuAcceleration ? 1 : -1; - } - - if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"] || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__["top"] || placement === _enums_js__WEBPACK_IMPORTED_MODULE_0__["bottom"]) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__["end"]) { - sideX = _enums_js__WEBPACK_IMPORTED_MODULE_0__["right"]; - var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] - offsetParent[widthProp]; - x -= offsetX - popperRect.width; - x *= gpuAcceleration ? 1 : -1; - } - } - - var commonStyles = Object.assign({ - position: position - }, adaptive && unsetSides); - - var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ - x: x, - y: y - }) : { - x: x, - y: y - }; - - x = _ref4.x; - y = _ref4.y; - - if (gpuAcceleration) { - var _Object$assign; - - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); - } - - return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); -} - -function computeStyles(_ref5) { - var state = _ref5.state, - options = _ref5.options; - var _options$gpuAccelerat = options.gpuAcceleration, - gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, - _options$adaptive = options.adaptive, - adaptive = _options$adaptive === void 0 ? true : _options$adaptive, - _options$roundOffsets = options.roundOffsets, - roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; - - if (true) { - var transitionProperty = Object(_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state.elements.popper).transitionProperty || ''; - - if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); - } - } - - var commonStyles = { - placement: Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.placement), - variation: Object(_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration, - isFixed: state.options.strategy === 'fixed' - }; - - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive: adaptive, - roundOffsets: roundOffsets - }))); - } - - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.arrow, - position: 'absolute', - adaptive: false, - roundOffsets: roundOffsets - }))); - } - - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-placement': state.placement - }); -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'computeStyles', - enabled: true, - phase: 'beforeWrite', - fn: computeStyles, - data: {} -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***! - \*********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - // eslint-disable-next-line import/no-unused-modules - -var passive = { - passive: true -}; - -function effect(_ref) { - var state = _ref.state, - instance = _ref.instance, - options = _ref.options; - var _options$scroll = options.scroll, - scroll = _options$scroll === void 0 ? true : _options$scroll, - _options$resize = options.resize, - resize = _options$resize === void 0 ? true : _options$resize; - var window = Object(_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); - - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.addEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.addEventListener('resize', instance.update, passive); - } - - return function () { - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.removeEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.removeEventListener('resize', instance.update, passive); - } - }; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'eventListeners', - enabled: true, - phase: 'write', - fn: function fn() {}, - effect: effect, - data: {} -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); - - - - - - - // eslint-disable-next-line import/no-unused-modules - -function getExpandedFallbackPlacements(placement) { - if (Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_5__["auto"]) { - return []; - } - - var oppositePlacement = Object(_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); - return [Object(_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement), oppositePlacement, Object(_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(oppositePlacement)]; -} - -function flip(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - - if (state.modifiersData[name]._skip) { - return; - } - - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, - specifiedFallbackPlacements = options.fallbackPlacements, - padding = options.padding, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - _options$flipVariatio = options.flipVariations, - flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, - allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [Object(_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { - return acc.concat(Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_5__["auto"] ? Object(_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - flipVariations: flipVariations, - allowedAutoPlacements: allowedAutoPlacements - }) : placement); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements[0]; - - for (var i = 0; i < placements.length; i++) { - var placement = placements[i]; - - var _basePlacement = Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement); - - var isStartVariation = Object(_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_6__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_5__["start"]; - var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_5__["top"], _enums_js__WEBPACK_IMPORTED_MODULE_5__["bottom"]].indexOf(_basePlacement) >= 0; - var len = isVertical ? 'width' : 'height'; - var overflow = Object(_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - altBoundary: altBoundary, - padding: padding - }); - var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_5__["right"] : _enums_js__WEBPACK_IMPORTED_MODULE_5__["left"] : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_5__["bottom"] : _enums_js__WEBPACK_IMPORTED_MODULE_5__["top"]; - - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = Object(_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(mainVariationSide); - } - - var altVariationSide = Object(_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(mainVariationSide); - var checks = []; - - if (checkMainAxis) { - checks.push(overflow[_basePlacement] <= 0); - } - - if (checkAltAxis) { - checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); - } - - if (checks.every(function (check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } - - checksMap.set(placement, checks); - } - - if (makeFallbackChecks) { - // `2` may be desired in some cases – research later - var numberOfChecks = flipVariations ? 3 : 1; - - var _loop = function _loop(_i) { - var fittingPlacement = placements.find(function (placement) { - var checks = checksMap.get(placement); - - if (checks) { - return checks.slice(0, _i).every(function (check) { - return check; - }); - } - }); - - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; - - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); - - if (_ret === "break") break; - } - } - - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'flip', - enabled: true, - phase: 'main', - fn: flip, - requiresIfExists: ['offset'], - data: { - _skip: false - } -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); - - - -function getSideOffsets(overflow, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; - } - - return { - top: overflow.top - rect.height - preventedOffsets.y, - right: overflow.right - rect.width + preventedOffsets.x, - bottom: overflow.bottom - rect.height + preventedOffsets.y, - left: overflow.left - rect.width - preventedOffsets.x - }; -} - -function isAnySideFullyClipped(overflow) { - return [_enums_js__WEBPACK_IMPORTED_MODULE_0__["top"], _enums_js__WEBPACK_IMPORTED_MODULE_0__["right"], _enums_js__WEBPACK_IMPORTED_MODULE_0__["bottom"], _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"]].some(function (side) { - return overflow[side] >= 0; - }); -} - -function hide(_ref) { - var state = _ref.state, - name = _ref.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = Object(_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { - elementContext: 'reference' - }); - var popperAltOverflow = Object(_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets: referenceClippingOffsets, - popperEscapeOffsets: popperEscapeOffsets, - isReferenceHidden: isReferenceHidden, - hasPopperEscaped: hasPopperEscaped - }; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-reference-hidden': isReferenceHidden, - 'data-popper-escaped': hasPopperEscaped - }); -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'hide', - enabled: true, - phase: 'main', - requiresIfExists: ['preventOverflow'], - fn: hide -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js": -/*!************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***! - \************************************************************/ -/*! exports provided: applyStyles, arrow, computeStyles, eventListeners, flip, hide, offset, popperOffsets, preventOverflow */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyStyles", function() { return _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); - -/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "arrow", function() { return _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }); - -/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "computeStyles", function() { return _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); - -/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "eventListeners", function() { return _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); - -/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flip", function() { return _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }); - -/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hide", function() { return _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); - -/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "offset", function() { return _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); - -/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popperOffsets", function() { return _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }); - -/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "preventOverflow", function() { return _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }); - - - - - - - - - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js": -/*!*************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***! - \*************************************************************/ -/*! exports provided: distanceAndSkiddingToXY, default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distanceAndSkiddingToXY", function() { return distanceAndSkiddingToXY; }); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - // eslint-disable-next-line import/no-unused-modules - -function distanceAndSkiddingToXY(placement, rects, offset) { - var basePlacement = Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); - var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__["left"], _enums_js__WEBPACK_IMPORTED_MODULE_1__["top"]].indexOf(basePlacement) >= 0 ? -1 : 1; - - var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { - placement: placement - })) : offset, - skidding = _ref[0], - distance = _ref[1]; - - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [_enums_js__WEBPACK_IMPORTED_MODULE_1__["left"], _enums_js__WEBPACK_IMPORTED_MODULE_1__["right"]].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance - }; -} - -function offset(_ref2) { - var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; - var _options$offset = options.offset, - offset = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__["placements"].reduce(function (acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); - return acc; - }, {}); - var _data$state$placement = data[state.placement], - x = _data$state$placement.x, - y = _data$state$placement.y; - - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x; - state.modifiersData.popperOffsets.y += y; - } - - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'offset', - enabled: true, - phase: 'main', - requires: ['popperOffsets'], - fn: offset -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***! - \********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); - - -function popperOffsets(_ref) { - var state = _ref.state, - name = _ref.name; - // Offsets are the actual position the popper needs to have to be - // properly positioned near its reference element - // This is the most basic placement, and will be adjusted by - // the modifiers in the next step - state.modifiersData[name] = Object(_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: 'absolute', - placement: state.placement - }); -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'popperOffsets', - enabled: true, - phase: 'read', - fn: popperOffsets, - data: {} -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***! - \**********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); -/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js"); -/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); -/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - - - - - -function preventOverflow(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - padding = options.padding, - _options$tether = options.tether, - tether = _options$tether === void 0 ? true : _options$tether, - _options$tetherOffset = options.tetherOffset, - tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow = Object(_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state, { - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - altBoundary: altBoundary - }); - var basePlacement = Object(_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement); - var variation = Object(_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_8__["default"])(state.placement); - var isBasePlacement = !variation; - var mainAxis = Object(_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(basePlacement); - var altAxis = Object(_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_3__["default"])(mainAxis); - var popperOffsets = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { - placement: state.placement - })) : tetherOffset; - var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { - mainAxis: tetherOffsetValue, - altAxis: tetherOffsetValue - } : Object.assign({ - mainAxis: 0, - altAxis: 0 - }, tetherOffsetValue); - var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; - var data = { - x: 0, - y: 0 - }; - - if (!popperOffsets) { - return; - } - - if (checkMainAxis) { - var _offsetModifierState$; - - var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__["top"] : _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"]; - var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__["bottom"] : _enums_js__WEBPACK_IMPORTED_MODULE_0__["right"]; - var len = mainAxis === 'y' ? 'height' : 'width'; - var offset = popperOffsets[mainAxis]; - var min = offset + overflow[mainSide]; - var max = offset - overflow[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__["start"] ? referenceRect[len] : popperRect[len]; - var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_0__["start"] ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go - // outside the reference bounds - - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? Object(_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : Object(_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_9__["default"])(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want - // to include its full size in the calculation. If the reference is small - // and near the edge of a boundary, the popper can overflow even if the - // reference is not overflowing as well (e.g. virtual elements with no - // width or height) - - var arrowLen = Object(_utils_within_js__WEBPACK_IMPORTED_MODULE_4__["within"])(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; - var arrowOffsetParent = state.elements.arrow && Object(_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; - var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; - var tetherMax = offset + maxOffset - offsetModifierValue; - var preventedOffset = Object(_utils_within_js__WEBPACK_IMPORTED_MODULE_4__["within"])(tether ? Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_10__["min"])(min, tetherMin) : min, offset, tether ? Object(_utils_math_js__WEBPACK_IMPORTED_MODULE_10__["max"])(max, tetherMax) : max); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } - - if (checkAltAxis) { - var _offsetModifierState$2; - - var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__["top"] : _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"]; - - var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_0__["bottom"] : _enums_js__WEBPACK_IMPORTED_MODULE_0__["right"]; - - var _offset = popperOffsets[altAxis]; - - var _len = altAxis === 'y' ? 'height' : 'width'; - - var _min = _offset + overflow[_mainSide]; - - var _max = _offset - overflow[_altSide]; - - var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_0__["top"], _enums_js__WEBPACK_IMPORTED_MODULE_0__["left"]].indexOf(basePlacement) !== -1; - - var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; - - var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; - - var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; - - var _preventedOffset = tether && isOriginSide ? Object(_utils_within_js__WEBPACK_IMPORTED_MODULE_4__["withinMaxClamp"])(_tetherMin, _offset, _tetherMax) : Object(_utils_within_js__WEBPACK_IMPORTED_MODULE_4__["within"])(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); - - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } - - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'preventOverflow', - enabled: true, - phase: 'main', - fn: preventOverflow, - requiresIfExists: ['offset'] -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/popper-lite.js": -/*!********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***! - \********************************************************/ -/*! exports provided: createPopper, popperGenerator, defaultModifiers, detectOverflow */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPopper", function() { return createPopper; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultModifiers", function() { return defaultModifiers; }); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popperGenerator", function() { return _createPopper_js__WEBPACK_IMPORTED_MODULE_0__["popperGenerator"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectOverflow", function() { return _createPopper_js__WEBPACK_IMPORTED_MODULE_0__["detectOverflow"]; }); - -/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); -/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); -/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); -/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); - - - - - -var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_4__["default"]]; -var createPopper = /*#__PURE__*/Object(_createPopper_js__WEBPACK_IMPORTED_MODULE_0__["popperGenerator"])({ - defaultModifiers: defaultModifiers -}); // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/popper.js": -/*!***************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/popper.js ***! - \***************************************************/ -/*! exports provided: createPopper, popperGenerator, defaultModifiers, detectOverflow, createPopperLite, applyStyles, arrow, computeStyles, eventListeners, flip, hide, offset, popperOffsets, preventOverflow */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPopper", function() { return createPopper; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultModifiers", function() { return defaultModifiers; }); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popperGenerator", function() { return _createPopper_js__WEBPACK_IMPORTED_MODULE_0__["popperGenerator"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detectOverflow", function() { return _createPopper_js__WEBPACK_IMPORTED_MODULE_0__["detectOverflow"]; }); - -/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); -/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); -/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); -/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); -/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); -/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); -/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); -/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); -/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); -/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createPopperLite", function() { return _popper_lite_js__WEBPACK_IMPORTED_MODULE_10__["createPopper"]; }); - -/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyStyles", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["applyStyles"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "arrow", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["arrow"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "computeStyles", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["computeStyles"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "eventListeners", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["eventListeners"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flip", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["flip"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hide", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["hide"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "offset", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["offset"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "popperOffsets", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["popperOffsets"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "preventOverflow", function() { return _modifiers_index_js__WEBPACK_IMPORTED_MODULE_11__["preventOverflow"]; }); - - - - - - - - - - - -var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_8__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_9__["default"]]; -var createPopper = /*#__PURE__*/Object(_createPopper_js__WEBPACK_IMPORTED_MODULE_0__["popperGenerator"])({ - defaultModifiers: defaultModifiers -}); // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***! - \***********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return computeAutoPlacement; }); -/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); - - - - -function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - placement = _options.placement, - boundary = _options.boundary, - rootBoundary = _options.rootBoundary, - padding = _options.padding, - flipVariations = _options.flipVariations, - _options$allowedAutoP = _options.allowedAutoPlacements, - allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_1__["placements"] : _options$allowedAutoP; - var variation = Object(_getVariation_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); - var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_1__["variationPlacements"] : _enums_js__WEBPACK_IMPORTED_MODULE_1__["variationPlacements"].filter(function (placement) { - return Object(_getVariation_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === variation; - }) : _enums_js__WEBPACK_IMPORTED_MODULE_1__["basePlacements"]; - var allowedPlacements = placements.filter(function (placement) { - return allowedAutoPlacements.indexOf(placement) >= 0; - }); - - if (allowedPlacements.length === 0) { - allowedPlacements = placements; - - if (true) { - console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); - } - } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... - - - var overflows = allowedPlacements.reduce(function (acc, placement) { - acc[placement] = Object(_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding - })[Object(_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function (a, b) { - return overflows[a] - overflows[b]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***! - \*****************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return computeOffsets; }); -/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - - - -function computeOffsets(_ref) { - var reference = _ref.reference, - element = _ref.element, - placement = _ref.placement; - var basePlacement = placement ? Object(_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null; - var variation = placement ? Object(_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null; - var commonX = reference.x + reference.width / 2 - element.width / 2; - var commonY = reference.y + reference.height / 2 - element.height / 2; - var offsets; - - switch (basePlacement) { - case _enums_js__WEBPACK_IMPORTED_MODULE_3__["top"]: - offsets = { - x: commonX, - y: reference.y - element.height - }; - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_3__["bottom"]: - offsets = { - x: commonX, - y: reference.y + reference.height - }; - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_3__["right"]: - offsets = { - x: reference.x + reference.width, - y: commonY - }; - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_3__["left"]: - offsets = { - x: reference.x - element.width, - y: commonY - }; - break; - - default: - offsets = { - x: reference.x, - y: reference.y - }; - } - - var mainAxis = basePlacement ? Object(_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(basePlacement) : null; - - if (mainAxis != null) { - var len = mainAxis === 'y' ? 'height' : 'width'; - - switch (variation) { - case _enums_js__WEBPACK_IMPORTED_MODULE_3__["start"]: - offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_3__["end"]: - offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); - break; - - default: - } - } - - return offsets; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return debounce; }); -function debounce(fn) { - var pending; - return function () { - if (!pending) { - pending = new Promise(function (resolve) { - Promise.resolve().then(function () { - pending = undefined; - resolve(fn()); - }); - }); - } - - return pending; - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***! - \*****************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return detectOverflow; }); -/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js"); -/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); -/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); -/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); - - - - - - - - - // eslint-disable-next-line import/no-unused-modules - -function detectOverflow(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - _options$placement = _options.placement, - placement = _options$placement === void 0 ? state.placement : _options$placement, - _options$boundary = _options.boundary, - boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_5__["clippingParents"] : _options$boundary, - _options$rootBoundary = _options.rootBoundary, - rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_5__["viewport"] : _options$rootBoundary, - _options$elementConte = _options.elementContext, - elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_5__["popper"] : _options$elementConte, - _options$altBoundary = _options.altBoundary, - altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, - _options$padding = _options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = Object(_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])(typeof padding !== 'number' ? padding : Object(_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_8__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_5__["basePlacements"])); - var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_5__["popper"] ? _enums_js__WEBPACK_IMPORTED_MODULE_5__["reference"] : _enums_js__WEBPACK_IMPORTED_MODULE_5__["popper"]; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = Object(_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object(_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_6__["isElement"])(element) ? element : element.contextElement || Object(_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.elements.popper), boundary, rootBoundary); - var referenceClientRect = Object(_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.elements.reference); - var popperOffsets = Object(_computeOffsets_js__WEBPACK_IMPORTED_MODULE_3__["default"])({ - reference: referenceClientRect, - element: popperRect, - strategy: 'absolute', - placement: placement - }); - var popperClientRect = Object(_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_4__["default"])(Object.assign({}, popperRect, popperOffsets)); - var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_5__["popper"] ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect - // 0 or negative = within the clipping rect - - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element - - if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_5__["popper"] && offsetData) { - var offset = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function (key) { - var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_5__["right"], _enums_js__WEBPACK_IMPORTED_MODULE_5__["bottom"]].indexOf(key) >= 0 ? 1 : -1; - var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_5__["top"], _enums_js__WEBPACK_IMPORTED_MODULE_5__["bottom"]].indexOf(key) >= 0 ? 'y' : 'x'; - overflowOffsets[key] += offset[axis] * multiply; - }); - } - - return overflowOffsets; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js": -/*!******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***! - \******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return expandToHashMap; }); -function expandToHashMap(value, keys) { - return keys.reduce(function (hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/format.js": -/*!*********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/format.js ***! - \*********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return format; }); -function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return [].concat(args).reduce(function (p, c) { - return p.replace(/%s/, c); - }, str); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js": -/*!*************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***! - \*************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getAltAxis; }); -function getAltAxis(axis) { - return axis === 'x' ? 'y' : 'x'; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***! - \*******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getBasePlacement; }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - -function getBasePlacement(placement) { - return placement.split('-')[0]; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***! - \*********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getFreshSideObject; }); -function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***! - \***************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getMainAxisFromPlacement; }); -function getMainAxisFromPlacement(placement) { - return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***! - \***********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getOppositePlacement; }); -var hash = { - left: 'right', - right: 'left', - bottom: 'top', - top: 'bottom' -}; -function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash[matched]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js": -/*!********************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***! - \********************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getOppositeVariationPlacement; }); -var hash = { - start: 'end', - end: 'start' -}; -function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function (matched) { - return hash[matched]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js": -/*!***************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***! - \***************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getVariation; }); -function getVariation(placement) { - return placement.split('-')[1]; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/math.js": -/*!*******************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/math.js ***! - \*******************************************************/ -/*! exports provided: max, min, round */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "round", function() { return round; }); -var max = Math.max; -var min = Math.min; -var round = Math.round; - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js": -/*!**************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***! - \**************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return mergeByName; }); -function mergeByName(modifiers) { - var merged = modifiers.reduce(function (merged, current) { - var existing = merged[current.name]; - merged[current.name] = existing ? Object.assign({}, existing, current, { - options: Object.assign({}, existing.options, current.options), - data: Object.assign({}, existing.data, current.data) - }) : current; - return merged; - }, {}); // IE11 does not support Object.values - - return Object.keys(merged).map(function (key) { - return merged[key]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***! - \*********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return mergePaddingObject; }); -/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); - -function mergePaddingObject(paddingObject) { - return Object.assign({}, Object(_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***! - \*****************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return orderModifiers; }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - // source: https://stackoverflow.com/questions/49875255 - -function order(modifiers) { - var map = new Map(); - var visited = new Set(); - var result = []; - modifiers.forEach(function (modifier) { - map.set(modifier.name, modifier); - }); // On visiting object, check for its dependencies and visit them recursively - - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function (dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - - if (depModifier) { - sort(depModifier); - } - } - }); - result.push(modifier); - } - - modifiers.forEach(function (modifier) { - if (!visited.has(modifier.name)) { - // check for visited object - sort(modifier); - } - }); - return result; -} - -function orderModifiers(modifiers) { - // order based on dependencies - var orderedModifiers = order(modifiers); // order based on phase - - return _enums_js__WEBPACK_IMPORTED_MODULE_0__["modifierPhases"].reduce(function (acc, phase) { - return acc.concat(orderedModifiers.filter(function (modifier) { - return modifier.phase === phase; - })); - }, []); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***! - \*******************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return rectToClientRect; }); -function rectToClientRect(rect) { - return Object.assign({}, rect, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/uniqueBy.js ***! - \***********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return uniqueBy; }); -function uniqueBy(arr, fn) { - var identifiers = new Set(); - return arr.filter(function (item) { - var identifier = fn(item); - - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; - } - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/validateModifiers.js ***! - \********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return validateModifiers; }); -/* harmony import */ var _format_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./format.js */ "./node_modules/@popperjs/core/lib/utils/format.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - -var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; -var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; -var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; -function validateModifiers(modifiers) { - modifiers.forEach(function (modifier) { - [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` - .filter(function (value, index, self) { - return self.indexOf(value) === index; - }).forEach(function (key) { - switch (key) { - case 'name': - if (typeof modifier.name !== 'string') { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); - } - - break; - - case 'enabled': - if (typeof modifier.enabled !== 'boolean') { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); - } - - break; - - case 'phase': - if (_enums_js__WEBPACK_IMPORTED_MODULE_1__["modifierPhases"].indexOf(modifier.phase) < 0) { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + _enums_js__WEBPACK_IMPORTED_MODULE_1__["modifierPhases"].join(', '), "\"" + String(modifier.phase) + "\"")); - } - - break; - - case 'fn': - if (typeof modifier.fn !== 'function') { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); - } - - break; - - case 'effect': - if (modifier.effect != null && typeof modifier.effect !== 'function') { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); - } - - break; - - case 'requires': - if (modifier.requires != null && !Array.isArray(modifier.requires)) { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); - } - - break; - - case 'requiresIfExists': - if (!Array.isArray(modifier.requiresIfExists)) { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); - } - - break; - - case 'options': - case 'data': - break; - - default: - console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { - return "\"" + s + "\""; - }).join(', ') + "; but \"" + key + "\" was provided."); - } - - modifier.requires && modifier.requires.forEach(function (requirement) { - if (modifiers.find(function (mod) { - return mod.name === requirement; - }) == null) { - console.error(Object(_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } - }); - }); - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/within.js": -/*!*********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/within.js ***! - \*********************************************************/ -/*! exports provided: within, withinMaxClamp */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "within", function() { return within; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withinMaxClamp", function() { return withinMaxClamp; }); -/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - -function within(min, value, max) { - return Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["max"])(min, Object(_math_js__WEBPACK_IMPORTED_MODULE_0__["min"])(value, max)); -} -function withinMaxClamp(min, value, max) { - var v = within(min, value, max); - return v > max ? max : v; -} - -/***/ }), - -/***/ "./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue": -/*!********************************************************************!*\ - !*** ./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue ***! - \********************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _VoerroTagsInput_vue_vue_type_template_id_d29272ca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VoerroTagsInput.vue?vue&type=template&id=d29272ca& */ "./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=template&id=d29272ca&"); -/* harmony import */ var _VoerroTagsInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VoerroTagsInput.vue?vue&type=script&lang=js& */ "./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=script&lang=js&"); -/* empty/unused harmony star reexport *//* harmony import */ var _vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); - - - - - -/* normalize component */ - -var component = Object(_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( - _VoerroTagsInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], - _VoerroTagsInput_vue_vue_type_template_id_d29272ca___WEBPACK_IMPORTED_MODULE_0__["render"], - _VoerroTagsInput_vue_vue_type_template_id_d29272ca___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], - false, - null, - null, - null - -) - -/* hot reload */ -if (false) { var api; } -component.options.__file = "node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue" -/* harmony default export */ __webpack_exports__["default"] = (component.exports); - -/***/ }), - -/***/ "./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=script&lang=js&": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=script&lang=js& ***! - \*********************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _vue_loader_lib_index_js_vue_loader_options_VoerroTagsInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../vue-loader/lib??vue-loader-options!./VoerroTagsInput.vue?vue&type=script&lang=js& */ "./node_modules/vue-loader/lib/index.js?!./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=script&lang=js&"); -/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_vue_loader_lib_index_js_vue_loader_options_VoerroTagsInput_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); - -/***/ }), - -/***/ "./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=template&id=d29272ca&": -/*!***************************************************************************************************!*\ - !*** ./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=template&id=d29272ca& ***! - \***************************************************************************************************/ -/*! exports provided: render, staticRenderFns */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _vue_loader_lib_loaders_templateLoader_js_vue_loader_options_vue_loader_lib_index_js_vue_loader_options_VoerroTagsInput_vue_vue_type_template_id_d29272ca___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../vue-loader/lib??vue-loader-options!./VoerroTagsInput.vue?vue&type=template&id=d29272ca& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue?vue&type=template&id=d29272ca&"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _vue_loader_lib_loaders_templateLoader_js_vue_loader_options_vue_loader_lib_index_js_vue_loader_options_VoerroTagsInput_vue_vue_type_template_id_d29272ca___WEBPACK_IMPORTED_MODULE_0__["render"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _vue_loader_lib_loaders_templateLoader_js_vue_loader_options_vue_loader_lib_index_js_vue_loader_options_VoerroTagsInput_vue_vue_type_template_id_d29272ca___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); - - - -/***/ }), - -/***/ "./node_modules/@voerro/vue-tagsinput/src/main.js": -/*!********************************************************!*\ - !*** ./node_modules/@voerro/vue-tagsinput/src/main.js ***! - \********************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _VoerroTagsInput_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VoerroTagsInput.vue */ "./node_modules/@voerro/vue-tagsinput/src/VoerroTagsInput.vue"); - - -window.VoerroTagsInput = _VoerroTagsInput_vue__WEBPACK_IMPORTED_MODULE_0__["default"]; - -/* harmony default export */ __webpack_exports__["default"] = (_VoerroTagsInput_vue__WEBPACK_IMPORTED_MODULE_0__["default"]); - -/***/ }), - -/***/ "./node_modules/axios/index.js": -/*!*************************************!*\ - !*** ./node_modules/axios/index.js ***! - \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js"); - -/***/ }), - -/***/ "./node_modules/axios/lib/adapters/xhr.js": -/*!************************************************!*\ - !*** ./node_modules/axios/lib/adapters/xhr.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); -var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js"); -var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js"); -var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); -var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js"); -var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js"); -var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js"); -var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js"); - -module.exports = function xhrAdapter(config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - var requestData = config.data; - var requestHeaders = config.headers; - - if (utils.isFormData(requestData)) { - delete requestHeaders['Content-Type']; // Let the browser set it - } - - var request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - var username = config.auth.username || ''; - var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); - } - - var fullPath = buildFullPath(config.baseURL, config.url); - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - // Listen for ready state - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - - // Prepare the response - var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; - var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; - var response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config: config, - request: request - }; - - settle(resolve, reject, response); - - // Clean up request - request = null; - }; - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(createError('Request aborted', config, 'ECONNABORTED', request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(createError('Network Error', config, null, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if (utils.isStandardBrowserEnv()) { - // Add xsrf header - var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? - cookies.read(config.xsrfCookieName) : - undefined; - - if (xsrfValue) { - requestHeaders[config.xsrfHeaderName] = xsrfValue; - } - } - - // Add headers to the request - if ('setRequestHeader' in request) { - utils.forEach(requestHeaders, function setRequestHeader(val, key) { - if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { - // Remove Content-Type if data is undefined - delete requestHeaders[key]; - } else { - // Otherwise add header to the request - request.setRequestHeader(key, val); - } - }); - } - - // Add withCredentials to request if needed - if (!utils.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (config.responseType) { - try { - request.responseType = config.responseType; - } catch (e) { - // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. - // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. - if (config.responseType !== 'json') { - throw e; - } - } - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', config.onDownloadProgress); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', config.onUploadProgress); - } - - if (config.cancelToken) { - // Handle cancellation - config.cancelToken.promise.then(function onCanceled(cancel) { - if (!request) { - return; - } - - request.abort(); - reject(cancel); - // Clean up request - request = null; - }); - } - - if (!requestData) { - requestData = null; - } - - // Send the request - request.send(requestData); - }); -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/axios.js": -/*!*****************************************!*\ - !*** ./node_modules/axios/lib/axios.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); -var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); -var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js"); -var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); -var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js"); - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * @return {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - var context = new Axios(defaultConfig); - var instance = bind(Axios.prototype.request, context); - - // Copy axios.prototype to instance - utils.extend(instance, Axios.prototype, context); - - // Copy context to instance - utils.extend(instance, context); - - return instance; -} - -// Create the default instance to be exported -var axios = createInstance(defaults); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios; - -// Factory for creating new instances -axios.create = function create(instanceConfig) { - return createInstance(mergeConfig(axios.defaults, instanceConfig)); -}; - -// Expose Cancel & CancelToken -axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); -axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js"); -axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; -axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js"); - -// Expose isAxiosError -axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js"); - -module.exports = axios; - -// Allow use of default import syntax in TypeScript -module.exports.default = axios; - - -/***/ }), - -/***/ "./node_modules/axios/lib/cancel/Cancel.js": -/*!*************************************************!*\ - !*** ./node_modules/axios/lib/cancel/Cancel.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * A `Cancel` is an object that is thrown when an operation is canceled. - * - * @class - * @param {string=} message The message. - */ -function Cancel(message) { - this.message = message; -} - -Cancel.prototype.toString = function toString() { - return 'Cancel' + (this.message ? ': ' + this.message : ''); -}; - -Cancel.prototype.__CANCEL__ = true; - -module.exports = Cancel; - - -/***/ }), - -/***/ "./node_modules/axios/lib/cancel/CancelToken.js": -/*!******************************************************!*\ - !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/axios/lib/cancel/Cancel.js"); - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @class - * @param {Function} executor The executor function. - */ -function CancelToken(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - var resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - var token = this; - executor(function cancel(message) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new Cancel(message); - resolvePromise(token.reason); - }); -} - -/** - * Throws a `Cancel` if cancellation has been requested. - */ -CancelToken.prototype.throwIfRequested = function throwIfRequested() { - if (this.reason) { - throw this.reason; - } -}; - -/** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ -CancelToken.source = function source() { - var cancel; - var token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token: token, - cancel: cancel - }; -}; - -module.exports = CancelToken; - - -/***/ }), - -/***/ "./node_modules/axios/lib/cancel/isCancel.js": -/*!***************************************************!*\ - !*** ./node_modules/axios/lib/cancel/isCancel.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = function isCancel(value) { - return !!(value && value.__CANCEL__); -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/Axios.js": -/*!**********************************************!*\ - !*** ./node_modules/axios/lib/core/Axios.js ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); -var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js"); -var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js"); -var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js"); -var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js"); - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - */ -function Axios(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager(), - response: new InterceptorManager() - }; -} - -/** - * Dispatch a request - * - * @param {Object} config The config specific for this request (merged with this.defaults) - */ -Axios.prototype.request = function request(config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof config === 'string') { - config = arguments[1] || {}; - config.url = arguments[0]; - } else { - config = config || {}; - } - - config = mergeConfig(this.defaults, config); - - // Set config.method - if (config.method) { - config.method = config.method.toLowerCase(); - } else if (this.defaults.method) { - config.method = this.defaults.method.toLowerCase(); - } else { - config.method = 'get'; - } - - // Hook up interceptors middleware - var chain = [dispatchRequest, undefined]; - var promise = Promise.resolve(config); - - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - chain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - chain.push(interceptor.fulfilled, interceptor.rejected); - }); - - while (chain.length) { - promise = promise.then(chain.shift(), chain.shift()); - } - - return promise; -}; - -Axios.prototype.getUri = function getUri(config) { - config = mergeConfig(this.defaults, config); - return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); -}; - -// Provide aliases for supported request methods -utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(mergeConfig(config || {}, { - method: method, - url: url, - data: (config || {}).data - })); - }; -}); - -utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, data, config) { - return this.request(mergeConfig(config || {}, { - method: method, - url: url, - data: data - })); - }; -}); - -module.exports = Axios; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/InterceptorManager.js": -/*!***********************************************************!*\ - !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); - -function InterceptorManager() { - this.handlers = []; -} - -/** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ -InterceptorManager.prototype.use = function use(fulfilled, rejected) { - this.handlers.push({ - fulfilled: fulfilled, - rejected: rejected - }); - return this.handlers.length - 1; -}; - -/** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - */ -InterceptorManager.prototype.eject = function eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } -}; - -/** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - */ -InterceptorManager.prototype.forEach = function forEach(fn) { - utils.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); -}; - -module.exports = InterceptorManager; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/buildFullPath.js": -/*!******************************************************!*\ - !*** ./node_modules/axios/lib/core/buildFullPath.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js"); -var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js"); - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * @returns {string} The combined full path - */ -module.exports = function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/createError.js": -/*!****************************************************!*\ - !*** ./node_modules/axios/lib/core/createError.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/axios/lib/core/enhanceError.js"); - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {Object} config The config. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * @returns {Error} The created error. - */ -module.exports = function createError(message, config, code, request, response) { - var error = new Error(message); - return enhanceError(error, config, code, request, response); -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/dispatchRequest.js": -/*!********************************************************!*\ - !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); -var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js"); -var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js"); -var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js"); - -/** - * Throws a `Cancel` if cancellation has been requested. - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * @returns {Promise} The Promise to be fulfilled - */ -module.exports = function dispatchRequest(config) { - throwIfCancellationRequested(config); - - // Ensure headers exist - config.headers = config.headers || {}; - - // Transform request data - config.data = transformData( - config.data, - config.headers, - config.transformRequest - ); - - // Flatten headers - config.headers = utils.merge( - config.headers.common || {}, - config.headers[config.method] || {}, - config.headers - ); - - utils.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - function cleanHeaderConfig(method) { - delete config.headers[method]; - } - ); - - var adapter = config.adapter || defaults.adapter; - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData( - response.data, - response.headers, - config.transformResponse - ); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData( - reason.response.data, - reason.response.headers, - config.transformResponse - ); - } - } - - return Promise.reject(reason); - }); -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/enhanceError.js": -/*!*****************************************************!*\ - !*** ./node_modules/axios/lib/core/enhanceError.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Update an Error with the specified config, error code, and response. - * - * @param {Error} error The error to update. - * @param {Object} config The config. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * @returns {Error} The error. - */ -module.exports = function enhanceError(error, config, code, request, response) { - error.config = config; - if (code) { - error.code = code; - } - - error.request = request; - error.response = response; - error.isAxiosError = true; - - error.toJSON = function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: this.config, - code: this.code - }; - }; - return error; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/mergeConfig.js": -/*!****************************************************!*\ - !*** ./node_modules/axios/lib/core/mergeConfig.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * @returns {Object} New object resulting from merging config2 to config1 - */ -module.exports = function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - var config = {}; - - var valueFromConfig2Keys = ['url', 'method', 'data']; - var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; - var defaultToConfig2Keys = [ - 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', - 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', - 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', - 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', - 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' - ]; - var directMergeKeys = ['validateStatus']; - - function getMergedValue(target, source) { - if (utils.isPlainObject(target) && utils.isPlainObject(source)) { - return utils.merge(target, source); - } else if (utils.isPlainObject(source)) { - return utils.merge({}, source); - } else if (utils.isArray(source)) { - return source.slice(); - } - return source; - } - - function mergeDeepProperties(prop) { - if (!utils.isUndefined(config2[prop])) { - config[prop] = getMergedValue(config1[prop], config2[prop]); - } else if (!utils.isUndefined(config1[prop])) { - config[prop] = getMergedValue(undefined, config1[prop]); - } - } - - utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { - if (!utils.isUndefined(config2[prop])) { - config[prop] = getMergedValue(undefined, config2[prop]); - } - }); - - utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); - - utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { - if (!utils.isUndefined(config2[prop])) { - config[prop] = getMergedValue(undefined, config2[prop]); - } else if (!utils.isUndefined(config1[prop])) { - config[prop] = getMergedValue(undefined, config1[prop]); - } - }); - - utils.forEach(directMergeKeys, function merge(prop) { - if (prop in config2) { - config[prop] = getMergedValue(config1[prop], config2[prop]); - } else if (prop in config1) { - config[prop] = getMergedValue(undefined, config1[prop]); - } - }); - - var axiosKeys = valueFromConfig2Keys - .concat(mergeDeepPropertiesKeys) - .concat(defaultToConfig2Keys) - .concat(directMergeKeys); - - var otherKeys = Object - .keys(config1) - .concat(Object.keys(config2)) - .filter(function filterAxiosKeys(key) { - return axiosKeys.indexOf(key) === -1; - }); - - utils.forEach(otherKeys, mergeDeepProperties); - - return config; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/settle.js": -/*!***********************************************!*\ - !*** ./node_modules/axios/lib/core/settle.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var createError = __webpack_require__(/*! ./createError */ "./node_modules/axios/lib/core/createError.js"); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - */ -module.exports = function settle(resolve, reject, response) { - var validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(createError( - 'Request failed with status code ' + response.status, - response.config, - null, - response.request, - response - )); - } -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/core/transformData.js": -/*!******************************************************!*\ - !*** ./node_modules/axios/lib/core/transformData.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); - -/** - * Transform the data for a request or a response - * - * @param {Object|String} data The data to be transformed - * @param {Array} headers The headers for the request or response - * @param {Array|Function} fns A single function or Array of functions - * @returns {*} The resulting transformed data - */ -module.exports = function transformData(data, headers, fns) { - /*eslint no-param-reassign:0*/ - utils.forEach(fns, function transform(fn) { - data = fn(data, headers); - }); - - return data; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/defaults.js": -/*!********************************************!*\ - !*** ./node_modules/axios/lib/defaults.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(process) { - -var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js"); -var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js"); - -var DEFAULT_CONTENT_TYPE = { - 'Content-Type': 'application/x-www-form-urlencoded' -}; - -function setContentTypeIfUnset(headers, value) { - if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { - headers['Content-Type'] = value; - } -} - -function getDefaultAdapter() { - var adapter; - if (typeof XMLHttpRequest !== 'undefined') { - // For browsers use XHR adapter - adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js"); - } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { - // For node use HTTP adapter - adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js"); - } - return adapter; -} - -var defaults = { - adapter: getDefaultAdapter(), - - transformRequest: [function transformRequest(data, headers) { - normalizeHeaderName(headers, 'Accept'); - normalizeHeaderName(headers, 'Content-Type'); - if (utils.isFormData(data) || - utils.isArrayBuffer(data) || - utils.isBuffer(data) || - utils.isStream(data) || - utils.isFile(data) || - utils.isBlob(data) - ) { - return data; - } - if (utils.isArrayBufferView(data)) { - return data.buffer; - } - if (utils.isURLSearchParams(data)) { - setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); - return data.toString(); - } - if (utils.isObject(data)) { - setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); - return JSON.stringify(data); - } - return data; - }], - - transformResponse: [function transformResponse(data) { - /*eslint no-param-reassign:0*/ - if (typeof data === 'string') { - try { - data = JSON.parse(data); - } catch (e) { /* Ignore */ } - } - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - } -}; - -defaults.headers = { - common: { - 'Accept': 'application/json, text/plain, */*' - } -}; - -utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { - defaults.headers[method] = {}; -}); - -utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); -}); - -module.exports = defaults; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ "./node_modules/process/browser.js"))) - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/bind.js": -/*!************************************************!*\ - !*** ./node_modules/axios/lib/helpers/bind.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = function bind(fn, thisArg) { - return function wrap() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - return fn.apply(thisArg, args); - }; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/buildURL.js": -/*!****************************************************!*\ - !*** ./node_modules/axios/lib/helpers/buildURL.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); - -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @returns {string} The formatted url - */ -module.exports = function buildURL(url, params, paramsSerializer) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - var serializedParams; - if (paramsSerializer) { - serializedParams = paramsSerializer(params); - } else if (utils.isURLSearchParams(params)) { - serializedParams = params.toString(); - } else { - var parts = []; - - utils.forEach(params, function serialize(val, key) { - if (val === null || typeof val === 'undefined') { - return; - } - - if (utils.isArray(val)) { - key = key + '[]'; - } else { - val = [val]; - } - - utils.forEach(val, function parseValue(v) { - if (utils.isDate(v)) { - v = v.toISOString(); - } else if (utils.isObject(v)) { - v = JSON.stringify(v); - } - parts.push(encode(key) + '=' + encode(v)); - }); - }); - - serializedParams = parts.join('&'); - } - - if (serializedParams) { - var hashmarkIndex = url.indexOf('#'); - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/combineURLs.js": -/*!*******************************************************!*\ - !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * @returns {string} The combined URL - */ -module.exports = function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/cookies.js": -/*!***************************************************!*\ - !*** ./node_modules/axios/lib/helpers/cookies.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); - -module.exports = ( - utils.isStandardBrowserEnv() ? - - // Standard browser envs support document.cookie - (function standardBrowserEnv() { - return { - write: function write(name, value, expires, path, domain, secure) { - var cookie = []; - cookie.push(name + '=' + encodeURIComponent(value)); - - if (utils.isNumber(expires)) { - cookie.push('expires=' + new Date(expires).toGMTString()); - } - - if (utils.isString(path)) { - cookie.push('path=' + path); - } - - if (utils.isString(domain)) { - cookie.push('domain=' + domain); - } - - if (secure === true) { - cookie.push('secure'); - } - - document.cookie = cookie.join('; '); - }, - - read: function read(name) { - var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove: function remove(name) { - this.write(name, '', Date.now() - 86400000); - } - }; - })() : - - // Non standard browser env (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return { - write: function write() {}, - read: function read() { return null; }, - remove: function remove() {} - }; - })() -); - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": -/*!*********************************************************!*\ - !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -module.exports = function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/isAxiosError.js": -/*!********************************************************!*\ - !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -module.exports = function isAxiosError(payload) { - return (typeof payload === 'object') && (payload.isAxiosError === true); -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": -/*!***********************************************************!*\ - !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); - -module.exports = ( - utils.isStandardBrowserEnv() ? - - // Standard browser envs have full support of the APIs needed to test - // whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - var msie = /(msie|trident)/i.test(navigator.userAgent); - var urlParsingNode = document.createElement('a'); - var originURL; - - /** - * Parse a URL to discover it's components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - var href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })() -); - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js": -/*!***************************************************************!*\ - !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js"); - -module.exports = function normalizeHeaderName(headers, normalizedName) { - utils.forEach(headers, function processHeader(value, name) { - if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { - headers[normalizedName] = value; - delete headers[name]; - } - }); -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/parseHeaders.js": -/*!********************************************************!*\ - !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js"); - -// Headers whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -var ignoreDuplicateOf = [ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]; - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} headers Headers needing to be parsed - * @returns {Object} Headers parsed into an object - */ -module.exports = function parseHeaders(headers) { - var parsed = {}; - var key; - var val; - var i; - - if (!headers) { return parsed; } - - utils.forEach(headers.split('\n'), function parser(line) { - i = line.indexOf(':'); - key = utils.trim(line.substr(0, i)).toLowerCase(); - val = utils.trim(line.substr(i + 1)); - - if (key) { - if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { - return; - } - if (key === 'set-cookie') { - parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - } - }); - - return parsed; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/helpers/spread.js": -/*!**************************************************!*\ - !*** ./node_modules/axios/lib/helpers/spread.js ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * @returns {Function} - */ -module.exports = function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -}; - - -/***/ }), - -/***/ "./node_modules/axios/lib/utils.js": -/*!*****************************************!*\ - !*** ./node_modules/axios/lib/utils.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js"); - -/*global toString:true*/ - -// utils is a library of generic helper functions non-specific to axios - -var toString = Object.prototype.toString; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Array, otherwise false - */ -function isArray(val) { - return toString.call(val) === '[object Array]'; -} - -/** - * Determine if a value is undefined - * - * @param {Object} val The value to test - * @returns {boolean} True if the value is undefined, otherwise false - */ -function isUndefined(val) { - return typeof val === 'undefined'; -} - -/** - * Determine if a value is a Buffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -function isArrayBuffer(val) { - return toString.call(val) === '[object ArrayBuffer]'; -} - -/** - * Determine if a value is a FormData - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an FormData, otherwise false - */ -function isFormData(val) { - return (typeof FormData !== 'undefined') && (val instanceof FormData); -} - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - var result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a String, otherwise false - */ -function isString(val) { - return typeof val === 'string'; -} - -/** - * Determine if a value is a Number - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Number, otherwise false - */ -function isNumber(val) { - return typeof val === 'number'; -} - -/** - * Determine if a value is an Object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is an Object, otherwise false - */ -function isObject(val) { - return val !== null && typeof val === 'object'; -} - -/** - * Determine if a value is a plain Object - * - * @param {Object} val The value to test - * @return {boolean} True if value is a plain Object, otherwise false - */ -function isPlainObject(val) { - if (toString.call(val) !== '[object Object]') { - return false; - } - - var prototype = Object.getPrototypeOf(val); - return prototype === null || prototype === Object.prototype; -} - -/** - * Determine if a value is a Date - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Date, otherwise false - */ -function isDate(val) { - return toString.call(val) === '[object Date]'; -} - -/** - * Determine if a value is a File - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a File, otherwise false - */ -function isFile(val) { - return toString.call(val) === '[object File]'; -} - -/** - * Determine if a value is a Blob - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Blob, otherwise false - */ -function isBlob(val) { - return toString.call(val) === '[object Blob]'; -} - -/** - * Determine if a value is a Function - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -function isFunction(val) { - return toString.call(val) === '[object Function]'; -} - -/** - * Determine if a value is a Stream - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a Stream, otherwise false - */ -function isStream(val) { - return isObject(val) && isFunction(val.pipe); -} - -/** - * Determine if a value is a URLSearchParams object - * - * @param {Object} val The value to test - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -function isURLSearchParams(val) { - return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; -} - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * @returns {String} The String freed of excess whitespace - */ -function trim(str) { - return str.replace(/^\s*/, '').replace(/\s*$/, ''); -} - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - */ -function isStandardBrowserEnv() { - if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || - navigator.product === 'NativeScript' || - navigator.product === 'NS')) { - return false; - } - return ( - typeof window !== 'undefined' && - typeof document !== 'undefined' - ); -} - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - */ -function forEach(obj, fn) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (var i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - fn.call(null, obj[key], key, obj); - } - } - } -} - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - var result = {}; - function assignValue(val, key) { - if (isPlainObject(result[key]) && isPlainObject(val)) { - result[key] = merge(result[key], val); - } else if (isPlainObject(val)) { - result[key] = merge({}, val); - } else if (isArray(val)) { - result[key] = val.slice(); - } else { - result[key] = val; - } - } - - for (var i = 0, l = arguments.length; i < l; i++) { - forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * @return {Object} The resulting value of object a - */ -function extend(a, b, thisArg) { - forEach(b, function assignValue(val, key) { - if (thisArg && typeof val === 'function') { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }); - return a; -} - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * @return {string} content value without BOM - */ -function stripBOM(content) { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -} - -module.exports = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isBuffer: isBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isObject: isObject, - isPlainObject: isPlainObject, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isBlob: isBlob, - isFunction: isFunction, - isStream: isStream, - isURLSearchParams: isURLSearchParams, - isStandardBrowserEnv: isStandardBrowserEnv, - forEach: forEach, - merge: merge, - extend: extend, - trim: trim, - stripBOM: stripBOM -}; - - -/***/ }), - -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/AutoCompleteTags.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/AutoCompleteTags.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - components: { - VoerroTagsInput: VoerroTagsInput - }, - props: { - dbexistingtags: { - type: String - }, - dbselectedtags: { - type: String - }, - elementId: { - type: String - }, - idField: { - "default": 'key', - type: String - }, - textField: { - "default": 'value', - type: String - }, - displayField: { - "default": null, - type: String - } - }, - data: function data() { - return { - selectedTags: [], - existingtags: [] - }; - }, - mounted: function mounted() { - console.log('Autocomplete Tags Component mounted.'); - this.existingtags = JSON.parse(this.dbexistingtags); - this.selectedTags = JSON.parse(this.dbselectedtags); - }, - methods: {} -}); - -/***/ }), - -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js&": -/*!*****************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/CreneauxExceptions.vue?vue&type=script&lang=js& ***! - \*****************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - mounted: function mounted() { - console.log('CreneauxExceptions Component mounted.'); - this.datas = JSON.parse(this.dbdatas); - }, - props: ['name', 'dbdatas', 'magasinId'], - data: function data() { - return { - datas: [], - response: null, - processing: false - }; - }, - watch: {}, - methods: { - newItem: function newItem() { - this.datas.push({ - date: '', - comment: '', - magasin_id: this.magasinId - }); - }, - removeItem: function removeItem(index) { - var _this = this; - - if (this.datas[index]['id'] !== undefined) { - this.processing = true; - axios.post('/bo/ajax/delete-creneaux-exception', { - id: this.datas[index]['id'] - }).then(function (response) { - _this.response = response.data; - _this.processing = false; - })["catch"](function (error) { - console.log(error); - alert('Erreur lors de la suppression.'); - this.processing = false; - }); - this.datas.splice(index, 1); - } else { - this.datas.splice(index, 1); - } - }, - saveData: function saveData() { - var _this2 = this; - - this.processing = true; - this.response = "En cours de sauvegarde..."; - axios.post('/bo/ajax/save-creneaux-exception', { - collecte_exception: this.datas - }).then(function (response) { - _this2.datas = response.data; - _this2.response = "Sauvegarde terminée !"; - _this2.processing = false; - })["catch"](function (error) { - console.log(error); - this.response = "Erreur lors de la sauvegarde."; - this.processing = false; - }); - } - } -}); - -/***/ }), - -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/Faq.vue?vue&type=script&lang=js&": -/*!**************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/Faq.vue?vue&type=script&lang=js& ***! - \**************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - mounted: function mounted() { - console.log('Faq Component mounted.'); - this.datas = JSON.parse(this.dbdatas); - }, - props: ['name', 'dbdatas'], - data: function data() { - return { - datas: [], - response: null, - processing: false - }; - }, - watch: {}, - methods: { - newItem: function newItem() { - this.datas.push({ - question: '', - answer: '' - }); - }, - removeItem: function removeItem(index) { - var _this = this; - - if (this.datas[index]['id'] !== undefined) { - this.processing = true; - axios.post('/bo/ajax/delete-faq', { - id: this.datas[index]['id'] - }).then(function (response) { - _this.response = response.data; - _this.processing = false; - })["catch"](function (error) { - console.log(error); - alert('Erreur lors de la suppression.'); - this.processing = false; - }); - this.datas.splice(index, 1); - } else { - this.datas.splice(index, 1); - } - }, - saveData: function saveData() { - var _this2 = this; - - this.processing = true; - this.response = "En cours de sauvegarde..."; - axios.post('/bo/ajax/save-faq', { - faq: this.datas - }).then(function (response) { - _this2.datas = response.data; - _this2.response = "Sauvegarde terminée !"; - _this2.processing = false; - })["catch"](function (error) { - console.log(error); - this.response = "Erreur lors de la sauvegarde."; - this.processing = false; - }); - } - } -}); - -/***/ }), - -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/ProductCard.vue?vue&type=script&lang=js&": -/*!**********************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/ProductCard.vue?vue&type=script&lang=js& ***! - \**********************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// -// -// -// -// -// -// -// -// -// -// -/* harmony default export */ __webpack_exports__["default"] = ({ - props: { - product: { - type: Object, - "default": function _default() { - return {}; - } - } - } -}); - -/***/ }), - -/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/components/ProductsCardsDnd.vue?vue&type=script&lang=js&": -/*!***************************************************************************************************************************************************************************!*\ - !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/components/ProductsCardsDnd.vue?vue&type=script&lang=js& ***! - \***************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var vue_smooth_dnd__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-smooth-dnd */ "./node_modules/vue-smooth-dnd/dist/vue-smooth-dnd.esm.js"); -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -/* harmony default export */ __webpack_exports__["default"] = ({ - name: 'Groups', - components: { - Container: vue_smooth_dnd__WEBPACK_IMPORTED_MODULE_0__["Container"], - Draggable: vue_smooth_dnd__WEBPACK_IMPORTED_MODULE_0__["Draggable"] - }, - props: { - dbexistingprods: { - type: String - }, - dbselectedprods: { - type: String - }, - elementId: { - type: String - } - }, - data: function data() { - return { - selectedProds: [], - existingProds: [], - product_id: '', - dropOptions: { - className: "ghost", - animationDuration: 300, - showOnTop: true - } - }; - }, - mounted: function mounted() { - console.log('DnD Products Component mounted.'); - this.selectedProds = JSON.parse(this.dbselectedprods); - this.existingProds = JSON.parse(this.dbexistingprods); - this.product_id = this.selectedProds.map(function (_ref) { - var id = _ref.id; - return id; - }); - }, - methods: { - onDrop: function onDrop(collection, dropResult) { - this[collection] = this.applyDrag(this[collection], dropResult); - this.product_id = this.selectedProds.map(function (_ref2) { - var id = _ref2.id; - return id; - }); - }, - getChildPayload1: function getChildPayload1(index) { - return this.existingProds[index]; - }, - getChildPayload2: function getChildPayload2(index) { - return this.selectedProds[index]; - }, - applyDrag: function applyDrag(arr, dragResult) { - var removedIndex = dragResult.removedIndex, - addedIndex = dragResult.addedIndex, - payload = dragResult.payload; - if (removedIndex === null && addedIndex === null) return arr; - - var result = _toConsumableArray(arr); - - var itemToAdd = payload; - - if (removedIndex !== null) { - itemToAdd = result.splice(removedIndex, 1)[0]; - } - - if (addedIndex !== null) { - result.splice(addedIndex, 0, itemToAdd); - } - - return result; - } - } -}); - -/***/ }), - -/***/ "./node_modules/bootstrap/dist/js/bootstrap.esm.js": -/*!*********************************************************!*\ - !*** ./node_modules/bootstrap/dist/js/bootstrap.esm.js ***! - \*********************************************************/ -/*! exports provided: Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Alert", function() { return Alert; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Button", function() { return Button; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Carousel", function() { return Carousel; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Collapse", function() { return Collapse; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return Dropdown; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Modal", function() { return Modal; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Offcanvas", function() { return Offcanvas; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Popover", function() { return Popover; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScrollSpy", function() { return ScrollSpy; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tab", function() { return Tab; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Toast", function() { return Toast; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tooltip", function() { return Tooltip; }); -/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js"); -/*! - * Bootstrap v5.1.3 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ - - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): util/index.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -const MAX_UID = 1000000; -const MILLISECONDS_MULTIPLIER = 1000; -const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) - -const toType = obj => { - if (obj === null || obj === undefined) { - return `${obj}`; - } - - return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); -}; -/** - * -------------------------------------------------------------------------- - * Public Util Api - * -------------------------------------------------------------------------- - */ - - -const getUID = prefix => { - do { - prefix += Math.floor(Math.random() * MAX_UID); - } while (document.getElementById(prefix)); - - return prefix; -}; - -const getSelector = element => { - let selector = element.getAttribute('data-bs-target'); - - if (!selector || selector === '#') { - let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, - // so everything starting with `#` or `.`. If a "real" URL is used as the selector, - // `document.querySelector` will rightfully complain it is invalid. - // See https://github.com/twbs/bootstrap/issues/32273 - - if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) { - return null; - } // Just in case some CMS puts out a full URL with the anchor appended - - - if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) { - hrefAttr = `#${hrefAttr.split('#')[1]}`; - } - - selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null; - } - - return selector; -}; - -const getSelectorFromElement = element => { - const selector = getSelector(element); - - if (selector) { - return document.querySelector(selector) ? selector : null; - } - - return null; -}; - -const getElementFromSelector = element => { - const selector = getSelector(element); - return selector ? document.querySelector(selector) : null; -}; - -const getTransitionDurationFromElement = element => { - if (!element) { - return 0; - } // Get transition-duration of the element - - - let { - transitionDuration, - transitionDelay - } = window.getComputedStyle(element); - const floatTransitionDuration = Number.parseFloat(transitionDuration); - const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found - - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0; - } // If multiple durations are defined, take the first - - - transitionDuration = transitionDuration.split(',')[0]; - transitionDelay = transitionDelay.split(',')[0]; - return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; -}; - -const triggerTransitionEnd = element => { - element.dispatchEvent(new Event(TRANSITION_END)); -}; - -const isElement = obj => { - if (!obj || typeof obj !== 'object') { - return false; - } - - if (typeof obj.jquery !== 'undefined') { - obj = obj[0]; - } - - return typeof obj.nodeType !== 'undefined'; -}; - -const getElement = obj => { - if (isElement(obj)) { - // it's a jQuery object or a node element - return obj.jquery ? obj[0] : obj; - } - - if (typeof obj === 'string' && obj.length > 0) { - return document.querySelector(obj); - } - - return null; -}; - -const typeCheckConfig = (componentName, config, configTypes) => { - Object.keys(configTypes).forEach(property => { - const expectedTypes = configTypes[property]; - const value = config[property]; - const valueType = value && isElement(value) ? 'element' : toType(value); - - if (!new RegExp(expectedTypes).test(valueType)) { - throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); - } - }); -}; - -const isVisible = element => { - if (!isElement(element) || element.getClientRects().length === 0) { - return false; - } - - return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; -}; - -const isDisabled = element => { - if (!element || element.nodeType !== Node.ELEMENT_NODE) { - return true; - } - - if (element.classList.contains('disabled')) { - return true; - } - - if (typeof element.disabled !== 'undefined') { - return element.disabled; - } - - return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; -}; - -const findShadowRoot = element => { - if (!document.documentElement.attachShadow) { - return null; - } // Can find the shadow root otherwise it'll return the document - - - if (typeof element.getRootNode === 'function') { - const root = element.getRootNode(); - return root instanceof ShadowRoot ? root : null; - } - - if (element instanceof ShadowRoot) { - return element; - } // when we don't find a shadow root - - - if (!element.parentNode) { - return null; - } - - return findShadowRoot(element.parentNode); -}; - -const noop = () => {}; -/** - * Trick to restart an element's animation - * - * @param {HTMLElement} element - * @return void - * - * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation - */ - - -const reflow = element => { - // eslint-disable-next-line no-unused-expressions - element.offsetHeight; -}; - -const getjQuery = () => { - const { - jQuery - } = window; - - if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { - return jQuery; - } - - return null; -}; - -const DOMContentLoadedCallbacks = []; - -const onDOMContentLoaded = callback => { - if (document.readyState === 'loading') { - // add listener on the first call when the document is in loading state - if (!DOMContentLoadedCallbacks.length) { - document.addEventListener('DOMContentLoaded', () => { - DOMContentLoadedCallbacks.forEach(callback => callback()); - }); - } - - DOMContentLoadedCallbacks.push(callback); - } else { - callback(); - } -}; - -const isRTL = () => document.documentElement.dir === 'rtl'; - -const defineJQueryPlugin = plugin => { - onDOMContentLoaded(() => { - const $ = getjQuery(); - /* istanbul ignore if */ - - if ($) { - const name = plugin.NAME; - const JQUERY_NO_CONFLICT = $.fn[name]; - $.fn[name] = plugin.jQueryInterface; - $.fn[name].Constructor = plugin; - - $.fn[name].noConflict = () => { - $.fn[name] = JQUERY_NO_CONFLICT; - return plugin.jQueryInterface; - }; - } - }); -}; - -const execute = callback => { - if (typeof callback === 'function') { - callback(); - } -}; - -const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { - if (!waitForTransition) { - execute(callback); - return; - } - - const durationPadding = 5; - const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; - let called = false; - - const handler = ({ - target - }) => { - if (target !== transitionElement) { - return; - } - - called = true; - transitionElement.removeEventListener(TRANSITION_END, handler); - execute(callback); - }; - - transitionElement.addEventListener(TRANSITION_END, handler); - setTimeout(() => { - if (!called) { - triggerTransitionEnd(transitionElement); - } - }, emulatedDuration); -}; -/** - * Return the previous/next element of a list. - * - * @param {array} list The list of elements - * @param activeElement The active element - * @param shouldGetNext Choose to get next or previous element - * @param isCycleAllowed - * @return {Element|elem} The proper element - */ - - -const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { - let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed - - if (index === -1) { - return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]; - } - - const listLength = list.length; - index += shouldGetNext ? 1 : -1; - - if (isCycleAllowed) { - index = (index + listLength) % listLength; - } - - return list[Math.max(0, Math.min(index, listLength - 1))]; -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): dom/event-handler.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const namespaceRegex = /[^.]*(?=\..*)\.|.*/; -const stripNameRegex = /\..*/; -const stripUidRegex = /::\d+$/; -const eventRegistry = {}; // Events storage - -let uidEvent = 1; -const customEvents = { - mouseenter: 'mouseover', - mouseleave: 'mouseout' -}; -const customEventsRegex = /^(mouseenter|mouseleave)/i; -const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); -/** - * ------------------------------------------------------------------------ - * Private methods - * ------------------------------------------------------------------------ - */ - -function getUidEvent(element, uid) { - return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; -} - -function getEvent(element) { - const uid = getUidEvent(element); - element.uidEvent = uid; - eventRegistry[uid] = eventRegistry[uid] || {}; - return eventRegistry[uid]; -} - -function bootstrapHandler(element, fn) { - return function handler(event) { - event.delegateTarget = element; - - if (handler.oneOff) { - EventHandler.off(element, event.type, fn); - } - - return fn.apply(element, [event]); - }; -} - -function bootstrapDelegationHandler(element, selector, fn) { - return function handler(event) { - const domElements = element.querySelectorAll(selector); - - for (let { - target - } = event; target && target !== this; target = target.parentNode) { - for (let i = domElements.length; i--;) { - if (domElements[i] === target) { - event.delegateTarget = target; - - if (handler.oneOff) { - EventHandler.off(element, event.type, selector, fn); - } - - return fn.apply(target, [event]); - } - } - } // To please ESLint - - - return null; - }; -} - -function findHandler(events, handler, delegationSelector = null) { - const uidEventList = Object.keys(events); - - for (let i = 0, len = uidEventList.length; i < len; i++) { - const event = events[uidEventList[i]]; - - if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { - return event; - } - } - - return null; -} - -function normalizeParams(originalTypeEvent, handler, delegationFn) { - const delegation = typeof handler === 'string'; - const originalHandler = delegation ? delegationFn : handler; - let typeEvent = getTypeEvent(originalTypeEvent); - const isNative = nativeEvents.has(typeEvent); - - if (!isNative) { - typeEvent = originalTypeEvent; - } - - return [delegation, originalHandler, typeEvent]; -} - -function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - if (!handler) { - handler = delegationFn; - delegationFn = null; - } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position - // this prevents the handler from being dispatched the same way as mouseover or mouseout does - - - if (customEventsRegex.test(originalTypeEvent)) { - const wrapFn = fn => { - return function (event) { - if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { - return fn.call(this, event); - } - }; - }; - - if (delegationFn) { - delegationFn = wrapFn(delegationFn); - } else { - handler = wrapFn(handler); - } - } - - const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn); - const events = getEvent(element); - const handlers = events[typeEvent] || (events[typeEvent] = {}); - const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); - - if (previousFn) { - previousFn.oneOff = previousFn.oneOff && oneOff; - return; - } - - const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); - const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); - fn.delegationSelector = delegation ? handler : null; - fn.originalHandler = originalHandler; - fn.oneOff = oneOff; - fn.uidEvent = uid; - handlers[uid] = fn; - element.addEventListener(typeEvent, fn, delegation); -} - -function removeHandler(element, events, typeEvent, handler, delegationSelector) { - const fn = findHandler(events[typeEvent], handler, delegationSelector); - - if (!fn) { - return; - } - - element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); - delete events[typeEvent][fn.uidEvent]; -} - -function removeNamespacedHandlers(element, events, typeEvent, namespace) { - const storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(handlerKey => { - if (handlerKey.includes(namespace)) { - const event = storeElementEvent[handlerKey]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); -} - -function getTypeEvent(event) { - // allow to get the native events from namespaced events ('click.bs.button' --> 'click') - event = event.replace(stripNameRegex, ''); - return customEvents[event] || event; -} - -const EventHandler = { - on(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, false); - }, - - one(element, event, handler, delegationFn) { - addHandler(element, event, handler, delegationFn, true); - }, - - off(element, originalTypeEvent, handler, delegationFn) { - if (typeof originalTypeEvent !== 'string' || !element) { - return; - } - - const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn); - const inNamespace = typeEvent !== originalTypeEvent; - const events = getEvent(element); - const isNamespace = originalTypeEvent.startsWith('.'); - - if (typeof originalHandler !== 'undefined') { - // Simplest case: handler is passed, remove that listener ONLY. - if (!events || !events[typeEvent]) { - return; - } - - removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); - return; - } - - if (isNamespace) { - Object.keys(events).forEach(elementEvent => { - removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); - }); - } - - const storeElementEvent = events[typeEvent] || {}; - Object.keys(storeElementEvent).forEach(keyHandlers => { - const handlerKey = keyHandlers.replace(stripUidRegex, ''); - - if (!inNamespace || originalTypeEvent.includes(handlerKey)) { - const event = storeElementEvent[keyHandlers]; - removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); - } - }); - }, - - trigger(element, event, args) { - if (typeof event !== 'string' || !element) { - return null; - } - - const $ = getjQuery(); - const typeEvent = getTypeEvent(event); - const inNamespace = event !== typeEvent; - const isNative = nativeEvents.has(typeEvent); - let jQueryEvent; - let bubbles = true; - let nativeDispatch = true; - let defaultPrevented = false; - let evt = null; - - if (inNamespace && $) { - jQueryEvent = $.Event(event, args); - $(element).trigger(jQueryEvent); - bubbles = !jQueryEvent.isPropagationStopped(); - nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); - defaultPrevented = jQueryEvent.isDefaultPrevented(); - } - - if (isNative) { - evt = document.createEvent('HTMLEvents'); - evt.initEvent(typeEvent, bubbles, true); - } else { - evt = new CustomEvent(event, { - bubbles, - cancelable: true - }); - } // merge custom information in our event - - - if (typeof args !== 'undefined') { - Object.keys(args).forEach(key => { - Object.defineProperty(evt, key, { - get() { - return args[key]; - } - - }); - }); - } - - if (defaultPrevented) { - evt.preventDefault(); - } - - if (nativeDispatch) { - element.dispatchEvent(evt); - } - - if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { - jQueryEvent.preventDefault(); - } - - return evt; - } - -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): dom/data.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ -const elementMap = new Map(); -const Data = { - set(element, key, instance) { - if (!elementMap.has(element)) { - elementMap.set(element, new Map()); - } - - const instanceMap = elementMap.get(element); // make it clear we only want one instance per element - // can be removed later when multiple key/instances are fine to be used - - if (!instanceMap.has(key) && instanceMap.size !== 0) { - // eslint-disable-next-line no-console - console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); - return; - } - - instanceMap.set(key, instance); - }, - - get(element, key) { - if (elementMap.has(element)) { - return elementMap.get(element).get(key) || null; - } - - return null; - }, - - remove(element, key) { - if (!elementMap.has(element)) { - return; - } - - const instanceMap = elementMap.get(element); - instanceMap.delete(key); // free up element references if there are no instances left for an element - - if (instanceMap.size === 0) { - elementMap.delete(element); - } - } - -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): base-component.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const VERSION = '5.1.3'; - -class BaseComponent { - constructor(element) { - element = getElement(element); - - if (!element) { - return; - } - - this._element = element; - Data.set(this._element, this.constructor.DATA_KEY, this); - } - - dispose() { - Data.remove(this._element, this.constructor.DATA_KEY); - EventHandler.off(this._element, this.constructor.EVENT_KEY); - Object.getOwnPropertyNames(this).forEach(propertyName => { - this[propertyName] = null; - }); - } - - _queueCallback(callback, element, isAnimated = true) { - executeAfterTransition(callback, element, isAnimated); - } - /** Static */ - - - static getInstance(element) { - return Data.get(getElement(element), this.DATA_KEY); - } - - static getOrCreateInstance(element, config = {}) { - return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); - } - - static get VERSION() { - return VERSION; - } - - static get NAME() { - throw new Error('You have to implement the static method "NAME", for each component!'); - } - - static get DATA_KEY() { - return `bs.${this.NAME}`; - } - - static get EVENT_KEY() { - return `.${this.DATA_KEY}`; - } - -} - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): util/component-functions.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -const enableDismissTrigger = (component, method = 'hide') => { - const clickEvent = `click.dismiss${component.EVENT_KEY}`; - const name = component.NAME; - EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault(); - } - - if (isDisabled(this)) { - return; - } - - const target = getElementFromSelector(this) || this.closest(`.${name}`); - const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method - - instance[method](); - }); -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): alert.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$d = 'alert'; -const DATA_KEY$c = 'bs.alert'; -const EVENT_KEY$c = `.${DATA_KEY$c}`; -const EVENT_CLOSE = `close${EVENT_KEY$c}`; -const EVENT_CLOSED = `closed${EVENT_KEY$c}`; -const CLASS_NAME_FADE$5 = 'fade'; -const CLASS_NAME_SHOW$8 = 'show'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Alert extends BaseComponent { - // Getters - static get NAME() { - return NAME$d; - } // Public - - - close() { - const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); - - if (closeEvent.defaultPrevented) { - return; - } - - this._element.classList.remove(CLASS_NAME_SHOW$8); - - const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); - - this._queueCallback(() => this._destroyElement(), this._element, isAnimated); - } // Private - - - _destroyElement() { - this._element.remove(); - - EventHandler.trigger(this._element, EVENT_CLOSED); - this.dispose(); - } // Static - - - static jQueryInterface(config) { - return this.each(function () { - const data = Alert.getOrCreateInstance(this); - - if (typeof config !== 'string') { - return; - } - - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError(`No method named "${config}"`); - } - - data[config](this); - }); - } - -} -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -enableDismissTrigger(Alert, 'close'); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Alert to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Alert); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): button.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$c = 'button'; -const DATA_KEY$b = 'bs.button'; -const EVENT_KEY$b = `.${DATA_KEY$b}`; -const DATA_API_KEY$7 = '.data-api'; -const CLASS_NAME_ACTIVE$3 = 'active'; -const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; -const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Button extends BaseComponent { - // Getters - static get NAME() { - return NAME$c; - } // Public - - - toggle() { - // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method - this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); - } // Static - - - static jQueryInterface(config) { - return this.each(function () { - const data = Button.getOrCreateInstance(this); - - if (config === 'toggle') { - data[config](); - } - }); - } - -} -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { - event.preventDefault(); - const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); - const data = Button.getOrCreateInstance(button); - data.toggle(); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Button to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Button); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): dom/manipulator.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -function normalizeData(val) { - if (val === 'true') { - return true; - } - - if (val === 'false') { - return false; - } - - if (val === Number(val).toString()) { - return Number(val); - } - - if (val === '' || val === 'null') { - return null; - } - - return val; -} - -function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); -} - -const Manipulator = { - setDataAttribute(element, key, value) { - element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); - }, - - removeDataAttribute(element, key) { - element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); - }, - - getDataAttributes(element) { - if (!element) { - return {}; - } - - const attributes = {}; - Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => { - let pureKey = key.replace(/^bs/, ''); - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); - attributes[pureKey] = normalizeData(element.dataset[key]); - }); - return attributes; - }, - - getDataAttribute(element, key) { - return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); - }, - - offset(element) { - const rect = element.getBoundingClientRect(); - return { - top: rect.top + window.pageYOffset, - left: rect.left + window.pageXOffset - }; - }, - - position(element) { - return { - top: element.offsetTop, - left: element.offsetLeft - }; - } - -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): dom/selector-engine.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -const NODE_TEXT = 3; -const SelectorEngine = { - find(selector, element = document.documentElement) { - return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); - }, - - findOne(selector, element = document.documentElement) { - return Element.prototype.querySelector.call(element, selector); - }, - - children(element, selector) { - return [].concat(...element.children).filter(child => child.matches(selector)); - }, - - parents(element, selector) { - const parents = []; - let ancestor = element.parentNode; - - while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { - if (ancestor.matches(selector)) { - parents.push(ancestor); - } - - ancestor = ancestor.parentNode; - } - - return parents; - }, - - prev(element, selector) { - let previous = element.previousElementSibling; - - while (previous) { - if (previous.matches(selector)) { - return [previous]; - } - - previous = previous.previousElementSibling; - } - - return []; - }, - - next(element, selector) { - let next = element.nextElementSibling; - - while (next) { - if (next.matches(selector)) { - return [next]; - } - - next = next.nextElementSibling; - } - - return []; - }, - - focusableChildren(element) { - const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', '); - return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); - } - -}; - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): carousel.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$b = 'carousel'; -const DATA_KEY$a = 'bs.carousel'; -const EVENT_KEY$a = `.${DATA_KEY$a}`; -const DATA_API_KEY$6 = '.data-api'; -const ARROW_LEFT_KEY = 'ArrowLeft'; -const ARROW_RIGHT_KEY = 'ArrowRight'; -const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch - -const SWIPE_THRESHOLD = 40; -const Default$a = { - interval: 5000, - keyboard: true, - slide: false, - pause: 'hover', - wrap: true, - touch: true -}; -const DefaultType$a = { - interval: '(number|boolean)', - keyboard: 'boolean', - slide: '(boolean|string)', - pause: '(string|boolean)', - wrap: 'boolean', - touch: 'boolean' -}; -const ORDER_NEXT = 'next'; -const ORDER_PREV = 'prev'; -const DIRECTION_LEFT = 'left'; -const DIRECTION_RIGHT = 'right'; -const KEY_TO_DIRECTION = { - [ARROW_LEFT_KEY]: DIRECTION_RIGHT, - [ARROW_RIGHT_KEY]: DIRECTION_LEFT -}; -const EVENT_SLIDE = `slide${EVENT_KEY$a}`; -const EVENT_SLID = `slid${EVENT_KEY$a}`; -const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`; -const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`; -const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`; -const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`; -const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`; -const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`; -const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`; -const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`; -const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`; -const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`; -const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; -const CLASS_NAME_CAROUSEL = 'carousel'; -const CLASS_NAME_ACTIVE$2 = 'active'; -const CLASS_NAME_SLIDE = 'slide'; -const CLASS_NAME_END = 'carousel-item-end'; -const CLASS_NAME_START = 'carousel-item-start'; -const CLASS_NAME_NEXT = 'carousel-item-next'; -const CLASS_NAME_PREV = 'carousel-item-prev'; -const CLASS_NAME_POINTER_EVENT = 'pointer-event'; -const SELECTOR_ACTIVE$1 = '.active'; -const SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; -const SELECTOR_ITEM = '.carousel-item'; -const SELECTOR_ITEM_IMG = '.carousel-item img'; -const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; -const SELECTOR_INDICATORS = '.carousel-indicators'; -const SELECTOR_INDICATOR = '[data-bs-target]'; -const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; -const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; -const POINTER_TYPE_TOUCH = 'touch'; -const POINTER_TYPE_PEN = 'pen'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Carousel extends BaseComponent { - constructor(element, config) { - super(element); - this._items = null; - this._interval = null; - this._activeElement = null; - this._isPaused = false; - this._isSliding = false; - this.touchTimeout = null; - this.touchStartX = 0; - this.touchDeltaX = 0; - this._config = this._getConfig(config); - this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); - this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - this._pointerEvent = Boolean(window.PointerEvent); - - this._addEventListeners(); - } // Getters - - - static get Default() { - return Default$a; - } - - static get NAME() { - return NAME$b; - } // Public - - - next() { - this._slide(ORDER_NEXT); - } - - nextWhenVisible() { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && isVisible(this._element)) { - this.next(); - } - } - - prev() { - this._slide(ORDER_PREV); - } - - pause(event) { - if (!event) { - this._isPaused = true; - } - - if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) { - triggerTransitionEnd(this._element); - this.cycle(true); - } - - clearInterval(this._interval); - this._interval = null; - } - - cycle(event) { - if (!event) { - this._isPaused = false; - } - - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } - - if (this._config && this._config.interval && !this._isPaused) { - this._updateInterval(); - - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } - } - - to(index) { - this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - const activeIndex = this._getItemIndex(this._activeElement); - - if (index > this._items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); - return; - } - - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } - - const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; - - this._slide(order, this._items[index]); - } // Private - - - _getConfig(config) { - config = { ...Default$a, - ...Manipulator.getDataAttributes(this._element), - ...(typeof config === 'object' ? config : {}) - }; - typeCheckConfig(NAME$b, config, DefaultType$a); - return config; - } - - _handleSwipe() { - const absDeltax = Math.abs(this.touchDeltaX); - - if (absDeltax <= SWIPE_THRESHOLD) { - return; - } - - const direction = absDeltax / this.touchDeltaX; - this.touchDeltaX = 0; - - if (!direction) { - return; - } - - this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT); - } - - _addEventListeners() { - if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); - } - - if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event)); - EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event)); - } - - if (this._config.touch && this._touchSupported) { - this._addTouchEventListeners(); - } - } - - _addTouchEventListeners() { - const hasPointerPenTouch = event => { - return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); - }; - - const start = event => { - if (hasPointerPenTouch(event)) { - this.touchStartX = event.clientX; - } else if (!this._pointerEvent) { - this.touchStartX = event.touches[0].clientX; - } - }; - - const move = event => { - // ensure swiping with one touch and not pinching - this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX; - }; - - const end = event => { - if (hasPointerPenTouch(event)) { - this.touchDeltaX = event.clientX - this.touchStartX; - } - - this._handleSwipe(); - - if (this._config.pause === 'hover') { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - this.pause(); - - if (this.touchTimeout) { - clearTimeout(this.touchTimeout); - } - - this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval); - } - }; - - SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => { - EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault()); - }); - - if (this._pointerEvent) { - EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event)); - EventHandler.on(this._element, EVENT_POINTERUP, event => end(event)); - - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event)); - EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event)); - EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event)); - } - } - - _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - const direction = KEY_TO_DIRECTION[event.key]; - - if (direction) { - event.preventDefault(); - - this._slide(direction); - } - } - - _getItemIndex(element) { - this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : []; - return this._items.indexOf(element); - } - - _getItemByOrder(order, activeElement) { - const isNext = order === ORDER_NEXT; - return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap); - } - - _triggerSlideEvent(relatedTarget, eventDirectionName) { - const targetIndex = this._getItemIndex(relatedTarget); - - const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); - - return EventHandler.trigger(this._element, EVENT_SLIDE, { - relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex - }); - } - - _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement); - activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); - activeIndicator.removeAttribute('aria-current'); - const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement); - - for (let i = 0; i < indicators.length; i++) { - if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) { - indicators[i].classList.add(CLASS_NAME_ACTIVE$2); - indicators[i].setAttribute('aria-current', 'true'); - break; - } - } - } - } - - _updateInterval() { - const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - if (!element) { - return; - } - - const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); - - if (elementInterval) { - this._config.defaultInterval = this._config.defaultInterval || this._config.interval; - this._config.interval = elementInterval; - } else { - this._config.interval = this._config.defaultInterval || this._config.interval; - } - } - - _slide(directionOrOrder, element) { - const order = this._directionToOrder(directionOrOrder); - - const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - - const activeElementIndex = this._getItemIndex(activeElement); - - const nextElement = element || this._getItemByOrder(order, activeElement); - - const nextElementIndex = this._getItemIndex(nextElement); - - const isCycling = Boolean(this._interval); - const isNext = order === ORDER_NEXT; - const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; - const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; - - const eventDirectionName = this._orderToDirection(order); - - if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) { - this._isSliding = false; - return; - } - - if (this._isSliding) { - return; - } - - const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - - if (slideEvent.defaultPrevented) { - return; - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; - } - - this._isSliding = true; - - if (isCycling) { - this.pause(); - } - - this._setActiveIndicatorElement(nextElement); - - this._activeElement = nextElement; - - const triggerSlidEvent = () => { - EventHandler.trigger(this._element, EVENT_SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - }; - - if (this._element.classList.contains(CLASS_NAME_SLIDE)) { - nextElement.classList.add(orderClassName); - reflow(nextElement); - activeElement.classList.add(directionalClassName); - nextElement.classList.add(directionalClassName); - - const completeCallBack = () => { - nextElement.classList.remove(directionalClassName, orderClassName); - nextElement.classList.add(CLASS_NAME_ACTIVE$2); - activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); - this._isSliding = false; - setTimeout(triggerSlidEvent, 0); - }; - - this._queueCallback(completeCallBack, activeElement, true); - } else { - activeElement.classList.remove(CLASS_NAME_ACTIVE$2); - nextElement.classList.add(CLASS_NAME_ACTIVE$2); - this._isSliding = false; - triggerSlidEvent(); - } - - if (isCycling) { - this.cycle(); - } - } - - _directionToOrder(direction) { - if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) { - return direction; - } - - if (isRTL()) { - return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; - } - - return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; - } - - _orderToDirection(order) { - if (![ORDER_NEXT, ORDER_PREV].includes(order)) { - return order; - } - - if (isRTL()) { - return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - - return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; - } // Static - - - static carouselInterface(element, config) { - const data = Carousel.getOrCreateInstance(element, config); - let { - _config - } = data; - - if (typeof config === 'object') { - _config = { ..._config, - ...config - }; - } - - const action = typeof config === 'string' ? config : _config.slide; - - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError(`No method named "${action}"`); - } - - data[action](); - } else if (_config.interval && _config.ride) { - data.pause(); - data.cycle(); - } - } - - static jQueryInterface(config) { - return this.each(function () { - Carousel.carouselInterface(this, config); - }); - } - - static dataApiClickHandler(event) { - const target = getElementFromSelector(this); - - if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { - return; - } - - const config = { ...Manipulator.getDataAttributes(target), - ...Manipulator.getDataAttributes(this) - }; - const slideIndex = this.getAttribute('data-bs-slide-to'); - - if (slideIndex) { - config.interval = false; - } - - Carousel.carouselInterface(target, config); - - if (slideIndex) { - Carousel.getInstance(target).to(slideIndex); - } - - event.preventDefault(); - } - -} -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); -EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { - const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); - - for (let i = 0, len = carousels.length; i < len; i++) { - Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i])); - } -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Carousel to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Carousel); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): collapse.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$a = 'collapse'; -const DATA_KEY$9 = 'bs.collapse'; -const EVENT_KEY$9 = `.${DATA_KEY$9}`; -const DATA_API_KEY$5 = '.data-api'; -const Default$9 = { - toggle: true, - parent: null -}; -const DefaultType$9 = { - toggle: 'boolean', - parent: '(null|element)' -}; -const EVENT_SHOW$5 = `show${EVENT_KEY$9}`; -const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`; -const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`; -const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`; -const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`; -const CLASS_NAME_SHOW$7 = 'show'; -const CLASS_NAME_COLLAPSE = 'collapse'; -const CLASS_NAME_COLLAPSING = 'collapsing'; -const CLASS_NAME_COLLAPSED = 'collapsed'; -const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; -const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; -const WIDTH = 'width'; -const HEIGHT = 'height'; -const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; -const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Collapse extends BaseComponent { - constructor(element, config) { - super(element); - this._isTransitioning = false; - this._config = this._getConfig(config); - this._triggerArray = []; - const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); - - for (let i = 0, len = toggleList.length; i < len; i++) { - const elem = toggleList[i]; - const selector = getSelectorFromElement(elem); - const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element); - - if (selector !== null && filterElement.length) { - this._selector = selector; - - this._triggerArray.push(elem); - } - } - - this._initializeChildren(); - - if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); - } - - if (this._config.toggle) { - this.toggle(); - } - } // Getters - - - static get Default() { - return Default$9; - } - - static get NAME() { - return NAME$a; - } // Public - - - toggle() { - if (this._isShown()) { - this.hide(); - } else { - this.show(); - } - } - - show() { - if (this._isTransitioning || this._isShown()) { - return; - } - - let actives = []; - let activesData; - - if (this._config.parent) { - const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); - actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth - } - - const container = SelectorEngine.findOne(this._selector); - - if (actives.length) { - const tempActiveData = actives.find(elem => container !== elem); - activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null; - - if (activesData && activesData._isTransitioning) { - return; - } - } - - const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5); - - if (startEvent.defaultPrevented) { - return; - } - - actives.forEach(elemActive => { - if (container !== elemActive) { - Collapse.getOrCreateInstance(elemActive, { - toggle: false - }).hide(); - } - - if (!activesData) { - Data.set(elemActive, DATA_KEY$9, null); - } - }); - - const dimension = this._getDimension(); - - this._element.classList.remove(CLASS_NAME_COLLAPSE); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.style[dimension] = 0; - - this._addAriaAndCollapsedClass(this._triggerArray, true); - - this._isTransitioning = true; - - const complete = () => { - this._isTransitioning = false; - - this._element.classList.remove(CLASS_NAME_COLLAPSING); - - this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - - this._element.style[dimension] = ''; - EventHandler.trigger(this._element, EVENT_SHOWN$5); - }; - - const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - const scrollSize = `scroll${capitalizedDimension}`; - - this._queueCallback(complete, this._element, true); - - this._element.style[dimension] = `${this._element[scrollSize]}px`; - } - - hide() { - if (this._isTransitioning || !this._isShown()) { - return; - } - - const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5); - - if (startEvent.defaultPrevented) { - return; - } - - const dimension = this._getDimension(); - - this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; - reflow(this._element); - - this._element.classList.add(CLASS_NAME_COLLAPSING); - - this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - - const triggerArrayLength = this._triggerArray.length; - - for (let i = 0; i < triggerArrayLength; i++) { - const trigger = this._triggerArray[i]; - const elem = getElementFromSelector(trigger); - - if (elem && !this._isShown(elem)) { - this._addAriaAndCollapsedClass([trigger], false); - } - } - - this._isTransitioning = true; - - const complete = () => { - this._isTransitioning = false; - - this._element.classList.remove(CLASS_NAME_COLLAPSING); - - this._element.classList.add(CLASS_NAME_COLLAPSE); - - EventHandler.trigger(this._element, EVENT_HIDDEN$5); - }; - - this._element.style[dimension] = ''; - - this._queueCallback(complete, this._element, true); - } - - _isShown(element = this._element) { - return element.classList.contains(CLASS_NAME_SHOW$7); - } // Private - - - _getConfig(config) { - config = { ...Default$9, - ...Manipulator.getDataAttributes(this._element), - ...config - }; - config.toggle = Boolean(config.toggle); // Coerce string values - - config.parent = getElement(config.parent); - typeCheckConfig(NAME$a, config, DefaultType$9); - return config; - } - - _getDimension() { - return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; - } - - _initializeChildren() { - if (!this._config.parent) { - return; - } - - const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); - SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => { - const selected = getElementFromSelector(element); - - if (selected) { - this._addAriaAndCollapsedClass([element], this._isShown(selected)); - } - }); - } - - _addAriaAndCollapsedClass(triggerArray, isOpen) { - if (!triggerArray.length) { - return; - } - - triggerArray.forEach(elem => { - if (isOpen) { - elem.classList.remove(CLASS_NAME_COLLAPSED); - } else { - elem.classList.add(CLASS_NAME_COLLAPSED); - } - - elem.setAttribute('aria-expanded', isOpen); - }); - } // Static - - - static jQueryInterface(config) { - return this.each(function () { - const _config = {}; - - if (typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } - - const data = Collapse.getOrCreateInstance(this, _config); - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`); - } - - data[config](); - } - }); - } - -} -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { - event.preventDefault(); - } - - const selector = getSelectorFromElement(this); - const selectorElements = SelectorEngine.find(selector); - selectorElements.forEach(element => { - Collapse.getOrCreateInstance(element, { - toggle: false - }).toggle(); - }); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Collapse to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Collapse); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): dropdown.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$9 = 'dropdown'; -const DATA_KEY$8 = 'bs.dropdown'; -const EVENT_KEY$8 = `.${DATA_KEY$8}`; -const DATA_API_KEY$4 = '.data-api'; -const ESCAPE_KEY$2 = 'Escape'; -const SPACE_KEY = 'Space'; -const TAB_KEY$1 = 'Tab'; -const ARROW_UP_KEY = 'ArrowUp'; -const ARROW_DOWN_KEY = 'ArrowDown'; -const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button - -const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`); -const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`; -const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`; -const EVENT_SHOW$4 = `show${EVENT_KEY$8}`; -const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`; -const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`; -const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`; -const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`; -const CLASS_NAME_SHOW$6 = 'show'; -const CLASS_NAME_DROPUP = 'dropup'; -const CLASS_NAME_DROPEND = 'dropend'; -const CLASS_NAME_DROPSTART = 'dropstart'; -const CLASS_NAME_NAVBAR = 'navbar'; -const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]'; -const SELECTOR_MENU = '.dropdown-menu'; -const SELECTOR_NAVBAR_NAV = '.navbar-nav'; -const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; -const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; -const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; -const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; -const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; -const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; -const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; -const Default$8 = { - offset: [0, 2], - boundary: 'clippingParents', - reference: 'toggle', - display: 'dynamic', - popperConfig: null, - autoClose: true -}; -const DefaultType$8 = { - offset: '(array|string|function)', - boundary: '(string|element)', - reference: '(string|element|object)', - display: 'string', - popperConfig: '(null|object|function)', - autoClose: '(boolean|string)' -}; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Dropdown extends BaseComponent { - constructor(element, config) { - super(element); - this._popper = null; - this._config = this._getConfig(config); - this._menu = this._getMenuElement(); - this._inNavbar = this._detectNavbar(); - } // Getters - - - static get Default() { - return Default$8; - } - - static get DefaultType() { - return DefaultType$8; - } - - static get NAME() { - return NAME$9; - } // Public - - - toggle() { - return this._isShown() ? this.hide() : this.show(); - } - - show() { - if (isDisabled(this._element) || this._isShown(this._menu)) { - return; - } - - const relatedTarget = { - relatedTarget: this._element - }; - const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget); - - if (showEvent.defaultPrevented) { - return; - } - - const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar - - if (this._inNavbar) { - Manipulator.setDataAttribute(this._menu, 'popper', 'none'); - } else { - this._createPopper(parent); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) { - [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop)); - } - - this._element.focus(); - - this._element.setAttribute('aria-expanded', true); - - this._menu.classList.add(CLASS_NAME_SHOW$6); - - this._element.classList.add(CLASS_NAME_SHOW$6); - - EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget); - } - - hide() { - if (isDisabled(this._element) || !this._isShown(this._menu)) { - return; - } - - const relatedTarget = { - relatedTarget: this._element - }; - - this._completeHide(relatedTarget); - } - - dispose() { - if (this._popper) { - this._popper.destroy(); - } - - super.dispose(); - } - - update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper) { - this._popper.update(); - } - } // Private - - - _completeHide(relatedTarget) { - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget); - - if (hideEvent.defaultPrevented) { - return; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - - if ('ontouchstart' in document.documentElement) { - [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop)); - } - - if (this._popper) { - this._popper.destroy(); - } - - this._menu.classList.remove(CLASS_NAME_SHOW$6); - - this._element.classList.remove(CLASS_NAME_SHOW$6); - - this._element.setAttribute('aria-expanded', 'false'); - - Manipulator.removeDataAttribute(this._menu, 'popper'); - EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget); - } - - _getConfig(config) { - config = { ...this.constructor.Default, - ...Manipulator.getDataAttributes(this._element), - ...config - }; - typeCheckConfig(NAME$9, config, this.constructor.DefaultType); - - if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { - // Popper virtual elements require a getBoundingClientRect method - throw new TypeError(`${NAME$9.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); - } - - return config; - } - - _createPopper(parent) { - if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); - } - - let referenceElement = this._element; - - if (this._config.reference === 'parent') { - referenceElement = parent; - } else if (isElement(this._config.reference)) { - referenceElement = getElement(this._config.reference); - } else if (typeof this._config.reference === 'object') { - referenceElement = this._config.reference; - } - - const popperConfig = this._getPopperConfig(); - - const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false); - this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_0__["createPopper"](referenceElement, this._menu, popperConfig); - - if (isDisplayStatic) { - Manipulator.setDataAttribute(this._menu, 'popper', 'static'); - } - } - - _isShown(element = this._element) { - return element.classList.contains(CLASS_NAME_SHOW$6); - } - - _getMenuElement() { - return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; - } - - _getPlacement() { - const parentDropdown = this._element.parentNode; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { - return PLACEMENT_RIGHT; - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { - return PLACEMENT_LEFT; - } // We need to trim the value because custom properties can also include spaces - - - const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { - return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; - } - - return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; - } - - _detectNavbar() { - return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null; - } - - _getOffset() { - const { - offset - } = this._config; - - if (typeof offset === 'string') { - return offset.split(',').map(val => Number.parseInt(val, 10)); - } - - if (typeof offset === 'function') { - return popperData => offset(popperData, this._element); - } - - return offset; - } - - _getPopperConfig() { - const defaultBsPopperConfig = { - placement: this._getPlacement(), - modifiers: [{ - name: 'preventOverflow', - options: { - boundary: this._config.boundary - } - }, { - name: 'offset', - options: { - offset: this._getOffset() - } - }] - }; // Disable Popper if we have a static display - - if (this._config.display === 'static') { - defaultBsPopperConfig.modifiers = [{ - name: 'applyStyles', - enabled: false - }]; - } - - return { ...defaultBsPopperConfig, - ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) - }; - } - - _selectMenuItem({ - key, - target - }) { - const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible); - - if (!items.length) { - return; - } // if target isn't included in items (e.g. when expanding the dropdown) - // allow cycling to get the last item in case key equals ARROW_UP_KEY - - - getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus(); - } // Static - - - static jQueryInterface(config) { - return this.each(function () { - const data = Dropdown.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`); - } - - data[config](); - }); - } - - static clearMenus(event) { - if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) { - return; - } - - const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3); - - for (let i = 0, len = toggles.length; i < len; i++) { - const context = Dropdown.getInstance(toggles[i]); - - if (!context || context._config.autoClose === false) { - continue; - } - - if (!context._isShown()) { - continue; - } - - const relatedTarget = { - relatedTarget: context._element - }; - - if (event) { - const composedPath = event.composedPath(); - const isMenuTarget = composedPath.includes(context._menu); - - if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { - continue; - } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu - - - if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { - continue; - } - - if (event.type === 'click') { - relatedTarget.clickEvent = event; - } - } - - context._completeHide(relatedTarget); - } - } - - static getParentFromElement(element) { - return getElementFromSelector(element) || element.parentNode; - } - - static dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { - return; - } - - const isActive = this.classList.contains(CLASS_NAME_SHOW$6); - - if (!isActive && event.key === ESCAPE_KEY$2) { - return; - } - - event.preventDefault(); - event.stopPropagation(); - - if (isDisabled(this)) { - return; - } - - const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0]; - const instance = Dropdown.getOrCreateInstance(getToggleButton); - - if (event.key === ESCAPE_KEY$2) { - instance.hide(); - return; - } - - if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) { - if (!isActive) { - instance.show(); - } - - instance._selectMenuItem(event); - - return; - } - - if (!isActive || event.key === SPACE_KEY) { - Dropdown.clearMenus(); - } - } - -} -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); -EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); -EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); -EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); -EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { - event.preventDefault(); - Dropdown.getOrCreateInstance(this).toggle(); -}); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Dropdown to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Dropdown); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): util/scrollBar.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; -const SELECTOR_STICKY_CONTENT = '.sticky-top'; - -class ScrollBarHelper { - constructor() { - this._element = document.body; - } - - getWidth() { - // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes - const documentWidth = document.documentElement.clientWidth; - return Math.abs(window.innerWidth - documentWidth); - } - - hide() { - const width = this.getWidth(); - - this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width - - - this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth - - - this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width); - - this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width); - } - - _disableOverFlow() { - this._saveInitialAttribute(this._element, 'overflow'); - - this._element.style.overflow = 'hidden'; - } - - _setElementAttributes(selector, styleProp, callback) { - const scrollbarWidth = this.getWidth(); - - const manipulationCallBack = element => { - if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { - return; - } - - this._saveInitialAttribute(element, styleProp); - - const calculatedValue = window.getComputedStyle(element)[styleProp]; - element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`; - }; - - this._applyManipulationCallback(selector, manipulationCallBack); - } - - reset() { - this._resetElementAttributes(this._element, 'overflow'); - - this._resetElementAttributes(this._element, 'paddingRight'); - - this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); - - this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); - } - - _saveInitialAttribute(element, styleProp) { - const actualValue = element.style[styleProp]; - - if (actualValue) { - Manipulator.setDataAttribute(element, styleProp, actualValue); - } - } - - _resetElementAttributes(selector, styleProp) { - const manipulationCallBack = element => { - const value = Manipulator.getDataAttribute(element, styleProp); - - if (typeof value === 'undefined') { - element.style.removeProperty(styleProp); - } else { - Manipulator.removeDataAttribute(element, styleProp); - element.style[styleProp] = value; - } - }; - - this._applyManipulationCallback(selector, manipulationCallBack); - } - - _applyManipulationCallback(selector, callBack) { - if (isElement(selector)) { - callBack(selector); - } else { - SelectorEngine.find(selector, this._element).forEach(callBack); - } - } - - isOverflowing() { - return this.getWidth() > 0; - } - -} - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): util/backdrop.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -const Default$7 = { - className: 'modal-backdrop', - isVisible: true, - // if false, we use the backdrop helper without adding any element to the dom - isAnimated: false, - rootElement: 'body', - // give the choice to place backdrop under different elements - clickCallback: null -}; -const DefaultType$7 = { - className: 'string', - isVisible: 'boolean', - isAnimated: 'boolean', - rootElement: '(element|string)', - clickCallback: '(function|null)' -}; -const NAME$8 = 'backdrop'; -const CLASS_NAME_FADE$4 = 'fade'; -const CLASS_NAME_SHOW$5 = 'show'; -const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`; - -class Backdrop { - constructor(config) { - this._config = this._getConfig(config); - this._isAppended = false; - this._element = null; - } - - show(callback) { - if (!this._config.isVisible) { - execute(callback); - return; - } - - this._append(); - - if (this._config.isAnimated) { - reflow(this._getElement()); - } - - this._getElement().classList.add(CLASS_NAME_SHOW$5); - - this._emulateAnimation(() => { - execute(callback); - }); - } - - hide(callback) { - if (!this._config.isVisible) { - execute(callback); - return; - } - - this._getElement().classList.remove(CLASS_NAME_SHOW$5); - - this._emulateAnimation(() => { - this.dispose(); - execute(callback); - }); - } // Private - - - _getElement() { - if (!this._element) { - const backdrop = document.createElement('div'); - backdrop.className = this._config.className; - - if (this._config.isAnimated) { - backdrop.classList.add(CLASS_NAME_FADE$4); - } - - this._element = backdrop; - } - - return this._element; - } - - _getConfig(config) { - config = { ...Default$7, - ...(typeof config === 'object' ? config : {}) - }; // use getElement() with the default "body" to get a fresh Element on each instantiation - - config.rootElement = getElement(config.rootElement); - typeCheckConfig(NAME$8, config, DefaultType$7); - return config; - } - - _append() { - if (this._isAppended) { - return; - } - - this._config.rootElement.append(this._getElement()); - - EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => { - execute(this._config.clickCallback); - }); - this._isAppended = true; - } - - dispose() { - if (!this._isAppended) { - return; - } - - EventHandler.off(this._element, EVENT_MOUSEDOWN); - - this._element.remove(); - - this._isAppended = false; - } - - _emulateAnimation(callback) { - executeAfterTransition(callback, this._getElement(), this._config.isAnimated); - } - -} - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): util/focustrap.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -const Default$6 = { - trapElement: null, - // The element to trap focus inside of - autofocus: true -}; -const DefaultType$6 = { - trapElement: 'element', - autofocus: 'boolean' -}; -const NAME$7 = 'focustrap'; -const DATA_KEY$7 = 'bs.focustrap'; -const EVENT_KEY$7 = `.${DATA_KEY$7}`; -const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`; -const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`; -const TAB_KEY = 'Tab'; -const TAB_NAV_FORWARD = 'forward'; -const TAB_NAV_BACKWARD = 'backward'; - -class FocusTrap { - constructor(config) { - this._config = this._getConfig(config); - this._isActive = false; - this._lastTabNavDirection = null; - } - - activate() { - const { - trapElement, - autofocus - } = this._config; - - if (this._isActive) { - return; - } - - if (autofocus) { - trapElement.focus(); - } - - EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop - - EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event)); - EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); - this._isActive = true; - } - - deactivate() { - if (!this._isActive) { - return; - } - - this._isActive = false; - EventHandler.off(document, EVENT_KEY$7); - } // Private - - - _handleFocusin(event) { - const { - target - } = event; - const { - trapElement - } = this._config; - - if (target === document || target === trapElement || trapElement.contains(target)) { - return; - } - - const elements = SelectorEngine.focusableChildren(trapElement); - - if (elements.length === 0) { - trapElement.focus(); - } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { - elements[elements.length - 1].focus(); - } else { - elements[0].focus(); - } - } - - _handleKeydown(event) { - if (event.key !== TAB_KEY) { - return; - } - - this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; - } - - _getConfig(config) { - config = { ...Default$6, - ...(typeof config === 'object' ? config : {}) - }; - typeCheckConfig(NAME$7, config, DefaultType$6); - return config; - } - -} - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): modal.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$6 = 'modal'; -const DATA_KEY$6 = 'bs.modal'; -const EVENT_KEY$6 = `.${DATA_KEY$6}`; -const DATA_API_KEY$3 = '.data-api'; -const ESCAPE_KEY$1 = 'Escape'; -const Default$5 = { - backdrop: true, - keyboard: true, - focus: true -}; -const DefaultType$5 = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - focus: 'boolean' -}; -const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`; -const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`; -const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`; -const EVENT_SHOW$3 = `show${EVENT_KEY$6}`; -const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`; -const EVENT_RESIZE = `resize${EVENT_KEY$6}`; -const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`; -const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`; -const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`; -const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`; -const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; -const CLASS_NAME_OPEN = 'modal-open'; -const CLASS_NAME_FADE$3 = 'fade'; -const CLASS_NAME_SHOW$4 = 'show'; -const CLASS_NAME_STATIC = 'modal-static'; -const OPEN_SELECTOR$1 = '.modal.show'; -const SELECTOR_DIALOG = '.modal-dialog'; -const SELECTOR_MODAL_BODY = '.modal-body'; -const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Modal extends BaseComponent { - constructor(element, config) { - super(element); - this._config = this._getConfig(config); - this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); - this._backdrop = this._initializeBackDrop(); - this._focustrap = this._initializeFocusTrap(); - this._isShown = false; - this._ignoreBackdropClick = false; - this._isTransitioning = false; - this._scrollBar = new ScrollBarHelper(); - } // Getters - - - static get Default() { - return Default$5; - } - - static get NAME() { - return NAME$6; - } // Public - - - toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - } - - show(relatedTarget) { - if (this._isShown || this._isTransitioning) { - return; - } - - const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { - relatedTarget - }); - - if (showEvent.defaultPrevented) { - return; - } - - this._isShown = true; - - if (this._isAnimated()) { - this._isTransitioning = true; - } - - this._scrollBar.hide(); - - document.body.classList.add(CLASS_NAME_OPEN); - - this._adjustDialog(); - - this._setEscapeEvent(); - - this._setResizeEvent(); - - EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => { - EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => { - if (event.target === this._element) { - this._ignoreBackdropClick = true; - } - }); - }); - - this._showBackdrop(() => this._showElement(relatedTarget)); - } - - hide() { - if (!this._isShown || this._isTransitioning) { - return; - } - - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); - - if (hideEvent.defaultPrevented) { - return; - } - - this._isShown = false; - - const isAnimated = this._isAnimated(); - - if (isAnimated) { - this._isTransitioning = true; - } - - this._setEscapeEvent(); - - this._setResizeEvent(); - - this._focustrap.deactivate(); - - this._element.classList.remove(CLASS_NAME_SHOW$4); - - EventHandler.off(this._element, EVENT_CLICK_DISMISS); - EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS); - - this._queueCallback(() => this._hideModal(), this._element, isAnimated); - } - - dispose() { - [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6)); - - this._backdrop.dispose(); - - this._focustrap.deactivate(); - - super.dispose(); - } - - handleUpdate() { - this._adjustDialog(); - } // Private - - - _initializeBackDrop() { - return new Backdrop({ - isVisible: Boolean(this._config.backdrop), - // 'static' option will be translated to true, and booleans will keep their value - isAnimated: this._isAnimated() - }); - } - - _initializeFocusTrap() { - return new FocusTrap({ - trapElement: this._element - }); - } - - _getConfig(config) { - config = { ...Default$5, - ...Manipulator.getDataAttributes(this._element), - ...(typeof config === 'object' ? config : {}) - }; - typeCheckConfig(NAME$6, config, DefaultType$5); - return config; - } - - _showElement(relatedTarget) { - const isAnimated = this._isAnimated(); - - const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); - - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.append(this._element); - } - - this._element.style.display = 'block'; - - this._element.removeAttribute('aria-hidden'); - - this._element.setAttribute('aria-modal', true); - - this._element.setAttribute('role', 'dialog'); - - this._element.scrollTop = 0; - - if (modalBody) { - modalBody.scrollTop = 0; - } - - if (isAnimated) { - reflow(this._element); - } - - this._element.classList.add(CLASS_NAME_SHOW$4); - - const transitionComplete = () => { - if (this._config.focus) { - this._focustrap.activate(); - } - - this._isTransitioning = false; - EventHandler.trigger(this._element, EVENT_SHOWN$3, { - relatedTarget - }); - }; - - this._queueCallback(transitionComplete, this._dialog, isAnimated); - } - - _setEscapeEvent() { - if (this._isShown) { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { - if (this._config.keyboard && event.key === ESCAPE_KEY$1) { - event.preventDefault(); - this.hide(); - } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) { - this._triggerBackdropTransition(); - } - }); - } else { - EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1); - } - } - - _setResizeEvent() { - if (this._isShown) { - EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog()); - } else { - EventHandler.off(window, EVENT_RESIZE); - } - } - - _hideModal() { - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._element.removeAttribute('aria-modal'); - - this._element.removeAttribute('role'); - - this._isTransitioning = false; - - this._backdrop.hide(() => { - document.body.classList.remove(CLASS_NAME_OPEN); - - this._resetAdjustments(); - - this._scrollBar.reset(); - - EventHandler.trigger(this._element, EVENT_HIDDEN$3); - }); - } - - _showBackdrop(callback) { - EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => { - if (this._ignoreBackdropClick) { - this._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (this._config.backdrop === true) { - this.hide(); - } else if (this._config.backdrop === 'static') { - this._triggerBackdropTransition(); - } - }); - - this._backdrop.show(callback); - } - - _isAnimated() { - return this._element.classList.contains(CLASS_NAME_FADE$3); - } - - _triggerBackdropTransition() { - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); - - if (hideEvent.defaultPrevented) { - return; - } - - const { - classList, - scrollHeight, - style - } = this._element; - const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed - - if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) { - return; - } - - if (!isModalOverflowing) { - style.overflowY = 'hidden'; - } - - classList.add(CLASS_NAME_STATIC); - - this._queueCallback(() => { - classList.remove(CLASS_NAME_STATIC); - - if (!isModalOverflowing) { - this._queueCallback(() => { - style.overflowY = ''; - }, this._dialog); - } - }, this._dialog); - - this._element.focus(); - } // ---------------------------------------------------------------------- - // the following methods are used to handle overflowing modals - // ---------------------------------------------------------------------- - - - _adjustDialog() { - const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - const scrollbarWidth = this._scrollBar.getWidth(); - - const isBodyOverflowing = scrollbarWidth > 0; - - if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) { - this._element.style.paddingLeft = `${scrollbarWidth}px`; - } - - if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) { - this._element.style.paddingRight = `${scrollbarWidth}px`; - } - } - - _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - } // Static - - - static jQueryInterface(config, relatedTarget) { - return this.each(function () { - const data = Modal.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`); - } - - data[config](relatedTarget); - }); - } - -} -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { - const target = getElementFromSelector(this); - - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault(); - } - - EventHandler.one(target, EVENT_SHOW$3, showEvent => { - if (showEvent.defaultPrevented) { - // only register focus restorer if modal will actually get shown - return; - } - - EventHandler.one(target, EVENT_HIDDEN$3, () => { - if (isVisible(this)) { - this.focus(); - } - }); - }); // avoid conflict when clicking moddal toggler while another one is open - - const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); - - if (allReadyOpen) { - Modal.getInstance(allReadyOpen).hide(); - } - - const data = Modal.getOrCreateInstance(target); - data.toggle(this); -}); -enableDismissTrigger(Modal); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Modal to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Modal); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): offcanvas.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$5 = 'offcanvas'; -const DATA_KEY$5 = 'bs.offcanvas'; -const EVENT_KEY$5 = `.${DATA_KEY$5}`; -const DATA_API_KEY$2 = '.data-api'; -const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`; -const ESCAPE_KEY = 'Escape'; -const Default$4 = { - backdrop: true, - keyboard: true, - scroll: false -}; -const DefaultType$4 = { - backdrop: 'boolean', - keyboard: 'boolean', - scroll: 'boolean' -}; -const CLASS_NAME_SHOW$3 = 'show'; -const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; -const OPEN_SELECTOR = '.offcanvas.show'; -const EVENT_SHOW$2 = `show${EVENT_KEY$5}`; -const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`; -const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`; -const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`; -const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`; -const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`; -const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Offcanvas extends BaseComponent { - constructor(element, config) { - super(element); - this._config = this._getConfig(config); - this._isShown = false; - this._backdrop = this._initializeBackDrop(); - this._focustrap = this._initializeFocusTrap(); - - this._addEventListeners(); - } // Getters - - - static get NAME() { - return NAME$5; - } - - static get Default() { - return Default$4; - } // Public - - - toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - } - - show(relatedTarget) { - if (this._isShown) { - return; - } - - const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { - relatedTarget - }); - - if (showEvent.defaultPrevented) { - return; - } - - this._isShown = true; - this._element.style.visibility = 'visible'; - - this._backdrop.show(); - - if (!this._config.scroll) { - new ScrollBarHelper().hide(); - } - - this._element.removeAttribute('aria-hidden'); - - this._element.setAttribute('aria-modal', true); - - this._element.setAttribute('role', 'dialog'); - - this._element.classList.add(CLASS_NAME_SHOW$3); - - const completeCallBack = () => { - if (!this._config.scroll) { - this._focustrap.activate(); - } - - EventHandler.trigger(this._element, EVENT_SHOWN$2, { - relatedTarget - }); - }; - - this._queueCallback(completeCallBack, this._element, true); - } - - hide() { - if (!this._isShown) { - return; - } - - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); - - if (hideEvent.defaultPrevented) { - return; - } - - this._focustrap.deactivate(); - - this._element.blur(); - - this._isShown = false; - - this._element.classList.remove(CLASS_NAME_SHOW$3); - - this._backdrop.hide(); - - const completeCallback = () => { - this._element.setAttribute('aria-hidden', true); - - this._element.removeAttribute('aria-modal'); - - this._element.removeAttribute('role'); - - this._element.style.visibility = 'hidden'; - - if (!this._config.scroll) { - new ScrollBarHelper().reset(); - } - - EventHandler.trigger(this._element, EVENT_HIDDEN$2); - }; - - this._queueCallback(completeCallback, this._element, true); - } - - dispose() { - this._backdrop.dispose(); - - this._focustrap.deactivate(); - - super.dispose(); - } // Private - - - _getConfig(config) { - config = { ...Default$4, - ...Manipulator.getDataAttributes(this._element), - ...(typeof config === 'object' ? config : {}) - }; - typeCheckConfig(NAME$5, config, DefaultType$4); - return config; - } - - _initializeBackDrop() { - return new Backdrop({ - className: CLASS_NAME_BACKDROP, - isVisible: this._config.backdrop, - isAnimated: true, - rootElement: this._element.parentNode, - clickCallback: () => this.hide() - }); - } - - _initializeFocusTrap() { - return new FocusTrap({ - trapElement: this._element - }); - } - - _addEventListeners() { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { - if (this._config.keyboard && event.key === ESCAPE_KEY) { - this.hide(); - } - }); - } // Static - - - static jQueryInterface(config) { - return this.each(function () { - const data = Offcanvas.getOrCreateInstance(this, config); - - if (typeof config !== 'string') { - return; - } - - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError(`No method named "${config}"`); - } - - data[config](this); - }); - } - -} -/** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - - -EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { - const target = getElementFromSelector(this); - - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault(); - } - - if (isDisabled(this)) { - return; - } - - EventHandler.one(target, EVENT_HIDDEN$2, () => { - // focus on trigger when it is closed - if (isVisible(this)) { - this.focus(); - } - }); // avoid conflict when clicking a toggler of an offcanvas, while another is open - - const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); - - if (allReadyOpen && allReadyOpen !== target) { - Offcanvas.getInstance(allReadyOpen).hide(); - } - - const data = Offcanvas.getOrCreateInstance(target); - data.toggle(this); -}); -EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())); -enableDismissTrigger(Offcanvas); -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - -defineJQueryPlugin(Offcanvas); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): util/sanitizer.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); -const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; -/** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts - */ - -const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; -/** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts - */ - -const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; - -const allowedAttribute = (attribute, allowedAttributeList) => { - const attributeName = attribute.nodeName.toLowerCase(); - - if (allowedAttributeList.includes(attributeName)) { - if (uriAttributes.has(attributeName)) { - return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue)); - } - - return true; - } - - const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp); // Check if a regular expression validates the attribute. - - for (let i = 0, len = regExp.length; i < len; i++) { - if (regExp[i].test(attributeName)) { - return true; - } - } - - return false; -}; - -const DefaultAllowlist = { - // Global attributes allowed on any supplied element below. - '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], - a: ['target', 'href', 'title', 'rel'], - area: [], - b: [], - br: [], - col: [], - code: [], - div: [], - em: [], - hr: [], - h1: [], - h2: [], - h3: [], - h4: [], - h5: [], - h6: [], - i: [], - img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], - li: [], - ol: [], - p: [], - pre: [], - s: [], - small: [], - span: [], - sub: [], - sup: [], - strong: [], - u: [], - ul: [] -}; -function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { - if (!unsafeHtml.length) { - return unsafeHtml; - } - - if (sanitizeFn && typeof sanitizeFn === 'function') { - return sanitizeFn(unsafeHtml); - } - - const domParser = new window.DOMParser(); - const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - const elements = [].concat(...createdDocument.body.querySelectorAll('*')); - - for (let i = 0, len = elements.length; i < len; i++) { - const element = elements[i]; - const elementName = element.nodeName.toLowerCase(); - - if (!Object.keys(allowList).includes(elementName)) { - element.remove(); - continue; - } - - const attributeList = [].concat(...element.attributes); - const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); - attributeList.forEach(attribute => { - if (!allowedAttribute(attribute, allowedAttributes)) { - element.removeAttribute(attribute.nodeName); - } - }); - } - - return createdDocument.body.innerHTML; -} - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): tooltip.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$4 = 'tooltip'; -const DATA_KEY$4 = 'bs.tooltip'; -const EVENT_KEY$4 = `.${DATA_KEY$4}`; -const CLASS_PREFIX$1 = 'bs-tooltip'; -const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); -const DefaultType$3 = { - animation: 'boolean', - template: 'string', - title: '(string|element|function)', - trigger: 'string', - delay: '(number|object)', - html: 'boolean', - selector: '(string|boolean)', - placement: '(string|function)', - offset: '(array|string|function)', - container: '(string|element|boolean)', - fallbackPlacements: 'array', - boundary: '(string|element)', - customClass: '(string|function)', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - allowList: 'object', - popperConfig: '(null|object|function)' -}; -const AttachmentMap = { - AUTO: 'auto', - TOP: 'top', - RIGHT: isRTL() ? 'left' : 'right', - BOTTOM: 'bottom', - LEFT: isRTL() ? 'right' : 'left' -}; -const Default$3 = { - animation: true, - template: '', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - selector: false, - placement: 'top', - offset: [0, 0], - container: false, - fallbackPlacements: ['top', 'right', 'bottom', 'left'], - boundary: 'clippingParents', - customClass: '', - sanitize: true, - sanitizeFn: null, - allowList: DefaultAllowlist, - popperConfig: null -}; -const Event$2 = { - HIDE: `hide${EVENT_KEY$4}`, - HIDDEN: `hidden${EVENT_KEY$4}`, - SHOW: `show${EVENT_KEY$4}`, - SHOWN: `shown${EVENT_KEY$4}`, - INSERTED: `inserted${EVENT_KEY$4}`, - CLICK: `click${EVENT_KEY$4}`, - FOCUSIN: `focusin${EVENT_KEY$4}`, - FOCUSOUT: `focusout${EVENT_KEY$4}`, - MOUSEENTER: `mouseenter${EVENT_KEY$4}`, - MOUSELEAVE: `mouseleave${EVENT_KEY$4}` -}; -const CLASS_NAME_FADE$2 = 'fade'; -const CLASS_NAME_MODAL = 'modal'; -const CLASS_NAME_SHOW$2 = 'show'; -const HOVER_STATE_SHOW = 'show'; -const HOVER_STATE_OUT = 'out'; -const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; -const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; -const EVENT_MODAL_HIDE = 'hide.bs.modal'; -const TRIGGER_HOVER = 'hover'; -const TRIGGER_FOCUS = 'focus'; -const TRIGGER_CLICK = 'click'; -const TRIGGER_MANUAL = 'manual'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Tooltip extends BaseComponent { - constructor(element, config) { - if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') { - throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); - } - - super(element); // private - - this._isEnabled = true; - this._timeout = 0; - this._hoverState = ''; - this._activeTrigger = {}; - this._popper = null; // Protected - - this._config = this._getConfig(config); - this.tip = null; - - this._setListeners(); - } // Getters - - - static get Default() { - return Default$3; - } - - static get NAME() { - return NAME$4; - } - - static get Event() { - return Event$2; - } - - static get DefaultType() { - return DefaultType$3; - } // Public - - - enable() { - this._isEnabled = true; - } - - disable() { - this._isEnabled = false; - } - - toggleEnabled() { - this._isEnabled = !this._isEnabled; - } - - toggle(event) { - if (!this._isEnabled) { - return; - } - - if (event) { - const context = this._initializeOnDelegatedTarget(event); - - context._activeTrigger.click = !context._activeTrigger.click; - - if (context._isWithActiveTrigger()) { - context._enter(null, context); - } else { - context._leave(null, context); - } - } else { - if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) { - this._leave(null, this); - - return; - } - - this._enter(null, this); - } - } - - dispose() { - clearTimeout(this._timeout); - EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); - - if (this.tip) { - this.tip.remove(); - } - - this._disposePopper(); - - super.dispose(); - } - - show() { - if (this._element.style.display === 'none') { - throw new Error('Please use show on visible elements'); - } - - if (!(this.isWithContent() && this._isEnabled)) { - return; - } - - const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); - const shadowRoot = findShadowRoot(this._element); - const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); - - if (showEvent.defaultPrevented || !isInTheDom) { - return; - } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title` - // This will be removed later in favor of a `setContent` method - - - if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) { - this._disposePopper(); - - this.tip.remove(); - this.tip = null; - } - - const tip = this.getTipElement(); - const tipId = getUID(this.constructor.NAME); - tip.setAttribute('id', tipId); - - this._element.setAttribute('aria-describedby', tipId); - - if (this._config.animation) { - tip.classList.add(CLASS_NAME_FADE$2); - } - - const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement; - - const attachment = this._getAttachment(placement); - - this._addAttachmentClass(attachment); - - const { - container - } = this._config; - Data.set(tip, this.constructor.DATA_KEY, this); - - if (!this._element.ownerDocument.documentElement.contains(this.tip)) { - container.append(tip); - EventHandler.trigger(this._element, this.constructor.Event.INSERTED); - } - - if (this._popper) { - this._popper.update(); - } else { - this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_0__["createPopper"](this._element, tip, this._getPopperConfig(attachment)); - } - - tip.classList.add(CLASS_NAME_SHOW$2); - - const customClass = this._resolvePossibleFunction(this._config.customClass); - - if (customClass) { - tip.classList.add(...customClass.split(' ')); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement) { - [].concat(...document.body.children).forEach(element => { - EventHandler.on(element, 'mouseover', noop); - }); - } - - const complete = () => { - const prevHoverState = this._hoverState; - this._hoverState = null; - EventHandler.trigger(this._element, this.constructor.Event.SHOWN); - - if (prevHoverState === HOVER_STATE_OUT) { - this._leave(null, this); - } - }; - - const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2); - - this._queueCallback(complete, this.tip, isAnimated); - } - - hide() { - if (!this._popper) { - return; - } - - const tip = this.getTipElement(); - - const complete = () => { - if (this._isWithActiveTrigger()) { - return; - } - - if (this._hoverState !== HOVER_STATE_SHOW) { - tip.remove(); - } - - this._cleanTipClass(); - - this._element.removeAttribute('aria-describedby'); - - EventHandler.trigger(this._element, this.constructor.Event.HIDDEN); - - this._disposePopper(); - }; - - const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); - - if (hideEvent.defaultPrevented) { - return; - } - - tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - if ('ontouchstart' in document.documentElement) { - [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop)); - } - - this._activeTrigger[TRIGGER_CLICK] = false; - this._activeTrigger[TRIGGER_FOCUS] = false; - this._activeTrigger[TRIGGER_HOVER] = false; - const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2); - - this._queueCallback(complete, this.tip, isAnimated); - - this._hoverState = ''; - } - - update() { - if (this._popper !== null) { - this._popper.update(); - } - } // Protected - - - isWithContent() { - return Boolean(this.getTitle()); - } - - getTipElement() { - if (this.tip) { - return this.tip; - } - - const element = document.createElement('div'); - element.innerHTML = this._config.template; - const tip = element.children[0]; - this.setContent(tip); - tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); - this.tip = tip; - return this.tip; - } - - setContent(tip) { - this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER); - } - - _sanitizeAndSetContent(template, content, selector) { - const templateElement = SelectorEngine.findOne(selector, template); - - if (!content && templateElement) { - templateElement.remove(); - return; - } // we use append for html objects to maintain js events - - - this.setElementContent(templateElement, content); - } - - setElementContent(element, content) { - if (element === null) { - return; - } - - if (isElement(content)) { - content = getElement(content); // content is a DOM node or a jQuery - - if (this._config.html) { - if (content.parentNode !== element) { - element.innerHTML = ''; - element.append(content); - } - } else { - element.textContent = content.textContent; - } - - return; - } - - if (this._config.html) { - if (this._config.sanitize) { - content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn); - } - - element.innerHTML = content; - } else { - element.textContent = content; - } - } - - getTitle() { - const title = this._element.getAttribute('data-bs-original-title') || this._config.title; - - return this._resolvePossibleFunction(title); - } - - updateAttachment(attachment) { - if (attachment === 'right') { - return 'end'; - } - - if (attachment === 'left') { - return 'start'; - } - - return attachment; - } // Private - - - _initializeOnDelegatedTarget(event, context) { - return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); - } - - _getOffset() { - const { - offset - } = this._config; - - if (typeof offset === 'string') { - return offset.split(',').map(val => Number.parseInt(val, 10)); - } - - if (typeof offset === 'function') { - return popperData => offset(popperData, this._element); - } - - return offset; - } - - _resolvePossibleFunction(content) { - return typeof content === 'function' ? content.call(this._element) : content; - } - - _getPopperConfig(attachment) { - const defaultBsPopperConfig = { - placement: attachment, - modifiers: [{ - name: 'flip', - options: { - fallbackPlacements: this._config.fallbackPlacements - } - }, { - name: 'offset', - options: { - offset: this._getOffset() - } - }, { - name: 'preventOverflow', - options: { - boundary: this._config.boundary - } - }, { - name: 'arrow', - options: { - element: `.${this.constructor.NAME}-arrow` - } - }, { - name: 'onChange', - enabled: true, - phase: 'afterWrite', - fn: data => this._handlePopperPlacementChange(data) - }], - onFirstUpdate: data => { - if (data.options.placement !== data.placement) { - this._handlePopperPlacementChange(data); - } - } - }; - return { ...defaultBsPopperConfig, - ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) - }; - } - - _addAttachmentClass(attachment) { - this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`); - } - - _getAttachment(placement) { - return AttachmentMap[placement.toUpperCase()]; - } - - _setListeners() { - const triggers = this._config.trigger.split(' '); - - triggers.forEach(trigger => { - if (trigger === 'click') { - EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event)); - } else if (trigger !== TRIGGER_MANUAL) { - const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN; - const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT; - EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event)); - EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event)); - } - }); - - this._hideModalHandler = () => { - if (this._element) { - this.hide(); - } - }; - - EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); - - if (this._config.selector) { - this._config = { ...this._config, - trigger: 'manual', - selector: '' - }; - } else { - this._fixTitle(); - } - } - - _fixTitle() { - const title = this._element.getAttribute('title'); - - const originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); - - if (title || originalTitleType !== 'string') { - this._element.setAttribute('data-bs-original-title', title || ''); - - if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) { - this._element.setAttribute('aria-label', title); - } - - this._element.setAttribute('title', ''); - } - } - - _enter(event, context) { - context = this._initializeOnDelegatedTarget(event, context); - - if (event) { - context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - } - - if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) { - context._hoverState = HOVER_STATE_SHOW; - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_SHOW; - - if (!context._config.delay || !context._config.delay.show) { - context.show(); - return; - } - - context._timeout = setTimeout(() => { - if (context._hoverState === HOVER_STATE_SHOW) { - context.show(); - } - }, context._config.delay.show); - } - - _leave(event, context) { - context = this._initializeOnDelegatedTarget(event, context); - - if (event) { - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); - } - - if (context._isWithActiveTrigger()) { - return; - } - - clearTimeout(context._timeout); - context._hoverState = HOVER_STATE_OUT; - - if (!context._config.delay || !context._config.delay.hide) { - context.hide(); - return; - } - - context._timeout = setTimeout(() => { - if (context._hoverState === HOVER_STATE_OUT) { - context.hide(); - } - }, context._config.delay.hide); - } - - _isWithActiveTrigger() { - for (const trigger in this._activeTrigger) { - if (this._activeTrigger[trigger]) { - return true; - } - } - - return false; - } - - _getConfig(config) { - const dataAttributes = Manipulator.getDataAttributes(this._element); - Object.keys(dataAttributes).forEach(dataAttr => { - if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { - delete dataAttributes[dataAttr]; - } - }); - config = { ...this.constructor.Default, - ...dataAttributes, - ...(typeof config === 'object' && config ? config : {}) - }; - config.container = config.container === false ? document.body : getElement(config.container); - - if (typeof config.delay === 'number') { - config.delay = { - show: config.delay, - hide: config.delay - }; - } - - if (typeof config.title === 'number') { - config.title = config.title.toString(); - } - - if (typeof config.content === 'number') { - config.content = config.content.toString(); - } - - typeCheckConfig(NAME$4, config, this.constructor.DefaultType); - - if (config.sanitize) { - config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn); - } - - return config; - } - - _getDelegateConfig() { - const config = {}; - - for (const key in this._config) { - if (this.constructor.Default[key] !== this._config[key]) { - config[key] = this._config[key]; - } - } // In the future can be replaced with: - // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) - // `Object.fromEntries(keysWithDifferentValues)` - - - return config; - } - - _cleanTipClass() { - const tip = this.getTipElement(); - const basicClassPrefixRegex = new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`, 'g'); - const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex); - - if (tabClass !== null && tabClass.length > 0) { - tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass)); - } - } - - _getBasicClassPrefix() { - return CLASS_PREFIX$1; - } - - _handlePopperPlacementChange(popperData) { - const { - state - } = popperData; - - if (!state) { - return; - } - - this.tip = state.elements.popper; - - this._cleanTipClass(); - - this._addAttachmentClass(this._getAttachment(state.placement)); - } - - _disposePopper() { - if (this._popper) { - this._popper.destroy(); - - this._popper = null; - } - } // Static - - - static jQueryInterface(config) { - return this.each(function () { - const data = Tooltip.getOrCreateInstance(this, config); - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`); - } - - data[config](); - } - }); - } - -} -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tooltip to jQuery only if jQuery is present - */ - - -defineJQueryPlugin(Tooltip); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): popover.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$3 = 'popover'; -const DATA_KEY$3 = 'bs.popover'; -const EVENT_KEY$3 = `.${DATA_KEY$3}`; -const CLASS_PREFIX = 'bs-popover'; -const Default$2 = { ...Tooltip.Default, - placement: 'right', - offset: [0, 8], - trigger: 'click', - content: '', - template: '' -}; -const DefaultType$2 = { ...Tooltip.DefaultType, - content: '(string|element|function)' -}; -const Event$1 = { - HIDE: `hide${EVENT_KEY$3}`, - HIDDEN: `hidden${EVENT_KEY$3}`, - SHOW: `show${EVENT_KEY$3}`, - SHOWN: `shown${EVENT_KEY$3}`, - INSERTED: `inserted${EVENT_KEY$3}`, - CLICK: `click${EVENT_KEY$3}`, - FOCUSIN: `focusin${EVENT_KEY$3}`, - FOCUSOUT: `focusout${EVENT_KEY$3}`, - MOUSEENTER: `mouseenter${EVENT_KEY$3}`, - MOUSELEAVE: `mouseleave${EVENT_KEY$3}` -}; -const SELECTOR_TITLE = '.popover-header'; -const SELECTOR_CONTENT = '.popover-body'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class Popover extends Tooltip { - // Getters - static get Default() { - return Default$2; - } - - static get NAME() { - return NAME$3; - } - - static get Event() { - return Event$1; - } - - static get DefaultType() { - return DefaultType$2; - } // Overrides - - - isWithContent() { - return this.getTitle() || this._getContent(); - } - - setContent(tip) { - this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE); - - this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT); - } // Private - - - _getContent() { - return this._resolvePossibleFunction(this._config.content); - } - - _getBasicClassPrefix() { - return CLASS_PREFIX; - } // Static - - - static jQueryInterface(config) { - return this.each(function () { - const data = Popover.getOrCreateInstance(this, config); - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`); - } - - data[config](); - } - }); - } - -} -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Popover to jQuery only if jQuery is present - */ - - -defineJQueryPlugin(Popover); - -/** - * -------------------------------------------------------------------------- - * Bootstrap (v5.1.3): scrollspy.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ -/** - * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - -const NAME$2 = 'scrollspy'; -const DATA_KEY$2 = 'bs.scrollspy'; -const EVENT_KEY$2 = `.${DATA_KEY$2}`; -const DATA_API_KEY$1 = '.data-api'; -const Default$1 = { - offset: 10, - method: 'auto', - target: '' -}; -const DefaultType$1 = { - offset: 'number', - method: 'string', - target: '(string|element)' -}; -const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; -const EVENT_SCROLL = `scroll${EVENT_KEY$2}`; -const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`; -const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; -const CLASS_NAME_ACTIVE$1 = 'active'; -const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; -const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; -const SELECTOR_NAV_LINKS = '.nav-link'; -const SELECTOR_NAV_ITEMS = '.nav-item'; -const SELECTOR_LIST_ITEMS = '.list-group-item'; -const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`; -const SELECTOR_DROPDOWN$1 = '.dropdown'; -const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; -const METHOD_OFFSET = 'offset'; -const METHOD_POSITION = 'position'; -/** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - -class ScrollSpy extends BaseComponent { - constructor(element, config) { - super(element); - this._scrollElement = this._element.tagName === 'BODY' ? window : this._element; - this._config = this._getConfig(config); - this._offsets = []; - this._targets = []; - this._activeTarget = null; - this._scrollHeight = 0; - EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process()); - this.refresh(); - - this._process(); - } // Getters - - - static get Default() { - return Default$1; - } - - static get NAME() { - return NAME$2; - } // Public - - - refresh() { - const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; - const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target); - targets.map(element => { - const targetSelector = getSelectorFromElement(element); - const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; - - if (target) { - const targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; - } - } - - return null; - }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => { - this._offsets.push(item[0]); - - this._targets.push(item[1]); - }); - } - - dispose() { - EventHandler.off(this._scrollElement, EVENT_KEY$2); - super.dispose(); - } // Private - - - _getConfig(config) { - config = { ...Default$1, - ...Manipulator.getDataAttributes(this._element), - ...(typeof config === 'object' && config ? config : {}) - }; - config.target = getElement(config.target) || document.documentElement; - typeCheckConfig(NAME$2, config, DefaultType$1); - return config; - } - - _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - } - - _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - } - - _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - } - - _process() { - const scrollTop = this._getScrollTop() + this._config.offset; - - const scrollHeight = this._getScrollHeight(); - - const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } - - if (scrollTop >= maxScroll) { - const target = this._targets[this._targets.length - 1]; - - if (this._activeTarget !== target) { - this._activate(target); - } - - return; - } - - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; - - this._clear(); - - return; - } - - for (let i = this._offsets.length; i--;) { - const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - } - - _activate(target) { - this._activeTarget = target; - - this._clear(); - - const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`); - const link = SelectorEngine.findOne(queries.join(','), this._config.target); - link.classList.add(CLASS_NAME_ACTIVE$1); - - if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1); - } else { - SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => { - // Set triggered links parents as active - // With both
    and