diff --git a/.env.example b/.env.example
old mode 100644
new mode 100755
diff --git a/composer.json b/composer.json
old mode 100644
new mode 100755
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..593b3f6
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,4805 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "f8eaf468e405e51c383538dcb6fc1a9b",
+ "packages": [
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a",
+ "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "@stable"
+ },
+ "type": "project",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "time": "2014-10-24T07:27:01+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
+ "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ],
+ "time": "2018-01-09T20:05:19+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8",
+ "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "time": "2019-06-08T11:03:04+00:00"
+ },
+ {
+ "name": "dragonmantank/cron-expression",
+ "version": "v2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dragonmantank/cron-expression.git",
+ "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27",
+ "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.4|^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Cron\\": "src/Cron/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Chris Tankersley",
+ "email": "chris@ctankersley.com",
+ "homepage": "https://github.com/dragonmantank"
+ }
+ ],
+ "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
+ "keywords": [
+ "cron",
+ "schedule"
+ ],
+ "time": "2019-03-31T00:38:28+00:00"
+ },
+ {
+ "name": "egulias/email-validator",
+ "version": "2.1.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/egulias/EmailValidator.git",
+ "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/128cc721d771ec2c46ce59698f4ca42b73f71b25",
+ "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "^1.0.1",
+ "php": ">= 5.5"
+ },
+ "require-dev": {
+ "dominicsayers/isemail": "dev-master",
+ "phpunit/phpunit": "^4.8.35||^5.7||^6.0",
+ "satooshi/php-coveralls": "^1.0.1"
+ },
+ "suggest": {
+ "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Egulias\\EmailValidator\\": "EmailValidator"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Eduardo Gulias Davis"
+ }
+ ],
+ "description": "A library for validating emails against several RFCs",
+ "homepage": "https://github.com/egulias/EmailValidator",
+ "keywords": [
+ "email",
+ "emailvalidation",
+ "emailvalidator",
+ "validation",
+ "validator"
+ ],
+ "time": "2019-06-23T10:14:27+00:00"
+ },
+ {
+ "name": "erusev/parsedown",
+ "version": "1.7.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/erusev/parsedown.git",
+ "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
+ "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Parsedown": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "description": "Parser for Markdown.",
+ "homepage": "http://parsedown.org",
+ "keywords": [
+ "markdown",
+ "parser"
+ ],
+ "time": "2019-03-17T18:48:37+00:00"
+ },
+ {
+ "name": "fideloper/proxy",
+ "version": "4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fideloper/TrustedProxy.git",
+ "reference": "177c79a2d1f9970f89ee2fb4c12b429af38b6dfb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/177c79a2d1f9970f89ee2fb4c12b429af38b6dfb",
+ "reference": "177c79a2d1f9970f89ee2fb4c12b429af38b6dfb",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "~5.0",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "illuminate/http": "~5.6",
+ "mockery/mockery": "~1.0",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Fideloper\\Proxy\\TrustedProxyServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fideloper\\Proxy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Fidao",
+ "email": "fideloper@gmail.com"
+ }
+ ],
+ "description": "Set trusted proxies for Laravel",
+ "keywords": [
+ "load balancing",
+ "proxy",
+ "trusted proxy"
+ ],
+ "time": "2019-01-10T14:06:47+00:00"
+ },
+ {
+ "name": "jakub-onderka/php-console-color",
+ "version": "v0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
+ "reference": "d5deaecff52a0d61ccb613bb3804088da0307191"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191",
+ "reference": "d5deaecff52a0d61ccb613bb3804088da0307191",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "jakub-onderka/php-code-style": "1.0",
+ "jakub-onderka/php-parallel-lint": "1.0",
+ "jakub-onderka/php-var-dump-check": "0.*",
+ "phpunit/phpunit": "~4.3",
+ "squizlabs/php_codesniffer": "1.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "JakubOnderka\\PhpConsoleColor\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Onderka",
+ "email": "jakub.onderka@gmail.com"
+ }
+ ],
+ "time": "2018-09-29T17:23:10+00:00"
+ },
+ {
+ "name": "jakub-onderka/php-console-highlighter",
+ "version": "v0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
+ "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547",
+ "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "jakub-onderka/php-console-color": "~0.2",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "jakub-onderka/php-code-style": "~1.0",
+ "jakub-onderka/php-parallel-lint": "~1.0",
+ "jakub-onderka/php-var-dump-check": "~0.1",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~1.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "JakubOnderka\\PhpConsoleHighlighter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jakub Onderka",
+ "email": "acci@acci.cz",
+ "homepage": "http://www.acci.cz/"
+ }
+ ],
+ "description": "Highlight PHP code in terminal",
+ "time": "2018-09-29T18:48:56+00:00"
+ },
+ {
+ "name": "laravel/framework",
+ "version": "v5.8.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/framework.git",
+ "reference": "1d8ec9afdedc79314c18715056b8143d7e1fac31"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/1d8ec9afdedc79314c18715056b8143d7e1fac31",
+ "reference": "1d8ec9afdedc79314c18715056b8143d7e1fac31",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^1.1",
+ "dragonmantank/cron-expression": "^2.0",
+ "egulias/email-validator": "^2.0",
+ "erusev/parsedown": "^1.7",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "league/flysystem": "^1.0.8",
+ "monolog/monolog": "^1.12",
+ "nesbot/carbon": "^1.26.3 || ^2.0",
+ "opis/closure": "^3.1",
+ "php": "^7.1.3",
+ "psr/container": "^1.0",
+ "psr/simple-cache": "^1.0",
+ "ramsey/uuid": "^3.7",
+ "swiftmailer/swiftmailer": "^6.0",
+ "symfony/console": "^4.2",
+ "symfony/debug": "^4.2",
+ "symfony/finder": "^4.2",
+ "symfony/http-foundation": "^4.2",
+ "symfony/http-kernel": "^4.2",
+ "symfony/process": "^4.2",
+ "symfony/routing": "^4.2",
+ "symfony/var-dumper": "^4.2",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.1",
+ "vlucas/phpdotenv": "^3.3"
+ },
+ "conflict": {
+ "tightenco/collect": "<5.5.33"
+ },
+ "replace": {
+ "illuminate/auth": "self.version",
+ "illuminate/broadcasting": "self.version",
+ "illuminate/bus": "self.version",
+ "illuminate/cache": "self.version",
+ "illuminate/config": "self.version",
+ "illuminate/console": "self.version",
+ "illuminate/container": "self.version",
+ "illuminate/contracts": "self.version",
+ "illuminate/cookie": "self.version",
+ "illuminate/database": "self.version",
+ "illuminate/encryption": "self.version",
+ "illuminate/events": "self.version",
+ "illuminate/filesystem": "self.version",
+ "illuminate/hashing": "self.version",
+ "illuminate/http": "self.version",
+ "illuminate/log": "self.version",
+ "illuminate/mail": "self.version",
+ "illuminate/notifications": "self.version",
+ "illuminate/pagination": "self.version",
+ "illuminate/pipeline": "self.version",
+ "illuminate/queue": "self.version",
+ "illuminate/redis": "self.version",
+ "illuminate/routing": "self.version",
+ "illuminate/session": "self.version",
+ "illuminate/support": "self.version",
+ "illuminate/translation": "self.version",
+ "illuminate/validation": "self.version",
+ "illuminate/view": "self.version"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^3.0",
+ "doctrine/dbal": "^2.6",
+ "filp/whoops": "^2.1.4",
+ "guzzlehttp/guzzle": "^6.3",
+ "league/flysystem-cached-adapter": "^1.0",
+ "mockery/mockery": "^1.0",
+ "moontoast/math": "^1.1",
+ "orchestra/testbench-core": "3.8.*",
+ "pda/pheanstalk": "^4.0",
+ "phpunit/phpunit": "^7.5|^8.0",
+ "predis/predis": "^1.1.1",
+ "symfony/css-selector": "^4.2",
+ "symfony/dom-crawler": "^4.2",
+ "true/punycode": "^2.1"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).",
+ "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).",
+ "ext-pcntl": "Required to use all features of the queue worker.",
+ "ext-posix": "Required to use all features of the queue worker.",
+ "filp/whoops": "Required for friendly error pages in development (^2.1.4).",
+ "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).",
+ "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).",
+ "laravel/tinker": "Required to use the tinker console command (^1.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
+ "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
+ "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).",
+ "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
+ "moontoast/math": "Required to use ordered UUIDs (^1.1).",
+ "nexmo/client": "Required to use the Nexmo transport (^1.0).",
+ "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
+ "predis/predis": "Required to use the redis cache and queue drivers (^1.0).",
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).",
+ "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).",
+ "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).",
+ "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.8-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Illuminate/Foundation/helpers.php",
+ "src/Illuminate/Support/helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\": "src/Illuminate/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Laravel Framework.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "framework",
+ "laravel"
+ ],
+ "time": "2019-06-25T16:20:51+00:00"
+ },
+ {
+ "name": "laravel/tinker",
+ "version": "v1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/tinker.git",
+ "reference": "cafbf598a90acde68985660e79b2b03c5609a405"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/cafbf598a90acde68985660e79b2b03c5609a405",
+ "reference": "cafbf598a90acde68985660e79b2b03c5609a405",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/console": "~5.1",
+ "illuminate/contracts": "~5.1",
+ "illuminate/support": "~5.1",
+ "php": ">=5.5.9",
+ "psy/psysh": "0.7.*|0.8.*|0.9.*",
+ "symfony/var-dumper": "~3.0|~4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0|~5.0"
+ },
+ "suggest": {
+ "illuminate/database": "The Illuminate Database package (~5.1)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Laravel\\Tinker\\TinkerServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Tinker\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Powerful REPL for the Laravel framework.",
+ "keywords": [
+ "REPL",
+ "Tinker",
+ "laravel",
+ "psysh"
+ ],
+ "time": "2018-10-12T19:39:35+00:00"
+ },
+ {
+ "name": "league/flysystem",
+ "version": "1.0.53",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "08e12b7628f035600634a5e76d95b5eb66cea674"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/08e12b7628f035600634a5e76d95b5eb66cea674",
+ "reference": "08e12b7628f035600634a5e76d95b5eb66cea674",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "php": ">=5.5.9"
+ },
+ "conflict": {
+ "league/flysystem-sftp": "<1.0.6"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^3.4",
+ "phpunit/phpunit": "^5.7.10"
+ },
+ "suggest": {
+ "ext-fileinfo": "Required for MimeType",
+ "ext-ftp": "Allows you to use FTP server storage",
+ "ext-openssl": "Allows you to use FTPS server storage",
+ "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
+ "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
+ "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
+ "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
+ "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
+ "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
+ "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
+ "league/flysystem-webdav": "Allows you to use WebDAV storage",
+ "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
+ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
+ "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frenky.net"
+ }
+ ],
+ "description": "Filesystem abstraction: Many filesystems, one API.",
+ "keywords": [
+ "Cloud Files",
+ "WebDAV",
+ "abstraction",
+ "aws",
+ "cloud",
+ "copy.com",
+ "dropbox",
+ "file systems",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "rackspace",
+ "remote",
+ "s3",
+ "sftp",
+ "storage"
+ ],
+ "time": "2019-06-18T20:09:29+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
+ "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "sentry/sentry": "^0.13",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "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",
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2018-11-05T09:00:11+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "2.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "bc671b896c276795fad8426b0aa24e8ade0f2498"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bc671b896c276795fad8426b0aa24e8ade0f2498",
+ "reference": "bc671b896c276795fad8426b0aa24e8ade0f2498",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.1.8 || ^8.0",
+ "symfony/translation": "^3.4 || ^4.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
+ "kylekatarnls/multi-tester": "^1.1",
+ "phpmd/phpmd": "^2.6",
+ "phpstan/phpstan": "^0.11",
+ "phpunit/phpunit": "^7.5 || ^8.0",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "http://nesbot.com"
+ }
+ ],
+ "description": "A simple API extension for DateTime.",
+ "homepage": "http://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "time": "2019-06-25T10:00:57+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
+ "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5 || ^7.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "time": "2019-05-25T20:07:01+00:00"
+ },
+ {
+ "name": "nwidart/laravel-modules",
+ "version": "4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nWidart/laravel-modules.git",
+ "reference": "0efd81aef05419a9d032e5bbd7859dd8a67cb7e3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/0efd81aef05419a9d032e5bbd7859dd8a67cb7e3",
+ "reference": "0efd81aef05419a9d032e5bbd7859dd8a67cb7e3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.7",
+ "laravel/framework": "5.7.*",
+ "mockery/mockery": "~1.0",
+ "orchestra/testbench": "^3.7",
+ "phpstan/phpstan": "^0.9.2",
+ "phpunit/phpunit": "~7.3",
+ "spatie/phpunit-snapshot-assertions": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Nwidart\\Modules\\LaravelModulesServiceProvider"
+ ],
+ "aliases": {
+ "Module": "Nwidart\\Modules\\Facades\\Module"
+ }
+ },
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nwidart\\Modules\\": "src"
+ },
+ "files": [
+ "src/helpers.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Widart",
+ "email": "n.widart@gmail.com",
+ "homepage": "https://nicolaswidart.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "Laravel Module management",
+ "keywords": [
+ "laravel",
+ "module",
+ "modules",
+ "nwidart",
+ "rad"
+ ],
+ "time": "2019-03-04T09:50:46+00:00"
+ },
+ {
+ "name": "opis/closure",
+ "version": "3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/opis/closure.git",
+ "reference": "f846725591203098246276b2e7b9e8b7814c4965"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/opis/closure/zipball/f846725591203098246276b2e7b9e8b7814c4965",
+ "reference": "f846725591203098246276b2e7b9e8b7814c4965",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.4 || ^7.0"
+ },
+ "require-dev": {
+ "jeremeamia/superclosure": "^2.0",
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Opis\\Closure\\": "src/"
+ },
+ "files": [
+ "functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marius Sarca",
+ "email": "marius.sarca@gmail.com"
+ },
+ {
+ "name": "Sorin Sarca",
+ "email": "sarca_sorin@hotmail.com"
+ }
+ ],
+ "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
+ "homepage": "https://opis.io/closure",
+ "keywords": [
+ "anonymous functions",
+ "closure",
+ "function",
+ "serializable",
+ "serialization",
+ "serialize"
+ ],
+ "time": "2019-05-31T20:04:32+00:00"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v9.99.99",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
+ "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*",
+ "vimeo/psalm": "^1"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "polyfill",
+ "pseudorandom",
+ "random"
+ ],
+ "time": "2018-07-02T15:55:56+00:00"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
+ "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "PhpOption\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache2"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "time": "2015-07-25T16:39:46+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2018-11-20T15:27:04+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "time": "2017-10-23T01:57:42+00:00"
+ },
+ {
+ "name": "psy/psysh",
+ "version": "v0.9.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bobthecow/psysh.git",
+ "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+ "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e",
+ "shasum": ""
+ },
+ "require": {
+ "dnoegel/php-xdg-base-dir": "0.1",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*",
+ "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0",
+ "php": ">=5.4.0",
+ "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0",
+ "symfony/var-dumper": "~2.7|~3.0|~4.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.2",
+ "hoa/console": "~2.15|~3.16",
+ "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0"
+ },
+ "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."
+ },
+ "bin": [
+ "bin/psysh"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-develop": "0.9.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Psy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Justin Hileman",
+ "email": "justin@justinhileman.info",
+ "homepage": "http://justinhileman.com"
+ }
+ ],
+ "description": "An interactive shell for modern PHP.",
+ "homepage": "http://psysh.org",
+ "keywords": [
+ "REPL",
+ "console",
+ "interactive",
+ "shell"
+ ],
+ "time": "2018-10-13T15:16:03+00:00"
+ },
+ {
+ "name": "ramsey/uuid",
+ "version": "3.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
+ "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "^1.0|^2.0|9.99.99",
+ "php": "^5.4 || ^7.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "codeception/aspect-mock": "^1.0 | ~2.0.0",
+ "doctrine/annotations": "~1.2.0",
+ "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0",
+ "ircmaxell/random-lib": "^1.1",
+ "jakub-onderka/php-parallel-lint": "^0.9.0",
+ "mockery/mockery": "^0.9.9",
+ "moontoast/math": "^1.1",
+ "php-mock/php-mock-phpunit": "^0.3|^1.1",
+ "phpunit/phpunit": "^4.7|^5.0|^6.5",
+ "squizlabs/php_codesniffer": "^2.3"
+ },
+ "suggest": {
+ "ext-ctype": "Provides support for PHP Ctype functions",
+ "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
+ "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
+ "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
+ "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marijn Huizendveld",
+ "email": "marijn.huizendveld@gmail.com"
+ },
+ {
+ "name": "Thibaud Fabre",
+ "email": "thibaud@aztech.io"
+ },
+ {
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
+ }
+ ],
+ "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
+ "homepage": "https://github.com/ramsey/uuid",
+ "keywords": [
+ "guid",
+ "identifier",
+ "uuid"
+ ],
+ "time": "2018-07-19T23:38:55+00:00"
+ },
+ {
+ "name": "swiftmailer/swiftmailer",
+ "version": "v6.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/swiftmailer/swiftmailer.git",
+ "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
+ "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
+ "shasum": ""
+ },
+ "require": {
+ "egulias/email-validator": "~2.0",
+ "php": ">=7.0.0",
+ "symfony/polyfill-iconv": "^1.0",
+ "symfony/polyfill-intl-idn": "^1.10",
+ "symfony/polyfill-mbstring": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9.1",
+ "symfony/phpunit-bridge": "^3.4.19|^4.1.8"
+ },
+ "suggest": {
+ "ext-intl": "Needed to support internationalized email addresses",
+ "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/swift_required.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Corbyn"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Swiftmailer, free feature-rich PHP mailer",
+ "homepage": "https://swiftmailer.symfony.com",
+ "keywords": [
+ "email",
+ "mail",
+ "mailer"
+ ],
+ "time": "2019-04-21T09:21:45+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64",
+ "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/service-contracts": "^1.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/event-dispatcher": "<4.3",
+ "symfony/process": "<3.3"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "^4.3",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.4|~4.0",
+ "symfony/var-dumper": "^4.3"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-06-05T13:25:51+00:00"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/105c98bb0c5d8635bea056135304bd8edcc42b4d",
+ "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony CssSelector Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-01-16T21:53:39+00:00"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/4e025104f1f9adb1f7a2d14fb102c9986d6e97c6",
+ "reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": "<3.4"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~3.4|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-05-30T16:10:05+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f",
+ "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/event-dispatcher-contracts": "^1.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "1.1"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/expression-language": "~3.4|~4.0",
+ "symfony/http-foundation": "^3.4|^4.0",
+ "symfony/service-contracts": "^1.1",
+ "symfony/stopwatch": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-05-30T16:10:05+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "c61766f4440ca687de1084a5c00b08e167a2575c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c",
+ "reference": "c61766f4440ca687de1084a5c00b08e167a2575c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "suggest": {
+ "psr/event-dispatcher": "",
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "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 dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-06-20T06:46:26+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176",
+ "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-05-26T20:47:49+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "b7e4945dd9b277cd24e93566e4da0a87956392a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b7e4945dd9b277cd24e93566e4da0a87956392a9",
+ "reference": "b7e4945dd9b277cd24e93566e4da0a87956392a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/mime": "^4.3",
+ "symfony/polyfill-mbstring": "~1.1"
+ },
+ "require-dev": {
+ "predis/predis": "~1.0",
+ "symfony/expression-language": "~3.4|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpFoundation Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-06-06T10:05:02+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/738ad561cd6a8d1c44ee1da941b2e628e264c429",
+ "reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0",
+ "symfony/debug": "~3.4|~4.0",
+ "symfony/event-dispatcher": "^4.3",
+ "symfony/http-foundation": "^4.1.1",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php73": "^1.9"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<4.3",
+ "symfony/config": "<3.4",
+ "symfony/dependency-injection": "<4.3",
+ "symfony/translation": "<4.2",
+ "symfony/var-dumper": "<4.1.1",
+ "twig/twig": "<1.34|<2.4,>=2"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/cache": "~1.0",
+ "symfony/browser-kit": "^4.3",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/css-selector": "~3.4|~4.0",
+ "symfony/dependency-injection": "^4.3",
+ "symfony/dom-crawler": "~3.4|~4.0",
+ "symfony/expression-language": "~3.4|~4.0",
+ "symfony/finder": "~3.4|~4.0",
+ "symfony/process": "~3.4|~4.0",
+ "symfony/routing": "~3.4|~4.0",
+ "symfony/stopwatch": "~3.4|~4.0",
+ "symfony/templating": "~3.4|~4.0",
+ "symfony/translation": "~4.2",
+ "symfony/translation-contracts": "^1.1",
+ "symfony/var-dumper": "^4.1.1",
+ "twig/twig": "^1.34|^2.4"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": "",
+ "symfony/var-dumper": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony HttpKernel Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-06-06T13:23:34+00:00"
+ },
+ {
+ "name": "symfony/mime",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mime.git",
+ "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b",
+ "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-intl-idn": "^1.10",
+ "symfony/polyfill-mbstring": "^1.0"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.0",
+ "symfony/dependency-injection": "~3.4|^4.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mime\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A library to manipulate MIME messages",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "mime",
+ "mime-type"
+ ],
+ "time": "2019-06-04T09:22:54+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "82ebae02209c21113908c229e9883c419720738a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
+ "reference": "82ebae02209c21113908c229e9883c419720738a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ },
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "time": "2019-02-06T07:57:58+00:00"
+ },
+ {
+ "name": "symfony/polyfill-iconv",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-iconv.git",
+ "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7",
+ "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-iconv": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Iconv\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "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": "Symfony polyfill for the Iconv extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "iconv",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-02-06T07:57:58+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af",
+ "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-mbstring": "^1.3",
+ "symfony/polyfill-php72": "^1.9"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ },
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-03-04T13:44:35+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
+ "reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "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": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-02-06T07:57:58+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c",
+ "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "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": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-02-06T07:57:58+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd",
+ "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-02-06T07:57:58+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c",
+ "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-05-30T16:10:05+00:00"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/9b31cd24f6ad2cebde6845f6daa9c6d69efe2465",
+ "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "conflict": {
+ "symfony/config": "<4.2",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.2",
+ "psr/log": "~1.0",
+ "symfony/config": "~4.2",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/expression-language": "~3.4|~4.0",
+ "symfony/http-foundation": "~3.4|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation loader",
+ "symfony/config": "For using the all-in-one router or any loader",
+ "symfony/expression-language": "For using expression matching",
+ "symfony/http-foundation": "For using a Symfony Request object",
+ "symfony/yaml": "For using the YAML loader"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Routing\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Routing Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "router",
+ "routing",
+ "uri",
+ "url"
+ ],
+ "time": "2019-06-05T09:16:20+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d",
+ "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "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 writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-06-13T11:15:36+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/5dda505e5f65d759741dfaf4e54b36010a4b57aa",
+ "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^1.1.2"
+ },
+ "conflict": {
+ "symfony/config": "<3.4",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~3.4|~4.0",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/finder": "~2.8|~3.0|~4.0",
+ "symfony/http-kernel": "~3.4|~4.0",
+ "symfony/intl": "~3.4|~4.0",
+ "symfony/service-contracts": "^1.1.2",
+ "symfony/var-dumper": "~3.4|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
+ },
+ "suggest": {
+ "psr/log-implementation": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Translation Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-06-03T20:27:40+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c",
+ "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "suggest": {
+ "symfony/translation-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ }
+ },
+ "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 translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-06-13T11:15:36+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "f974f448154928d2b5fb7c412bd23b81d063f34b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f974f448154928d2b5fb7c412bd23b81d063f34b",
+ "reference": "f974f448154928d2b5fb7c412bd23b81d063f34b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php72": "~1.5"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "~3.4|~4.0",
+ "symfony/process": "~3.4|~4.0",
+ "twig/twig": "~1.34|~2.4"
+ },
+ "suggest": {
+ "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+ "ext-intl": "To show region name in time zone dump",
+ "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.3-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "Symfony mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "time": "2019-06-05T02:08:12+00:00"
+ },
+ {
+ "name": "tijsverkoyen/css-to-inline-styles",
+ "version": "2.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
+ "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
+ "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "symfony/css-selector": "^2.7 || ^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TijsVerkoyen\\CssToInlineStyles\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Tijs Verkoyen",
+ "email": "css_to_inline_styles@verkoyen.eu",
+ "role": "Developer"
+ }
+ ],
+ "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
+ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
+ "time": "2017-11-27T11:13:29+00:00"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "5084b23845c24dbff8ac6c204290c341e4776c92"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/5084b23845c24dbff8ac6c204290c341e4776c92",
+ "reference": "5084b23845c24dbff8ac6c204290c341e4776c92",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.4 || ^7.0",
+ "phpoption/phpoption": "^1.5",
+ "symfony/polyfill-ctype": "^1.9"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "http://www.vancelucas.com"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "time": "2019-06-15T22:40:20+00:00"
+ },
+ {
+ "name": "wm/crm",
+ "version": "dev-master",
+ "dist": {
+ "type": "path",
+ "url": "./modules/wm-crm",
+ "reference": "cc4c3a1b0e76cb736b2a54cab8edfe8478ef902b"
+ },
+ "require": {
+ "illuminate/support": "5.8.*",
+ "php": "^7.1.3",
+ "wm/task": "dev-master"
+ },
+ "require-dev": {
+ "orchestra/testbench": "~3.6.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "WM\\CRM\\CrmServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "WM\\CRM\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "WM\\CRM\\Tests\\": "tests/"
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "description": "client relationship management"
+ },
+ {
+ "name": "wm/task",
+ "version": "dev-master",
+ "dist": {
+ "type": "path",
+ "url": "./modules/wm-task",
+ "reference": "1d75a3a4ac879e59e62b9f19fb6d32222e13d271"
+ },
+ "require": {
+ "illuminate/support": "5.8.*",
+ "php": "^7.1.3"
+ },
+ "require-dev": {
+ "orchestra/testbench": "~3.6.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "WM\\Task\\TaskServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "WM\\Task\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "WM\\Task\\Tests\\": "tests/"
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "description": "task management"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "beyondcode/laravel-dump-server",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/beyondcode/laravel-dump-server.git",
+ "reference": "8864b9efcb48e0a79e83014dd7f0a5481f5c808f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/beyondcode/laravel-dump-server/zipball/8864b9efcb48e0a79e83014dd7f0a5481f5c808f",
+ "reference": "8864b9efcb48e0a79e83014dd7f0a5481f5c808f",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/console": "5.6.*|5.7.*|5.8.*",
+ "illuminate/http": "5.6.*|5.7.*|5.8.*",
+ "illuminate/support": "5.6.*|5.7.*|5.8.*",
+ "php": "^7.1",
+ "symfony/var-dumper": "^4.1.1"
+ },
+ "require-dev": {
+ "larapack/dd": "^1.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BeyondCode\\DumpServer\\DumpServerServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "BeyondCode\\DumpServer\\": "src"
+ },
+ "files": [
+ "helpers.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marcel Pociot",
+ "email": "marcel@beyondco.de",
+ "homepage": "https://beyondcode.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Symfony Var-Dump Server for Laravel",
+ "homepage": "https://github.com/beyondcode/laravel-dump-server",
+ "keywords": [
+ "beyondcode",
+ "laravel-dump-server"
+ ],
+ "time": "2018-10-04T07:22:24+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "a2c590166b2133a4633738648b6b064edae0814a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a",
+ "reference": "a2c590166b2133a4633738648b6b064edae0814a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13",
+ "phpstan/phpstan-phpunit": "^0.11",
+ "phpstan/phpstan-shim": "^0.11",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2019-03-17T17:37:11+00:00"
+ },
+ {
+ "name": "filp/whoops",
+ "version": "2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filp/whoops.git",
+ "reference": "1a1a1044ad00e285bd2825fac4c3a0443d90ad33"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/1a1a1044ad00e285bd2825fac4c3a0443d90ad33",
+ "reference": "1a1a1044ad00e285bd2825fac4c3a0443d90ad33",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9 || ^7.0",
+ "psr/log": "^1.0.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9 || ^1.0",
+ "phpunit/phpunit": "^4.8.35 || ^5.7",
+ "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0"
+ },
+ "suggest": {
+ "symfony/var-dumper": "Pretty print complex values better with var-dumper available",
+ "whoops/soap": "Formats errors as SOAP responses"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Whoops\\": "src/Whoops/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Filipe Dobreira",
+ "homepage": "https://github.com/filp",
+ "role": "Developer"
+ }
+ ],
+ "description": "php error handling for cool kids",
+ "homepage": "https://filp.github.io/whoops/",
+ "keywords": [
+ "error",
+ "exception",
+ "handling",
+ "library",
+ "throwable",
+ "whoops"
+ ],
+ "time": "2019-06-23T09:00:00+00:00"
+ },
+ {
+ "name": "fzaninotto/faker",
+ "version": "v1.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fzaninotto/Faker.git",
+ "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de",
+ "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "ext-intl": "*",
+ "phpunit/phpunit": "^4.8.35 || ^5.7",
+ "squizlabs/php_codesniffer": "^1.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.8-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Faker\\": "src/Faker/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "François Zaninotto"
+ }
+ ],
+ "description": "Faker is a PHP library that generates fake data for you.",
+ "keywords": [
+ "data",
+ "faker",
+ "fixtures"
+ ],
+ "time": "2018-07-12T10:23:15+00:00"
+ },
+ {
+ "name": "hamcrest/hamcrest-php",
+ "version": "v2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad",
+ "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3|^7.0"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
+ },
+ "require-dev": {
+ "phpunit/php-file-iterator": "1.3.3",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "hamcrest"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD"
+ ],
+ "description": "This is the PHP port of Hamcrest Matchers",
+ "keywords": [
+ "test"
+ ],
+ "time": "2016-01-20T08:20:44+00:00"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mockery/mockery.git",
+ "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2",
+ "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2",
+ "shasum": ""
+ },
+ "require": {
+ "hamcrest/hamcrest-php": "~2.0",
+ "lib-pcre": ">=7.0",
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mockery": "library/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Pádraic Brady",
+ "email": "padraic.brady@gmail.com",
+ "homepage": "http://blog.astrumfutura.com"
+ },
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall@atstsolutions.co.uk",
+ "homepage": "http://davedevelopment.co.uk"
+ }
+ ],
+ "description": "Mockery is a simple yet flexible PHP mock object framework",
+ "homepage": "https://github.com/mockery/mockery",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "library",
+ "mock",
+ "mock objects",
+ "mockery",
+ "stub",
+ "test",
+ "test double",
+ "testing"
+ ],
+ "time": "2019-02-13T09:37:52+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72",
+ "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "time": "2019-04-07T13:18:21+00:00"
+ },
+ {
+ "name": "nunomaduro/collision",
+ "version": "v2.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nunomaduro/collision.git",
+ "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b5feb0c0d92978ec7169232ce5d70d6da6b29f63",
+ "reference": "b5feb0c0d92978ec7169232ce5d70d6da6b29f63",
+ "shasum": ""
+ },
+ "require": {
+ "filp/whoops": "^2.1.4",
+ "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*",
+ "php": "^7.1",
+ "symfony/console": "~2.8|~3.3|~4.0"
+ },
+ "require-dev": {
+ "laravel/framework": "5.7.*",
+ "nunomaduro/larastan": "^0.3.0",
+ "phpstan/phpstan": "^0.10",
+ "phpunit/phpunit": "~7.3"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "NunoMaduro\\Collision\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "Cli error handling for console/command-line PHP applications.",
+ "keywords": [
+ "artisan",
+ "cli",
+ "command-line",
+ "console",
+ "error",
+ "handling",
+ "laravel",
+ "laravel-zero",
+ "php",
+ "symfony"
+ ],
+ "time": "2018-11-21T21:40:54+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^2.0",
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "time": "2018-07-08T19:23:20+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2018-07-08T19:19:57+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.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"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
+ "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.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": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2019-04-30T17:48:53+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.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"
+ }
+ ],
+ "time": "2017-07-14T14:27:02+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
+ "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.8.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"
+ ],
+ "time": "2019-06-13T12:50:23+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "6.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
+ "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.1",
+ "phpunit/php-file-iterator": "^2.0",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^3.0",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^3.1 || ^4.0",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2018-10-31T16:06:48+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2018-09-13T20:33:42+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
+ "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2019-06-07T04:22:29+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18",
+ "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2018-10-30T05:52:18+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "7.5.13",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "b9278591caa8630127f96c63b598712b699e671c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b9278591caa8630127f96c63b598712b699e671c",
+ "reference": "b9278591caa8630127f96c63b598712b699e671c",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "^1.7",
+ "phar-io/manifest": "^1.0.2",
+ "phar-io/version": "^2.0",
+ "php": "^7.1",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^6.0.7",
+ "phpunit/php-file-iterator": "^2.0.1",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^2.1",
+ "sebastian/comparator": "^3.0",
+ "sebastian/diff": "^3.0",
+ "sebastian/environment": "^4.0",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^2.0",
+ "sebastian/version": "^2.0.1"
+ },
+ "conflict": {
+ "phpunit/phpunit-mock-objects": "*"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^2.0"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.5-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2019-06-19T12:01:51+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1",
+ "sebastian/diff": "^3.0",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2018-07-12T15:12:46+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+ "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5 || ^8.0",
+ "symfony/process": "^2 || ^3.3 || ^4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "time": "2019-02-04T06:01:07+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "4.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404",
+ "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2019-05-05T09:05:15+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2017-04-03T13:19:02+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2017-04-27T15:39:26+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-08-03T12:35:26+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-29T09:07:27+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2017-03-03T06:23:57+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2018-10-04T04:07:39+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "time": "2019-06-13T22:48:21+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
+ "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2018-12-25T11:19:39+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": {
+ "wm/crm": 20,
+ "wm/task": 20
+ },
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.1.3"
+ },
+ "platform-dev": []
+}
diff --git a/public/Authentication/js/app.js b/public/Authentication/js/app.js
deleted file mode 100644
index aa59701..0000000
--- a/public/Authentication/js/app.js
+++ /dev/null
@@ -1,66077 +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/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Authentication/App.vue?vue&type=script&lang=js&":
-/*!******************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Authentication/App.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 _JS_Authentication_components_Background__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @JS/Authentication/components/Background */ "./resources/js/Authentication/components/Background.vue");
-/* harmony import */ var _JS_Authentication_components_Tile__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @JS/Authentication/components/Tile */ "./resources/js/Authentication/components/Tile.vue");
-/* harmony import */ var _JS_Authentication_components_Loader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @JS/Authentication/components/Loader */ "./resources/js/Authentication/components/Loader.vue");
-/* harmony import */ var _JS_Authentication_components_Header__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @JS/Authentication/components/Header */ "./resources/js/Authentication/components/Header.vue");
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-
-/* harmony default export */ __webpack_exports__["default"] = ({
- data: function data() {
- return {
- loading: true,
- isShifted: false,
- loadingVisible: false,
- RegisterStatus: false,
- LoginStatus: false,
- State: 'Login'
- };
- },
- components: {
- Header: _JS_Authentication_components_Header__WEBPACK_IMPORTED_MODULE_3__["default"],
- background: _JS_Authentication_components_Background__WEBPACK_IMPORTED_MODULE_0__["default"],
- Tile: _JS_Authentication_components_Tile__WEBPACK_IMPORTED_MODULE_1__["default"],
- Loader: _JS_Authentication_components_Loader__WEBPACK_IMPORTED_MODULE_2__["default"]
- },
- methods: {
- Register: function Register() {
- // console.log(this.$refs.RegisterContainer)
- this.RegisterStatus = !this.RegisterStatus;
- this.LoginStatus = !this.LoginStatus;
- },
- Log: function Log(value) {
- this.$store.commit('Log', value);
- }
- },
- beforeMount: function beforeMount() {
- var self = this;
- setTimeout(function () {
- self.loading = !self.loading;
- }, 2000);
- }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Authentication/components/Background.vue?vue&type=script&lang=js&":
-/*!************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Authentication/components/Background.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"] = ({
- methods: {
- moveGradient: function moveGradient() {
- var c = document.getElementById("canvas__bg");
- var $ = c.getContext("2d");
-
- var col = function col(x, y, r, g, b) {
- $.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
- $.fillRect(x, y, 1, 1);
- };
-
- var R = function R(x, y, t) {
- return Math.floor(130 + 64 * Math.cos((x * x - y * y) / 300 + t));
- };
-
- var G = function G(x, y, t) {
- return Math.floor(0 + 64 * Math.sin((x * x * Math.cos(t / 4) + y * y * Math.sin(t / 3)) / 300));
- };
-
- var B = function B(x, y, t) {
- return Math.floor(250 + 64 * Math.sin(5 * Math.sin(t / 9) + ((x - 100) * (x - 100) + (y - 100) * (y - 100)) / 1100));
- };
-
- var t = 0;
-
- var run = function run() {
- for (var x = 0; x <= 35; x++) {
- for (var y = 0; y <= 35; y++) {
- col(x, y, R(x, y, t), G(x, y, t), B(x, y, t));
- }
- }
-
- t = t + 0.03;
- window.requestAnimationFrame(run);
- };
-
- (function () {
- setTimeout(function () {
- run(); // canvas background animation
- }, 100);
- })();
- }
- },
- mounted: function mounted() {
- this.moveGradient();
- }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Authentication/components/Header.vue?vue&type=script&lang=js&":
-/*!********************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Authentication/components/Header.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: {}
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Authentication/components/Loader.vue?vue&type=script&lang=js&":
-/*!********************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Authentication/components/Loader.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"] = ({});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Authentication/components/Tile.vue?vue&type=script&lang=js&":
-/*!******************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Authentication/components/Tile.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"] = ({});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Global/components/Dividers/PageTitle.vue?vue&type=script&lang=js&":
-/*!************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Global/components/Dividers/PageTitle.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: {
- TitleFa: {
- "default": "عنوان بخش"
- },
- TitleEn: {
- "default": "Part Title"
- },
- Color: {
- "default": "Red"
- },
- TitleFaClass: {
- "default": "WM-Color-White"
- }
- }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Global/components/Dividers/PartTitle.vue?vue&type=script&lang=js&":
-/*!************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Global/components/Dividers/PartTitle.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: {
- TitleFa: {
- "default": "عنوان بخش"
- },
- TitleEn: {
- "default": "Part Title"
- },
- Color: {
- "default": "black"
- },
- TextColor: {
- "default": "white--text"
- },
- TextFaColor: {
- "default": "black--text"
- }
- },
- data: function data() {
- return {};
- }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Global/components/Inputs/Checkbox.vue?vue&type=script&lang=js&":
-/*!*********************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Global/components/Inputs/Checkbox.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: {
- ItemID: {
- "default": "Checkbox"
- },
- ItemText: {
- "default": " مقدار پیش فرض "
- },
- Color: {
- "default": "Red"
- }
- },
- data: function data() {
- return {
- IconClass: 'WMi-' + this.Icon
- };
- }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Global/components/Misc/Breadcrumbs.vue?vue&type=script&lang=js&":
-/*!**********************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Global/components/Misc/Breadcrumbs.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: {
- LinkClass: {
- "default": 'WM-Link-Red'
- },
- items: {
- "default": []
- }
- }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./resources/js/Global/components/Misc/InfoBlock.vue?vue&type=script&lang=js&":
-/*!********************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib??ref--4-0!./node_modules/vue-loader/lib??vue-loader-options!./resources/js/Global/components/Misc/InfoBlock.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: {
- Icon: {
- "default": 'check'
- },
- Title: {
- "default": " عنوان "
- },
- Value: {
- "default": " پسر خوب "
- },
- Size: {
- "default": "xs12 sm4 md3"
- }
- }
-});
-
-/***/ }),
-
-/***/ "./node_modules/bootstrap-select/dist/css/bootstrap-select.css":
-/*!*********************************************************************!*\
- !*** ./node_modules/bootstrap-select/dist/css/bootstrap-select.css ***!
- \*********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-
-var content = __webpack_require__(/*! !../../../css-loader??ref--5-1!../../../postcss-loader/src??ref--5-2!./bootstrap-select.css */ "./node_modules/css-loader/index.js?!./node_modules/postcss-loader/src/index.js?!./node_modules/bootstrap-select/dist/css/bootstrap-select.css");
-
-if(typeof content === 'string') content = [[module.i, content, '']];
-
-var transform;
-var insertInto;
-
-
-
-var options = {"hmr":true}
-
-options.transform = transform
-options.insertInto = undefined;
-
-var update = __webpack_require__(/*! ../../../style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options);
-
-if(content.locals) module.exports = content.locals;
-
-if(false) {}
-
-/***/ }),
-
-/***/ "./node_modules/bootstrap-select/dist/js/bootstrap-select.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/bootstrap-select/dist/js/bootstrap-select.js ***!
- \*******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
- * Bootstrap-select v1.13.5 (https://developer.snapappointments.com/bootstrap-select)
- *
- * Copyright 2012-2018 SnapAppointments, LLC
- * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)
- */
-
-(function (root, factory) {
- if (root === undefined && window !== undefined) root = window;
- if (true) {
- // AMD. Register as an anonymous module unless amdModuleId is set
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (a0) {
- return (factory(a0));
- }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else {}
-}(this, function (jQuery) {
-
-(function ($) {
- 'use strict';
-
- // Polyfill for browsers with no classList support
- // Remove in v2
- if (!('classList' in document.createElement('_'))) {
- (function (view) {
- if (!('Element' in view)) return;
-
- var classListProp = 'classList',
- protoProp = 'prototype',
- elemCtrProto = view.Element[protoProp],
- objCtr = Object,
- classListGetter = function () {
- var $elem = $(this);
-
- return {
- add: function (classes) {
- return $elem.addClass(classes);
- },
- remove: function (classes) {
- return $elem.removeClass(classes);
- },
- toggle: function (classes, force) {
- return $elem.toggleClass(classes, force);
- },
- contains: function (classes) {
- return $elem.hasClass(classes);
- }
- }
- };
-
- if (objCtr.defineProperty) {
- var classListPropDesc = {
- get: classListGetter,
- enumerable: true,
- configurable: true
- };
- try {
- objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
- } catch (ex) { // IE 8 doesn't support enumerable:true
- // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36
- // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected
- if (ex.number === undefined || ex.number === -0x7FF5EC54) {
- classListPropDesc.enumerable = false;
- objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
- }
- }
- } else if (objCtr[protoProp].__defineGetter__) {
- elemCtrProto.__defineGetter__(classListProp, classListGetter);
- }
- }(window));
- }
-
- var testElement = document.createElement('_');
-
- testElement.classList.toggle('c3', false);
-
- // Polyfill for IE 10 and Firefox <24, where classList.toggle does not
- // support the second argument.
- if (testElement.classList.contains('c3')) {
- var _toggle = DOMTokenList.prototype.toggle;
-
- DOMTokenList.prototype.toggle = function (token, force) {
- if (1 in arguments && !this.contains(token) === !force) {
- return force;
- } else {
- return _toggle.call(this, token);
- }
- };
- }
-
- testElement = null;
-
- // shallow array comparison
- function isEqual (array1, array2) {
- return array1.length === array2.length && array1.every(function (element, index) {
- return element === array2[index];
- });
- };
-
- //
- if (!String.prototype.startsWith) {
- (function () {
- 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
- var defineProperty = (function () {
- // IE 8 only supports `Object.defineProperty` on DOM elements
- try {
- var object = {};
- var $defineProperty = Object.defineProperty;
- var result = $defineProperty(object, object, object) && $defineProperty;
- } catch (error) {
- }
- return result;
- }());
- var toString = {}.toString;
- var startsWith = function (search) {
- if (this == null) {
- throw new TypeError();
- }
- var string = String(this);
- if (search && toString.call(search) == '[object RegExp]') {
- throw new TypeError();
- }
- var stringLength = string.length;
- var searchString = String(search);
- var searchLength = searchString.length;
- var position = arguments.length > 1 ? arguments[1] : undefined;
- // `ToInteger`
- var pos = position ? Number(position) : 0;
- if (pos != pos) { // better `isNaN`
- pos = 0;
- }
- var start = Math.min(Math.max(pos, 0), stringLength);
- // Avoid the `indexOf` call if no match is possible
- if (searchLength + start > stringLength) {
- return false;
- }
- var index = -1;
- while (++index < searchLength) {
- if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {
- return false;
- }
- }
- return true;
- };
- if (defineProperty) {
- defineProperty(String.prototype, 'startsWith', {
- 'value': startsWith,
- 'configurable': true,
- 'writable': true
- });
- } else {
- String.prototype.startsWith = startsWith;
- }
- }());
- }
-
- if (!Object.keys) {
- Object.keys = function (
- o, // object
- k, // key
- r // result array
- ) {
- // initialize object and result
- r = [];
- // iterate over object keys
- for (k in o) {
- // fill result array with non-prototypical keys
- r.hasOwnProperty.call(o, k) && r.push(k);
- }
- // return result
- return r;
- };
- }
-
- // much faster than $.val()
- function getSelectValues (select) {
- var result = [];
- var options = select && select.options;
- var opt;
-
- if (select.multiple) {
- for (var i = 0, len = options.length; i < len; i++) {
- opt = options[i];
-
- if (opt.selected) {
- result.push(opt.value || opt.text);
- }
- }
- } else {
- result = select.value;
- }
-
- return result;
- }
-
- // set data-selected on select element if the value has been programmatically selected
- // prior to initialization of bootstrap-select
- // * consider removing or replacing an alternative method *
- var valHooks = {
- useDefault: false,
- _set: $.valHooks.select.set
- };
-
- $.valHooks.select.set = function (elem, value) {
- if (value && !valHooks.useDefault) $(elem).data('selected', true);
-
- return valHooks._set.apply(this, arguments);
- };
-
- var changedArguments = null;
-
- var EventIsSupported = (function () {
- try {
- new Event('change');
- return true;
- } catch (e) {
- return false;
- }
- })();
-
- $.fn.triggerNative = function (eventName) {
- var el = this[0],
- event;
-
- if (el.dispatchEvent) { // for modern browsers & IE9+
- if (EventIsSupported) {
- // For modern browsers
- event = new Event(eventName, {
- bubbles: true
- });
- } else {
- // For IE since it doesn't support Event constructor
- event = document.createEvent('Event');
- event.initEvent(eventName, true, false);
- }
-
- el.dispatchEvent(event);
- } else if (el.fireEvent) { // for IE8
- event = document.createEventObject();
- event.eventType = eventName;
- el.fireEvent('on' + eventName, event);
- } else {
- // fall back to jQuery.trigger
- this.trigger(eventName);
- }
- };
- //
-
- function stringSearch (li, searchString, method, normalize) {
- var stringTypes = [
- 'content',
- 'subtext',
- 'tokens'
- ],
- searchSuccess = false;
-
- for (var i = 0; i < stringTypes.length; i++) {
- var stringType = stringTypes[i],
- string = li[stringType];
-
- if (string) {
- string = string.toString();
-
- // Strip HTML tags. This isn't perfect, but it's much faster than any other method
- if (stringType === 'content') {
- string = string.replace(/<[^>]+>/g, '');
- }
-
- if (normalize) string = normalizeToBase(string);
- string = string.toUpperCase();
-
- if (method === 'contains') {
- searchSuccess = string.indexOf(searchString) >= 0;
- } else {
- searchSuccess = string.startsWith(searchString);
- }
-
- if (searchSuccess) break;
- }
- }
-
- return searchSuccess;
- }
-
- function toInteger (value) {
- return parseInt(value, 10) || 0;
- }
-
- // Borrowed from Lodash (_.deburr)
- /** Used to map Latin Unicode letters to basic Latin letters. */
- var deburredLetters = {
- // Latin-1 Supplement block.
- '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
- '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
- '\xc7': 'C', '\xe7': 'c',
- '\xd0': 'D', '\xf0': 'd',
- '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
- '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
- '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
- '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i',
- '\xd1': 'N', '\xf1': 'n',
- '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
- '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
- '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
- '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
- '\xdd': 'Y', '\xfd': 'y', '\xff': 'y',
- '\xc6': 'Ae', '\xe6': 'ae',
- '\xde': 'Th', '\xfe': 'th',
- '\xdf': 'ss',
- // Latin Extended-A block.
- '\u0100': 'A', '\u0102': 'A', '\u0104': 'A',
- '\u0101': 'a', '\u0103': 'a', '\u0105': 'a',
- '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
- '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
- '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
- '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
- '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
- '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
- '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
- '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
- '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
- '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
- '\u0134': 'J', '\u0135': 'j',
- '\u0136': 'K', '\u0137': 'k', '\u0138': 'k',
- '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
- '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
- '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
- '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
- '\u014c': 'O', '\u014e': 'O', '\u0150': 'O',
- '\u014d': 'o', '\u014f': 'o', '\u0151': 'o',
- '\u0154': 'R', '\u0156': 'R', '\u0158': 'R',
- '\u0155': 'r', '\u0157': 'r', '\u0159': 'r',
- '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
- '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's',
- '\u0162': 'T', '\u0164': 'T', '\u0166': 'T',
- '\u0163': 't', '\u0165': 't', '\u0167': 't',
- '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
- '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
- '\u0174': 'W', '\u0175': 'w',
- '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y',
- '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z',
- '\u017a': 'z', '\u017c': 'z', '\u017e': 'z',
- '\u0132': 'IJ', '\u0133': 'ij',
- '\u0152': 'Oe', '\u0153': 'oe',
- '\u0149': "'n", '\u017f': 's'
- };
-
- /** Used to match Latin Unicode letters (excluding mathematical operators). */
- var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
-
- /** Used to compose unicode character classes. */
- var rsComboMarksRange = '\\u0300-\\u036f',
- reComboHalfMarksRange = '\\ufe20-\\ufe2f',
- rsComboSymbolsRange = '\\u20d0-\\u20ff',
- rsComboMarksExtendedRange = '\\u1ab0-\\u1aff',
- rsComboMarksSupplementRange = '\\u1dc0-\\u1dff',
- rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange;
-
- /** Used to compose unicode capture groups. */
- var rsCombo = '[' + rsComboRange + ']';
-
- /**
- * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
- * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
- */
- var reComboMark = RegExp(rsCombo, 'g');
-
- function deburrLetter (key) {
- return deburredLetters[key];
- };
-
- function normalizeToBase (string) {
- string = string.toString();
- return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
- }
-
- // List of HTML entities for escaping.
- var escapeMap = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- "'": ''',
- '`': '`'
- };
-
- var unescapeMap = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- ''': "'",
- '`': '`'
- };
-
- // Functions for escaping and unescaping strings to/from HTML interpolation.
- var createEscaper = function (map) {
- var escaper = function (match) {
- return map[match];
- };
- // Regexes for identifying a key that needs to be escaped.
- var source = '(?:' + Object.keys(map).join('|') + ')';
- var testRegexp = RegExp(source);
- var replaceRegexp = RegExp(source, 'g');
- return function (string) {
- string = string == null ? '' : '' + string;
- return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
- };
- };
-
- var htmlEscape = createEscaper(escapeMap);
- var htmlUnescape = createEscaper(unescapeMap);
-
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
-
- var keyCodeMap = {
- 32: ' ',
- 48: '0',
- 49: '1',
- 50: '2',
- 51: '3',
- 52: '4',
- 53: '5',
- 54: '6',
- 55: '7',
- 56: '8',
- 57: '9',
- 59: ';',
- 65: 'A',
- 66: 'B',
- 67: 'C',
- 68: 'D',
- 69: 'E',
- 70: 'F',
- 71: 'G',
- 72: 'H',
- 73: 'I',
- 74: 'J',
- 75: 'K',
- 76: 'L',
- 77: 'M',
- 78: 'N',
- 79: 'O',
- 80: 'P',
- 81: 'Q',
- 82: 'R',
- 83: 'S',
- 84: 'T',
- 85: 'U',
- 86: 'V',
- 87: 'W',
- 88: 'X',
- 89: 'Y',
- 90: 'Z',
- 96: '0',
- 97: '1',
- 98: '2',
- 99: '3',
- 100: '4',
- 101: '5',
- 102: '6',
- 103: '7',
- 104: '8',
- 105: '9'
- };
-
- var keyCodes = {
- ESCAPE: 27, // KeyboardEvent.which value for Escape (Esc) key
- ENTER: 13, // KeyboardEvent.which value for Enter key
- SPACE: 32, // KeyboardEvent.which value for space key
- TAB: 9, // KeyboardEvent.which value for tab key
- ARROW_UP: 38, // KeyboardEvent.which value for up arrow key
- ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key
- }
-
- var version = {
- success: false,
- major: '3'
- };
-
- try {
- version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.');
- version.major = version.full[0];
- version.success = true;
- } catch (err) {
- console.warn(
- 'There was an issue retrieving Bootstrap\'s version. ' +
- 'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' +
- 'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.',
- err
- );
- }
-
- var selectId = 0;
-
- var EVENT_KEY = '.bs.select';
-
- var classNames = {
- DISABLED: 'disabled',
- DIVIDER: 'divider',
- SHOW: 'open',
- DROPUP: 'dropup',
- MENU: 'dropdown-menu',
- MENURIGHT: 'dropdown-menu-right',
- MENULEFT: 'dropdown-menu-left',
- // to-do: replace with more advanced template/customization options
- BUTTONCLASS: 'btn-default',
- POPOVERHEADER: 'popover-title'
- }
-
- var Selector = {
- MENU: '.' + classNames.MENU
- }
-
- if (version.major === '4') {
- classNames.DIVIDER = 'dropdown-divider';
- classNames.SHOW = 'show';
- classNames.BUTTONCLASS = 'btn-light';
- classNames.POPOVERHEADER = 'popover-header';
- }
-
- var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN);
- var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE);
-
- var Selectpicker = function (element, options) {
- var that = this;
-
- // bootstrap-select has been initialized - revert valHooks.select.set back to its original function
- if (!valHooks.useDefault) {
- $.valHooks.select.set = valHooks._set;
- valHooks.useDefault = true;
- }
-
- this.$element = $(element);
- this.$newElement = null;
- this.$button = null;
- this.$menu = null;
- this.options = options;
- this.selectpicker = {
- main: {
- // store originalIndex (key) and newIndex (value) in this.selectpicker.main.map.newIndex for fast accessibility
- // allows us to do this.main.elements[this.selectpicker.main.map.newIndex[index]] to select an element based on the originalIndex
- map: {
- newIndex: {},
- originalIndex: {}
- }
- },
- current: {
- map: {}
- }, // current changes if a search is in progress
- search: {
- map: {}
- },
- view: {},
- keydown: {
- keyHistory: '',
- resetKeyHistory: {
- start: function () {
- return setTimeout(function () {
- that.selectpicker.keydown.keyHistory = '';
- }, 800);
- }
- }
- }
- };
- // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
- // data-attribute)
- if (this.options.title === null) {
- this.options.title = this.$element.attr('title');
- }
-
- // Format window padding
- var winPad = this.options.windowPadding;
- if (typeof winPad === 'number') {
- this.options.windowPadding = [winPad, winPad, winPad, winPad];
- }
-
- // Expose public methods
- this.val = Selectpicker.prototype.val;
- this.render = Selectpicker.prototype.render;
- this.refresh = Selectpicker.prototype.refresh;
- this.setStyle = Selectpicker.prototype.setStyle;
- this.selectAll = Selectpicker.prototype.selectAll;
- this.deselectAll = Selectpicker.prototype.deselectAll;
- this.destroy = Selectpicker.prototype.destroy;
- this.remove = Selectpicker.prototype.remove;
- this.show = Selectpicker.prototype.show;
- this.hide = Selectpicker.prototype.hide;
-
- this.init();
- };
-
- Selectpicker.VERSION = '1.13.5';
-
- Selectpicker.BootstrapVersion = version.major;
-
- // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
- Selectpicker.DEFAULTS = {
- noneSelectedText: 'Nothing selected',
- noneResultsText: 'No results matched {0}',
- countSelectedText: function (numSelected, numTotal) {
- return (numSelected == 1) ? '{0} item selected' : '{0} items selected';
- },
- maxOptionsText: function (numAll, numGroup) {
- return [
- (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',
- (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'
- ];
- },
- selectAllText: 'Select All',
- deselectAllText: 'Deselect All',
- doneButton: false,
- doneButtonText: 'Close',
- multipleSeparator: ', ',
- styleBase: 'btn',
- style: classNames.BUTTONCLASS,
- size: 'auto',
- title: null,
- selectedTextFormat: 'values',
- width: false,
- container: false,
- hideDisabled: false,
- showSubtext: false,
- showIcon: true,
- showContent: true,
- dropupAuto: true,
- header: false,
- liveSearch: false,
- liveSearchPlaceholder: null,
- liveSearchNormalize: false,
- liveSearchStyle: 'contains',
- actionsBox: false,
- iconBase: 'glyphicon',
- tickIcon: 'glyphicon-ok',
- showTick: false,
- template: {
- caret: ''
- },
- maxOptions: false,
- mobile: false,
- selectOnTab: false,
- dropdownAlignRight: false,
- windowPadding: 0,
- virtualScroll: 600,
- display: false
- };
-
- if (version.major === '4') {
- Selectpicker.DEFAULTS.style = 'btn-light';
- Selectpicker.DEFAULTS.iconBase = '';
- Selectpicker.DEFAULTS.tickIcon = 'bs-ok-default';
- }
-
- Selectpicker.prototype = {
-
- constructor: Selectpicker,
-
- init: function () {
- var that = this,
- id = this.$element.attr('id');
-
- this.selectId = selectId++;
-
- this.$element.addClass('bs-select-hidden');
-
- this.multiple = this.$element.prop('multiple');
- this.autofocus = this.$element.prop('autofocus');
- this.$newElement = this.createDropdown();
- this.createLi();
- this.$element
- .after(this.$newElement)
- .prependTo(this.$newElement);
- this.$button = this.$newElement.children('button');
- this.$menu = this.$newElement.children(Selector.MENU);
- this.$menuInner = this.$menu.children('.inner');
- this.$searchbox = this.$menu.find('input');
-
- this.$element.removeClass('bs-select-hidden');
-
- if (this.options.dropdownAlignRight === true) this.$menu.addClass(classNames.MENURIGHT);
-
- if (typeof id !== 'undefined') {
- this.$button.attr('data-id', id);
- }
-
- this.checkDisabled();
- this.clickListener();
- if (this.options.liveSearch) this.liveSearchListener();
- this.render();
- this.setStyle();
- this.setWidth();
- if (this.options.container) {
- this.selectPosition();
- } else {
- this.$element.on('hide' + EVENT_KEY, function () {
- if (that.isVirtual()) {
- // empty menu on close
- var menuInner = that.$menuInner[0],
- emptyMenu = menuInner.firstChild.cloneNode(false);
-
- // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = ''
- menuInner.replaceChild(emptyMenu, menuInner.firstChild);
- menuInner.scrollTop = 0;
- }
- });
- }
- this.$menu.data('this', this);
- this.$newElement.data('this', this);
- if (this.options.mobile) this.mobile();
-
- this.$newElement.on({
- 'hide.bs.dropdown': function (e) {
- that.$menuInner.attr('aria-expanded', false);
- that.$element.trigger('hide' + EVENT_KEY, e);
- },
- 'hidden.bs.dropdown': function (e) {
- that.$element.trigger('hidden' + EVENT_KEY, e);
- },
- 'show.bs.dropdown': function (e) {
- that.$menuInner.attr('aria-expanded', true);
- that.$element.trigger('show' + EVENT_KEY, e);
- },
- 'shown.bs.dropdown': function (e) {
- that.$element.trigger('shown' + EVENT_KEY, e);
- }
- });
-
- if (that.$element[0].hasAttribute('required')) {
- this.$element.on('invalid', function () {
- that.$button.addClass('bs-invalid');
-
- that.$element
- .on('shown' + EVENT_KEY + '.invalid', function () {
- that.$element
- .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened
- .off('shown' + EVENT_KEY + '.invalid');
- })
- .on('rendered' + EVENT_KEY, function () {
- // if select is no longer invalid, remove the bs-invalid class
- if (this.validity.valid) that.$button.removeClass('bs-invalid');
- that.$element.off('rendered' + EVENT_KEY);
- });
-
- that.$button.on('blur' + EVENT_KEY, function () {
- that.$element.focus().blur();
- that.$button.off('blur' + EVENT_KEY);
- });
- });
- }
-
- setTimeout(function () {
- that.$element.trigger('loaded' + EVENT_KEY);
- });
- },
-
- createDropdown: function () {
- // Options
- // If we are multiple or showTick option is set, then add the show-tick class
- var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '',
- autofocus = this.autofocus ? ' autofocus' : '';
-
- // Elements
- var drop,
- header = '',
- searchbox = '',
- actionsbox = '',
- donebutton = '';
-
- if (this.options.header) {
- header =
- '
';
- }
-
- if (this.options.liveSearch) {
- searchbox =
- '' +
- '' +
- '
';
- }
-
- if (this.multiple && this.options.actionsBox) {
- actionsbox =
- '' +
- '
' +
- '' +
- '' +
- '
' +
- '
';
- }
-
- if (this.multiple && this.options.doneButton) {
- donebutton =
- '';
- }
-
- drop =
- '' +
- '
' +
- '' +
- '
';
-
- return $(drop);
- },
-
- setPositionData: function () {
- this.selectpicker.view.canHighlight = [];
-
- for (var i = 0; i < this.selectpicker.current.data.length; i++) {
- var li = this.selectpicker.current.data[i],
- canHighlight = true;
-
- if (li.type === 'divider') {
- canHighlight = false;
- li.height = this.sizeInfo.dividerHeight;
- } else if (li.type === 'optgroup-label') {
- canHighlight = false;
- li.height = this.sizeInfo.dropdownHeaderHeight;
- } else {
- li.height = this.sizeInfo.liHeight;
- }
-
- if (li.disabled) canHighlight = false;
-
- this.selectpicker.view.canHighlight.push(canHighlight);
-
- li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height;
- }
- },
-
- isVirtual: function () {
- return (this.options.virtualScroll !== false) && (this.selectpicker.main.elements.length >= this.options.virtualScroll) || this.options.virtualScroll === true;
- },
-
- createView: function (isSearching, scrollTop) {
- scrollTop = scrollTop || 0;
-
- var that = this;
-
- this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main;
-
- var active = [];
- var selected;
- var prevActive;
-
- this.setPositionData();
-
- scroll(scrollTop, true);
-
- this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) {
- if (!that.noScroll) scroll(this.scrollTop, updateValue);
- that.noScroll = false;
- });
-
- function scroll (scrollTop, init) {
- var size = that.selectpicker.current.elements.length,
- chunks = [],
- chunkSize,
- chunkCount,
- firstChunk,
- lastChunk,
- currentChunk,
- prevPositions,
- positionIsDifferent,
- previousElements,
- menuIsDifferent = true,
- isVirtual = that.isVirtual();
-
- that.selectpicker.view.scrollTop = scrollTop;
-
- if (isVirtual === true) {
- // if an option that is encountered that is wider than the current menu width, update the menu width accordingly
- if (that.sizeInfo.hasScrollBar && that.$menu[0].offsetWidth > that.sizeInfo.totalMenuWidth) {
- that.sizeInfo.menuWidth = that.$menu[0].offsetWidth;
- that.sizeInfo.totalMenuWidth = that.sizeInfo.menuWidth + that.sizeInfo.scrollBarWidth;
- that.$menu.css('min-width', that.sizeInfo.menuWidth);
- }
- }
-
- chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk
- chunkCount = Math.round(size / chunkSize) || 1; // number of chunks
-
- for (var i = 0; i < chunkCount; i++) {
- var endOfChunk = (i + 1) * chunkSize;
-
- if (i === chunkCount - 1) {
- endOfChunk = size;
- }
-
- chunks[i] = [
- (i) * chunkSize + (!i ? 0 : 1),
- endOfChunk
- ];
-
- if (!size) break;
-
- if (currentChunk === undefined && scrollTop <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) {
- currentChunk = i;
- }
- }
-
- if (currentChunk === undefined) currentChunk = 0;
-
- prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1];
-
- // always display previous, current, and next chunks
- firstChunk = Math.max(0, currentChunk - 1);
- lastChunk = Math.min(chunkCount - 1, currentChunk + 1);
-
- that.selectpicker.view.position0 = Math.max(0, chunks[firstChunk][0]) || 0;
- that.selectpicker.view.position1 = Math.min(size, chunks[lastChunk][1]) || 0;
-
- positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1;
-
- if (that.activeIndex !== undefined) {
- prevActive = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.prevActiveIndex]];
- active = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.activeIndex]];
- selected = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.selectedIndex]];
-
- if (init) {
- if (that.activeIndex !== that.selectedIndex) {
- active.classList.remove('active');
- if (active.firstChild) active.firstChild.classList.remove('active');
- }
- that.activeIndex = undefined;
- }
-
- if (that.activeIndex && that.activeIndex !== that.selectedIndex && selected && selected.length) {
- selected.classList.remove('active');
- if (selected.firstChild) selected.firstChild.classList.remove('active');
- }
- }
-
- if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex && prevActive && prevActive.length) {
- prevActive.classList.remove('active');
- if (prevActive.firstChild) prevActive.firstChild.classList.remove('active');
- }
-
- if (init || positionIsDifferent) {
- previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : [];
-
- that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1);
-
- that.setOptionStatus();
-
- // if searching, check to make sure the list has actually been updated before updating DOM
- // this prevents unnecessary repaints
- if (isSearching || (isVirtual === false && init)) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements);
-
- // if virtual scroll is disabled and not searching,
- // menu should never need to be updated more than once
- if ((init || isVirtual === true) && menuIsDifferent) {
- var menuInner = that.$menuInner[0],
- menuFragment = document.createDocumentFragment(),
- emptyMenu = menuInner.firstChild.cloneNode(false),
- marginTop,
- marginBottom,
- elements = isVirtual === true ? that.selectpicker.view.visibleElements : that.selectpicker.current.elements;
-
- // replace the existing UL with an empty one - this is faster than $.empty()
- menuInner.replaceChild(emptyMenu, menuInner.firstChild);
-
- for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) {
- menuFragment.appendChild(elements[i]);
- }
-
- if (isVirtual === true) {
- marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position);
- marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position);
-
- menuInner.firstChild.style.marginTop = marginTop + 'px';
- menuInner.firstChild.style.marginBottom = marginBottom + 'px';
- }
-
- menuInner.firstChild.appendChild(menuFragment);
- }
- }
-
- that.prevActiveIndex = that.activeIndex;
-
- if (!that.options.liveSearch) {
- that.$menuInner.focus();
- } else if (isSearching && init) {
- var index = 0,
- newActive;
-
- if (!that.selectpicker.view.canHighlight[index]) {
- index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true);
- }
-
- newActive = that.selectpicker.view.visibleElements[index];
-
- if (that.selectpicker.view.currentActive) {
- that.selectpicker.view.currentActive.classList.remove('active');
- if (that.selectpicker.view.currentActive.firstChild) that.selectpicker.view.currentActive.firstChild.classList.remove('active');
- }
-
- if (newActive) {
- newActive.classList.add('active');
- if (newActive.firstChild) newActive.firstChild.classList.add('active');
- }
-
- that.activeIndex = that.selectpicker.current.map.originalIndex[index];
- }
- }
-
- $(window)
- .off('resize' + EVENT_KEY + '.' + this.selectId + '.createView')
- .on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () {
- var isActive = that.$newElement.hasClass(classNames.SHOW);
-
- if (isActive) scroll(that.$menuInner[0].scrollTop);
- });
- },
-
- createLi: function () {
- var that = this,
- mainElements = [],
- hiddenOptions = {},
- widestOption,
- availableOptionsCount = 0,
- widestOptionLength = 0,
- mainData = [],
- optID = 0,
- headerIndex = 0,
- liIndex = -1; // increment liIndex whenever a new element is created to ensure newIndex is correct
-
- if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option');
-
- var elementTemplates = {
- span: document.createElement('span'),
- subtext: document.createElement('small'),
- a: document.createElement('a'),
- li: document.createElement('li'),
- whitespace: document.createTextNode('\u00A0')
- },
- checkMark,
- fragment = document.createDocumentFragment();
-
- if (that.options.showTick || that.multiple) {
- checkMark = elementTemplates.span.cloneNode(false);
- checkMark.className = that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark';
- elementTemplates.a.appendChild(checkMark);
- }
-
- elementTemplates.a.setAttribute('role', 'option');
-
- elementTemplates.subtext.className = 'text-muted';
-
- elementTemplates.text = elementTemplates.span.cloneNode(false);
- elementTemplates.text.className = 'text';
-
- // Helper functions
- /**
- * @param content
- * @param [classes]
- * @param [optgroup]
- * @returns {HTMLElement}
- */
- var generateLI = function (content, classes, optgroup) {
- var li = elementTemplates.li.cloneNode(false);
-
- if (content) {
- if (content.nodeType === 1 || content.nodeType === 11) {
- li.appendChild(content);
- } else {
- li.innerHTML = content;
- }
- }
-
- if (typeof classes !== 'undefined' && classes !== '') li.className = classes;
- if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup);
-
- return li;
- };
-
- /**
- * @param text
- * @param [classes]
- * @param [inline]
- * @returns {string}
- */
- var generateA = function (text, classes, inline) {
- var a = elementTemplates.a.cloneNode(true);
-
- if (text) {
- if (text.nodeType === 11) {
- a.appendChild(text);
- } else {
- a.insertAdjacentHTML('beforeend', text);
- }
- }
-
- if (typeof classes !== 'undefined' && classes !== '') a.className = classes;
- if (version.major === '4') a.classList.add('dropdown-item');
- if (inline) a.setAttribute('style', inline);
-
- return a;
- };
-
- var generateText = function (options) {
- var textElement = elementTemplates.text.cloneNode(false),
- optionSubtextElement,
- optionIconElement;
-
- if (options.optionContent) {
- textElement.innerHTML = options.optionContent;
- } else {
- textElement.textContent = options.text;
-
- if (options.optionIcon) {
- var whitespace = elementTemplates.whitespace.cloneNode(false);
-
- optionIconElement = elementTemplates.span.cloneNode(false);
- optionIconElement.className = that.options.iconBase + ' ' + options.optionIcon;
-
- fragment.appendChild(optionIconElement);
- fragment.appendChild(whitespace);
- }
-
- if (options.optionSubtext) {
- optionSubtextElement = elementTemplates.subtext.cloneNode(false);
- optionSubtextElement.innerHTML = options.optionSubtext;
- textElement.appendChild(optionSubtextElement);
- }
- }
-
- fragment.appendChild(textElement);
-
- return fragment;
- };
-
- var generateLabel = function (options) {
- var labelTextElement = elementTemplates.text.cloneNode(false),
- labelSubtextElement,
- labelIconElement;
-
- labelTextElement.innerHTML = options.labelEscaped;
-
- if (options.labelIcon) {
- var whitespace = elementTemplates.whitespace.cloneNode(false);
-
- labelIconElement = elementTemplates.span.cloneNode(false);
- labelIconElement.className = that.options.iconBase + ' ' + options.labelIcon;
-
- fragment.appendChild(labelIconElement);
- fragment.appendChild(whitespace);
- }
-
- if (options.labelSubtext) {
- labelSubtextElement = elementTemplates.subtext.cloneNode(false);
- labelSubtextElement.textContent = options.labelSubtext;
- labelTextElement.appendChild(labelSubtextElement);
- }
-
- fragment.appendChild(labelTextElement);
-
- return fragment;
- }
-
- if (this.options.title && !this.multiple) {
- // this option doesn't create a new element, but does add a new option, so liIndex is decreased
- // since newIndex is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended
- liIndex--;
-
- var element = this.$element[0],
- isSelected = false,
- titleNotAppended = !this.selectpicker.view.titleOption.parentNode;
-
- if (titleNotAppended) {
- // Use native JS to prepend option (faster)
- this.selectpicker.view.titleOption.className = 'bs-title-option';
- this.selectpicker.view.titleOption.value = '';
-
- // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.
- // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs,
- // if so, the select will have the data-selected attribute
- var $opt = $(element.options[element.selectedIndex]);
- isSelected = $opt.attr('selected') === undefined && this.$element.data('selected') === undefined;
- }
-
- if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) {
- element.insertBefore(this.selectpicker.view.titleOption, element.firstChild);
- }
-
- // Set selected *after* appending to select,
- // otherwise the option doesn't get selected in IE
- // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11
- if (isSelected) element.selectedIndex = 0;
- }
-
- var $selectOptions = this.$element.find('option');
-
- $selectOptions.each(function (index) {
- var $this = $(this);
-
- liIndex++;
-
- if ($this.hasClass('bs-title-option')) return;
-
- var thisData = $this.data();
-
- // Get the class and text for the option
- var optionClass = this.className || '',
- inline = htmlEscape(this.style.cssText),
- optionContent = thisData.content,
- text = this.textContent,
- tokens = thisData.tokens,
- subtext = thisData.subtext,
- icon = thisData.icon,
- $parent = $this.parent(),
- parent = $parent[0],
- isOptgroup = parent.tagName === 'OPTGROUP',
- isOptgroupDisabled = isOptgroup && parent.disabled,
- isDisabled = this.disabled || isOptgroupDisabled,
- prevHiddenIndex,
- showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP',
- textElement,
- labelElement,
- prevHidden;
-
- var parentData = $parent.data();
-
- if ((thisData.hidden === true || this.hidden) || (that.options.hideDisabled && (isDisabled || isOptgroupDisabled))) {
- // set prevHiddenIndex - the index of the first hidden option in a group of hidden options
- // used to determine whether or not a divider should be placed after an optgroup if there are
- // hidden options between the optgroup and the first visible option
- prevHiddenIndex = thisData.prevHiddenIndex;
- $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index));
-
- liIndex--;
-
- hiddenOptions[index] = {
- type: 'hidden',
- data: thisData
- }
-
- // if previous element is not an optgroup
- if (!showDivider) {
- if (prevHiddenIndex !== undefined) {
- // select the element **before** the first hidden element in the group
- prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling;
-
- if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) {
- showDivider = true;
- }
- }
- }
-
- if (showDivider && mainData[mainData.length - 1].type !== 'divider') {
- liIndex++;
- mainElements.push(
- generateLI(
- false,
- classNames.DIVIDER,
- optID + 'div'
- )
- );
- mainData.push({
- type: 'divider',
- optID: optID
- });
- }
-
- return;
- }
-
- if (isOptgroup && thisData.divider !== true) {
- if (that.options.hideDisabled && isDisabled) {
- if (parentData.allOptionsDisabled === undefined) {
- var $options = $parent.children();
- $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length);
- }
-
- if ($parent.data('allOptionsDisabled')) {
- liIndex--;
- return;
- }
- }
-
- var optGroupClass = ' ' + parent.className || false,
- previousOption = this.previousElementSibling;
-
- prevHiddenIndex = thisData.prevHiddenIndex;
-
- if (prevHiddenIndex !== undefined) {
- previousOption = $selectOptions[prevHiddenIndex].previousElementSibling;
- }
-
- if (!previousOption) { // Is it the first option of the optgroup?
- optID += 1;
-
- // Get the opt group label
- var label = parent.label,
- labelEscaped = htmlEscape(label),
- labelSubtext = parentData.subtext,
- labelIcon = parentData.icon;
-
- if (index !== 0 && mainElements.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
- liIndex++;
- mainElements.push(
- generateLI(
- false,
- classNames.DIVIDER,
- optID + 'div'
- )
- );
- mainData.push({
- type: 'divider',
- optID: optID
- });
- }
- liIndex++;
-
- labelElement = generateLabel({
- labelEscaped: labelEscaped,
- labelSubtext: labelSubtext,
- labelIcon: labelIcon
- });
-
- mainElements.push(generateLI(labelElement, 'dropdown-header' + optGroupClass, optID));
- mainData.push({
- content: labelEscaped,
- subtext: labelSubtext,
- type: 'optgroup-label',
- optID: optID
- });
-
- headerIndex = liIndex - 1;
- }
-
- textElement = generateText({
- text: text,
- optionContent: optionContent,
- optionSubtext: subtext,
- optionIcon: icon
- });
-
- mainElements.push(generateLI(generateA(textElement, 'opt ' + optionClass + optGroupClass, inline), '', optID));
- mainData.push({
- content: optionContent || text,
- subtext: subtext,
- tokens: tokens,
- type: 'option',
- optID: optID,
- headerIndex: headerIndex,
- lastIndex: headerIndex + parent.childElementCount,
- originalIndex: index,
- data: thisData
- });
-
- availableOptionsCount++;
- } else if (thisData.divider === true) {
- mainElements.push(generateLI(false, classNames.DIVIDER));
- mainData.push({
- type: 'divider',
- originalIndex: index,
- data: thisData
- });
- } else {
- // if previous element is not an optgroup and hideDisabled is true
- if (!showDivider && that.options.hideDisabled) {
- prevHiddenIndex = thisData.prevHiddenIndex;
-
- if (prevHiddenIndex !== undefined) {
- // select the element **before** the first hidden element in the group
- prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling;
-
- if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) {
- showDivider = true;
- }
- }
- }
-
- if (showDivider && mainData[mainData.length - 1].type !== 'divider') {
- liIndex++;
- mainElements.push(
- generateLI(
- false,
- classNames.DIVIDER,
- optID + 'div'
- )
- );
- mainData.push({
- type: 'divider',
- optID: optID
- });
- }
-
- textElement = generateText({
- text: text,
- optionContent: optionContent,
- optionSubtext: subtext,
- optionIcon: icon
- });
-
- mainElements.push(generateLI(generateA(textElement, optionClass, inline)));
- mainData.push({
- content: optionContent || text,
- subtext: subtext,
- tokens: tokens,
- type: 'option',
- originalIndex: index,
- data: thisData
- });
-
- availableOptionsCount++;
- }
-
- that.selectpicker.main.map.newIndex[index] = liIndex;
- that.selectpicker.main.map.originalIndex[liIndex] = index;
-
- // get the most recent option info added to mainData
- var _mainDataLast = mainData[mainData.length - 1];
-
- _mainDataLast.disabled = isDisabled;
-
- var combinedLength = 0;
-
- // count the number of characters in the option - not perfect, but should work in most cases
- if (_mainDataLast.content) combinedLength += _mainDataLast.content.length;
- if (_mainDataLast.subtext) combinedLength += _mainDataLast.subtext.length;
- // if there is an icon, ensure this option's width is checked
- if (icon) combinedLength += 1;
-
- if (combinedLength > widestOptionLength) {
- widestOptionLength = combinedLength;
-
- // guess which option is the widest
- // use this when calculating menu width
- // not perfect, but it's fast, and the width will be updating accordingly when scrolling
- widestOption = mainElements[mainElements.length - 1];
- }
- });
-
- this.selectpicker.main.elements = mainElements;
- this.selectpicker.main.data = mainData;
- this.selectpicker.main.hidden = hiddenOptions;
-
- this.selectpicker.current = this.selectpicker.main;
-
- this.selectpicker.view.widestOption = widestOption;
- this.selectpicker.view.availableOptionsCount = availableOptionsCount; // faster way to get # of available options without filter
- },
-
- findLis: function () {
- return this.$menuInner.find('.inner > li');
- },
-
- render: function () {
- var that = this,
- $selectOptions = this.$element.find('option'),
- selectedItems = [],
- selectedItemsInTitle = [];
-
- this.togglePlaceholder();
-
- this.tabIndex();
-
- for (var index = 0, len = $selectOptions.length; index < len; index++) {
- var i = that.selectpicker.main.map.newIndex[index],
- option = $selectOptions[index],
- optionData = that.selectpicker.main.data[i] || that.selectpicker.main.hidden[index];
-
- if (option && option.selected && optionData) {
- selectedItems.push(option);
-
- if ((selectedItemsInTitle.length < 100 && that.options.selectedTextFormat !== 'count') || selectedItems.length === 1) {
- var thisData = optionData.data,
- icon = thisData.icon && that.options.showIcon ? ' ' : '',
- subtext,
- titleItem;
-
- if (that.options.showSubtext && thisData.subtext && !that.multiple) {
- subtext = ' ' + thisData.subtext + '';
- } else {
- subtext = '';
- }
-
- if (option.title) {
- titleItem = option.title;
- } else if (thisData.content && that.options.showContent) {
- titleItem = thisData.content.toString();
- } else {
- titleItem = icon + option.innerHTML.trim() + subtext;
- }
-
- selectedItemsInTitle.push(titleItem);
- }
- }
- }
-
- // Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
- // Convert all the values into a comma delimited string
- var title = !this.multiple ? selectedItemsInTitle[0] : selectedItemsInTitle.join(this.options.multipleSeparator);
-
- // add ellipsis
- if (selectedItems.length > 50) title += '...';
-
- // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected etc..
- if (this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1) {
- var max = this.options.selectedTextFormat.split('>');
-
- if ((max.length > 1 && selectedItems.length > max[1]) || (max.length === 1 && selectedItems.length >= 2)) {
- var totalCount = this.selectpicker.view.availableOptionsCount,
- tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
-
- title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
- }
- }
-
- if (this.options.title == undefined) {
- // use .attr to ensure undefined is returned if title attribute is not set
- this.options.title = this.$element.attr('title');
- }
-
- if (this.options.selectedTextFormat == 'static') {
- title = this.options.title;
- }
-
- // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText
- if (!title) {
- title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
- }
-
- // strip all HTML tags and trim the result, then unescape any escaped tags
- this.$button[0].title = htmlUnescape(title.replace(/<[^>]*>?/g, '').trim());
- this.$button.find('.filter-option-inner-inner')[0].innerHTML = title;
-
- this.$element.trigger('rendered' + EVENT_KEY);
- },
-
- /**
- * @param [style]
- * @param [status]
- */
- setStyle: function (style, status) {
- if (this.$element.attr('class')) {
- this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ''));
- }
-
- var buttonClass = style || this.options.style;
-
- if (status == 'add') {
- this.$button.addClass(buttonClass);
- } else if (status == 'remove') {
- this.$button.removeClass(buttonClass);
- } else {
- this.$button.removeClass(this.options.style);
- this.$button.addClass(buttonClass);
- }
- },
-
- liHeight: function (refresh) {
- if (!refresh && (this.options.size === false || this.sizeInfo)) return;
-
- if (!this.sizeInfo) this.sizeInfo = {};
-
- var newElement = document.createElement('div'),
- menu = document.createElement('div'),
- menuInner = document.createElement('div'),
- menuInnerInner = document.createElement('ul'),
- divider = document.createElement('li'),
- dropdownHeader = document.createElement('li'),
- li = document.createElement('li'),
- a = document.createElement('a'),
- text = document.createElement('span'),
- header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null,
- search = this.options.liveSearch ? document.createElement('div') : null,
- actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,
- doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null,
- firstOption = this.$element.find('option')[0];
-
- this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth;
-
- text.className = 'text';
- a.className = 'dropdown-item ' + (firstOption ? firstOption.className : '');
- newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW;
- newElement.style.width = this.sizeInfo.selectWidth + 'px';
- if (this.options.width === 'auto') menu.style.minWidth = 0;
- menu.className = classNames.MENU + ' ' + classNames.SHOW;
- menuInner.className = 'inner ' + classNames.SHOW;
- menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : '');
- divider.className = classNames.DIVIDER;
- dropdownHeader.className = 'dropdown-header';
-
- text.appendChild(document.createTextNode('\u200b'));
- a.appendChild(text);
- li.appendChild(a);
- dropdownHeader.appendChild(text.cloneNode(true));
-
- if (this.selectpicker.view.widestOption) {
- menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true));
- }
-
- menuInnerInner.appendChild(li);
- menuInnerInner.appendChild(divider);
- menuInnerInner.appendChild(dropdownHeader);
- if (header) menu.appendChild(header);
- if (search) {
- var input = document.createElement('input');
- search.className = 'bs-searchbox';
- input.className = 'form-control';
- search.appendChild(input);
- menu.appendChild(search);
- }
- if (actions) menu.appendChild(actions);
- menuInner.appendChild(menuInnerInner);
- menu.appendChild(menuInner);
- if (doneButton) menu.appendChild(doneButton);
- newElement.appendChild(menu);
-
- document.body.appendChild(newElement);
-
- var liHeight = a.offsetHeight,
- dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0,
- headerHeight = header ? header.offsetHeight : 0,
- searchHeight = search ? search.offsetHeight : 0,
- actionsHeight = actions ? actions.offsetHeight : 0,
- doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,
- dividerHeight = $(divider).outerHeight(true),
- // fall back to jQuery if getComputedStyle is not supported
- menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false,
- menuWidth = menu.offsetWidth,
- $menu = menuStyle ? null : $(menu),
- menuPadding = {
- vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +
- toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +
- toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +
- toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),
- horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) +
- toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) +
- toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) +
- toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))
- },
- menuExtras = {
- vert: menuPadding.vert +
- toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +
- toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,
- horiz: menuPadding.horiz +
- toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) +
- toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2
- },
- scrollBarWidth;
-
- menuInner.style.overflowY = 'scroll';
-
- scrollBarWidth = menu.offsetWidth - menuWidth;
-
- document.body.removeChild(newElement);
-
- this.sizeInfo.liHeight = liHeight;
- this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight;
- this.sizeInfo.headerHeight = headerHeight;
- this.sizeInfo.searchHeight = searchHeight;
- this.sizeInfo.actionsHeight = actionsHeight;
- this.sizeInfo.doneButtonHeight = doneButtonHeight;
- this.sizeInfo.dividerHeight = dividerHeight;
- this.sizeInfo.menuPadding = menuPadding;
- this.sizeInfo.menuExtras = menuExtras;
- this.sizeInfo.menuWidth = menuWidth;
- this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth;
- this.sizeInfo.scrollBarWidth = scrollBarWidth;
- this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight;
-
- this.setPositionData();
- },
-
- getSelectPosition: function () {
- var that = this,
- $window = $(window),
- pos = that.$newElement.offset(),
- $container = $(that.options.container),
- containerPos;
-
- if (that.options.container && !$container.is('body')) {
- containerPos = $container.offset();
- containerPos.top += parseInt($container.css('borderTopWidth'));
- containerPos.left += parseInt($container.css('borderLeftWidth'));
- } else {
- containerPos = { top: 0, left: 0 };
- }
-
- var winPad = that.options.windowPadding;
-
- this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();
- this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2];
- this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();
- this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1];
- this.sizeInfo.selectOffsetTop -= winPad[0];
- this.sizeInfo.selectOffsetLeft -= winPad[3];
- },
-
- setMenuSize: function (isAuto) {
- this.getSelectPosition();
-
- var selectWidth = this.sizeInfo.selectWidth,
- liHeight = this.sizeInfo.liHeight,
- headerHeight = this.sizeInfo.headerHeight,
- searchHeight = this.sizeInfo.searchHeight,
- actionsHeight = this.sizeInfo.actionsHeight,
- doneButtonHeight = this.sizeInfo.doneButtonHeight,
- divHeight = this.sizeInfo.dividerHeight,
- menuPadding = this.sizeInfo.menuPadding,
- menuInnerHeight,
- menuHeight,
- divLength = 0,
- minHeight,
- _minHeight,
- maxHeight,
- menuInnerMinHeight,
- estimate;
-
- if (this.options.dropupAuto) {
- // Get the estimated height of the menu without scrollbars.
- // This is useful for smaller menus, where there might be plenty of room
- // below the button without setting dropup, but we can't know
- // the exact height of the menu until createView is called later
- estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert;
- this.$newElement.toggleClass(classNames.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot);
- }
-
- if (this.options.size === 'auto') {
- _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0;
- menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert;
- minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;
- menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0);
-
- if (this.$newElement.hasClass(classNames.DROPUP)) {
- menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert;
- }
-
- maxHeight = menuHeight;
- menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert;
- } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {
- for (var i = 0; i < this.options.size; i++) {
- if (this.selectpicker.current.data[i].type === 'divider') divLength++;
- }
-
- menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;
- menuInnerHeight = menuHeight - menuPadding.vert;
- maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;
- minHeight = menuInnerMinHeight = '';
- }
-
- if (this.options.dropdownAlignRight === 'auto') {
- this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.sizeInfo.totalMenuWidth - selectWidth));
- }
-
- this.$menu.css({
- 'max-height': maxHeight + 'px',
- 'overflow': 'hidden',
- 'min-height': minHeight + 'px'
- });
-
- this.$menuInner.css({
- 'max-height': menuInnerHeight + 'px',
- 'overflow-y': 'auto',
- 'min-height': menuInnerMinHeight + 'px'
- });
-
- this.sizeInfo.menuInnerHeight = menuInnerHeight;
-
- if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) {
- this.sizeInfo.hasScrollBar = true;
- this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth;
-
- this.$menu.css('min-width', this.sizeInfo.totalMenuWidth);
- }
-
- if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update();
- },
-
- setSize: function (refresh) {
- this.liHeight(refresh);
-
- if (this.options.header) this.$menu.css('padding-top', 0);
- if (this.options.size === false) return;
-
- var that = this,
- $window = $(window),
- selectedIndex,
- offset = 0;
-
- this.setMenuSize();
-
- if (this.options.size === 'auto') {
- this.$searchbox
- .off('input.setMenuSize propertychange.setMenuSize')
- .on('input.setMenuSize propertychange.setMenuSize', function () {
- return that.setMenuSize();
- });
-
- $window
- .off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize')
- .on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () {
- return that.setMenuSize();
- });
- } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {
- this.$searchbox.off('input.setMenuSize propertychange.setMenuSize');
- $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize');
- }
-
- if (refresh) {
- offset = this.$menuInner[0].scrollTop;
- } else if (!that.multiple) {
- selectedIndex = that.selectpicker.main.map.newIndex[that.$element[0].selectedIndex];
-
- if (typeof selectedIndex === 'number' && that.options.size !== false) {
- offset = that.sizeInfo.liHeight * selectedIndex;
- offset = offset - (that.sizeInfo.menuInnerHeight / 2) + (that.sizeInfo.liHeight / 2);
- }
- }
-
- that.createView(false, offset);
- },
-
- setWidth: function () {
- var that = this;
-
- if (this.options.width === 'auto') {
- requestAnimationFrame(function () {
- that.$menu.css('min-width', '0');
- that.liHeight();
- that.setMenuSize();
-
- // Get correct width if element is hidden
- var $selectClone = that.$newElement.clone().appendTo('body'),
- btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth();
-
- $selectClone.remove();
-
- // Set width to whatever's larger, button title or longest option
- that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth);
- that.$newElement.css('width', that.sizeInfo.selectWidth + 'px');
- });
- } else if (this.options.width === 'fit') {
- // Remove inline min-width so width can be changed from 'auto'
- this.$menu.css('min-width', '');
- this.$newElement.css('width', '').addClass('fit-width');
- } else if (this.options.width) {
- // Remove inline min-width so width can be changed from 'auto'
- this.$menu.css('min-width', '');
- this.$newElement.css('width', this.options.width);
- } else {
- // Remove inline min-width/width so width can be changed
- this.$menu.css('min-width', '');
- this.$newElement.css('width', '');
- }
- // Remove fit-width class if width is changed programmatically
- if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
- this.$newElement.removeClass('fit-width');
- }
- },
-
- selectPosition: function () {
- this.$bsContainer = $('');
-
- var that = this,
- $container = $(this.options.container),
- pos,
- containerPos,
- actualHeight,
- getPlacement = function ($element) {
- var containerPosition = {},
- // fall back to dropdown's default display setting if display is not manually set
- display = that.options.display || (
- // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default
- $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display
- : false
- );
-
- that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP));
- pos = $element.offset();
-
- if (!$container.is('body')) {
- containerPos = $container.offset();
- containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();
- containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();
- } else {
- containerPos = { top: 0, left: 0 };
- }
-
- actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight;
-
- // Bootstrap 4+ uses Popper for menu positioning
- if (version.major < 4 || display === 'static') {
- containerPosition.top = pos.top - containerPos.top + actualHeight;
- containerPosition.left = pos.left - containerPos.left;
- }
-
- containerPosition.width = $element[0].offsetWidth;
-
- that.$bsContainer.css(containerPosition);
- };
-
- this.$button.on('click.bs.dropdown.data-api', function () {
- if (that.isDisabled()) {
- return;
- }
-
- getPlacement(that.$newElement);
-
- that.$bsContainer
- .appendTo(that.options.container)
- .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW))
- .append(that.$menu);
- });
-
- $(window)
- .off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId)
- .on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () {
- var isActive = that.$newElement.hasClass(classNames.SHOW);
-
- if (isActive) getPlacement(that.$newElement);
- });
-
- this.$element.on('hide' + EVENT_KEY, function () {
- that.$menu.data('height', that.$menu.height());
- that.$bsContainer.detach();
- });
- },
-
- setOptionStatus: function () {
- var that = this,
- $selectOptions = this.$element.find('option');
-
- that.noScroll = false;
-
- if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) {
- for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) {
- var index = that.selectpicker.current.map.originalIndex[i + that.selectpicker.view.position0], // faster than $(li).data('originalIndex')
- option = $selectOptions[index];
-
- if (option) {
- var liIndex = this.selectpicker.main.map.newIndex[index],
- li = this.selectpicker.main.elements[liIndex];
-
- that.setDisabled(
- index,
- option.disabled || (option.parentNode.tagName === 'OPTGROUP' && option.parentNode.disabled),
- liIndex,
- li
- );
-
- that.setSelected(
- index,
- option.selected,
- liIndex,
- li
- );
- }
- }
- }
- },
-
- /**
- * @param {number} index - the index of the option that is being changed
- * @param {boolean} selected - true if the option is being selected, false if being deselected
- */
- setSelected: function (index, selected, liIndex, li) {
- var activeIndexIsSet = this.activeIndex !== undefined,
- thisIsActive = this.activeIndex === index,
- prevActiveIndex,
- prevActive,
- a,
- // if current option is already active
- // OR
- // if the current option is being selected, it's NOT multiple, and
- // activeIndex is undefined:
- // - when the menu is first being opened, OR
- // - after a search has been performed, OR
- // - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex)
- keepActive = thisIsActive || (selected && !this.multiple && !activeIndexIsSet);
-
- if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index];
- if (!li) li = this.selectpicker.main.elements[liIndex];
-
- a = li.firstChild;
-
- if (selected) {
- this.selectedIndex = index;
- }
-
- li.classList.toggle('selected', selected);
- li.classList.toggle('active', keepActive);
-
- if (keepActive) {
- this.selectpicker.view.currentActive = li;
- this.activeIndex = index;
- }
-
- if (a) {
- a.classList.toggle('selected', selected);
- a.classList.toggle('active', keepActive);
- a.setAttribute('aria-selected', selected);
- }
-
- if (!keepActive) {
- if (!activeIndexIsSet && selected && this.prevActiveIndex !== undefined) {
- prevActiveIndex = this.selectpicker.main.map.newIndex[this.prevActiveIndex];
- prevActive = this.selectpicker.main.elements[prevActiveIndex];
-
- prevActive.classList.remove('active');
- if (prevActive.firstChild) {
- prevActive.firstChild.classList.remove('active');
- }
- }
- }
- },
-
- /**
- * @param {number} index - the index of the option that is being disabled
- * @param {boolean} disabled - true if the option is being disabled, false if being enabled
- */
- setDisabled: function (index, disabled, liIndex, li) {
- var a;
-
- if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index];
- if (!li) li = this.selectpicker.main.elements[liIndex];
-
- a = li.firstChild;
-
- li.classList.toggle(classNames.DISABLED, disabled);
-
- if (a) {
- if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled);
-
- a.setAttribute('aria-disabled', disabled);
-
- if (disabled) {
- a.setAttribute('tabindex', -1);
- } else {
- a.setAttribute('tabindex', 0);
- }
- }
- },
-
- isDisabled: function () {
- return this.$element[0].disabled;
- },
-
- checkDisabled: function () {
- var that = this;
-
- if (this.isDisabled()) {
- this.$newElement.addClass(classNames.DISABLED);
- this.$button.addClass(classNames.DISABLED).attr('tabindex', -1).attr('aria-disabled', true);
- } else {
- if (this.$button.hasClass(classNames.DISABLED)) {
- this.$newElement.removeClass(classNames.DISABLED);
- this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false);
- }
-
- if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {
- this.$button.removeAttr('tabindex');
- }
- }
-
- this.$button.click(function () {
- return !that.isDisabled();
- });
- },
-
- togglePlaceholder: function () {
- // much faster than calling $.val()
- var element = this.$element[0],
- selectedIndex = element.selectedIndex,
- nothingSelected = selectedIndex === -1;
-
- if (!nothingSelected && !element.options[selectedIndex].value) nothingSelected = true;
-
- this.$button.toggleClass('bs-placeholder', nothingSelected);
- },
-
- tabIndex: function () {
- if (this.$element.data('tabindex') !== this.$element.attr('tabindex') &&
- (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) {
- this.$element.data('tabindex', this.$element.attr('tabindex'));
- this.$button.attr('tabindex', this.$element.data('tabindex'));
- }
-
- this.$element.attr('tabindex', -98);
- },
-
- clickListener: function () {
- var that = this,
- $document = $(document);
-
- $document.data('spaceSelect', false);
-
- this.$button.on('keyup', function (e) {
- if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {
- e.preventDefault();
- $document.data('spaceSelect', false);
- }
- });
-
- this.$newElement.on('show.bs.dropdown', function () {
- if (version.major > 3 && !that.dropdown) {
- that.dropdown = that.$button.data('bs.dropdown');
- that.dropdown._menu = that.$menu[0];
- }
- });
-
- this.$button.on('click.bs.dropdown.data-api', function () {
- if (!that.$newElement.hasClass(classNames.SHOW)) {
- that.setSize();
- }
- });
-
- function setFocus () {
- if (that.options.liveSearch) {
- that.$searchbox.focus();
- } else {
- that.$menuInner.focus();
- }
- }
-
- function checkPopperExists () {
- if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) {
- setFocus();
- } else {
- requestAnimationFrame(checkPopperExists);
- }
- }
-
- this.$element.on('shown' + EVENT_KEY, function () {
- if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) {
- that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop;
- }
-
- if (version.major > 3) {
- requestAnimationFrame(checkPopperExists);
- } else {
- setFocus();
- }
- });
-
- this.$menuInner.on('click', 'li a', function (e, retainActive) {
- var $this = $(this),
- position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0,
- clickedIndex = that.selectpicker.current.map.originalIndex[$this.parent().index() + position0],
- prevValue = getSelectValues(that.$element[0]),
- prevIndex = that.$element.prop('selectedIndex'),
- triggerChange = true;
-
- // Don't close on multi choice menu
- if (that.multiple && that.options.maxOptions !== 1) {
- e.stopPropagation();
- }
-
- e.preventDefault();
-
- // Don't run if the select is disabled
- if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) {
- var $options = that.$element.find('option'),
- $option = $options.eq(clickedIndex),
- state = $option.prop('selected'),
- $optgroup = $option.parent('optgroup'),
- $optgroupOptions = $optgroup.find('option'),
- maxOptions = that.options.maxOptions,
- maxOptionsGrp = $optgroup.data('maxOptions') || false;
-
- if (clickedIndex === that.activeIndex) retainActive = true;
-
- if (!retainActive) {
- that.prevActiveIndex = that.activeIndex;
- that.activeIndex = undefined;
- }
-
- if (!that.multiple) { // Deselect all others if not multi select box
- $options.prop('selected', false);
- $option.prop('selected', true);
- that.setSelected(clickedIndex, true);
- } else { // Toggle the one we have chosen if we are multi select.
- $option.prop('selected', !state);
-
- that.setSelected(clickedIndex, !state);
- $this.blur();
-
- if (maxOptions !== false || maxOptionsGrp !== false) {
- var maxReached = maxOptions < $options.filter(':selected').length,
- maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
-
- if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
- if (maxOptions && maxOptions == 1) {
- $options.prop('selected', false);
- $option.prop('selected', true);
-
- for (var i = 0; i < $options.length; i++) {
- that.setSelected(i, false);
- }
-
- that.setSelected(clickedIndex, true);
- } else if (maxOptionsGrp && maxOptionsGrp == 1) {
- $optgroup.find('option:selected').prop('selected', false);
- $option.prop('selected', true);
-
- for (var i = 0; i < $optgroupOptions.length; i++) {
- var option = $optgroupOptions[i];
- that.setSelected($options.index(option), false);
- }
-
- that.setSelected(clickedIndex, true);
- } else {
- var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,
- maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,
- maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
- maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
- $notify = $('');
- // If {var} is set in array, replace it
- /** @deprecated */
- if (maxOptionsArr[2]) {
- maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
- maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
- }
-
- $option.prop('selected', false);
-
- that.$menu.append($notify);
-
- if (maxOptions && maxReached) {
- $notify.append($('' + maxTxt + '
'));
- triggerChange = false;
- that.$element.trigger('maxReached' + EVENT_KEY);
- }
-
- if (maxOptionsGrp && maxReachedGrp) {
- $notify.append($('' + maxTxtGrp + '
'));
- triggerChange = false;
- that.$element.trigger('maxReachedGrp' + EVENT_KEY);
- }
-
- setTimeout(function () {
- that.setSelected(clickedIndex, false);
- }, 10);
-
- $notify.delay(750).fadeOut(300, function () {
- $(this).remove();
- });
- }
- }
- }
- }
-
- if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) {
- that.$button.focus();
- } else if (that.options.liveSearch) {
- that.$searchbox.focus();
- }
-
- // Trigger select 'change'
- if (triggerChange) {
- if ((prevValue != getSelectValues(that.$element[0]) && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
- // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed.
- changedArguments = [clickedIndex, $option.prop('selected'), prevValue];
- that.$element
- .triggerNative('change');
- }
- }
- }
- });
-
- this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) {
- if (e.currentTarget == this) {
- e.preventDefault();
- e.stopPropagation();
- if (that.options.liveSearch && !$(e.target).hasClass('close')) {
- that.$searchbox.focus();
- } else {
- that.$button.focus();
- }
- }
- });
-
- this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {
- e.preventDefault();
- e.stopPropagation();
- if (that.options.liveSearch) {
- that.$searchbox.focus();
- } else {
- that.$button.focus();
- }
- });
-
- this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () {
- that.$button.click();
- });
-
- this.$searchbox.on('click', function (e) {
- e.stopPropagation();
- });
-
- this.$menu.on('click', '.actions-btn', function (e) {
- if (that.options.liveSearch) {
- that.$searchbox.focus();
- } else {
- that.$button.focus();
- }
-
- e.preventDefault();
- e.stopPropagation();
-
- if ($(this).hasClass('bs-select-all')) {
- that.selectAll();
- } else {
- that.deselectAll();
- }
- });
-
- this.$element.on({
- 'change': function () {
- that.render();
- that.$element.trigger('changed' + EVENT_KEY, changedArguments);
- changedArguments = null;
- },
- 'focus': function () {
- if (!that.options.mobile) that.$button.focus();
- }
- });
- },
-
- liveSearchListener: function () {
- var that = this,
- noResults = document.createElement('li');
-
- this.$button.on('click.bs.dropdown.data-api', function () {
- if (!!that.$searchbox.val()) {
- that.$searchbox.val('');
- }
- });
-
- this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) {
- e.stopPropagation();
- });
-
- this.$searchbox.on('input propertychange', function () {
- var searchValue = that.$searchbox.val();
-
- that.selectpicker.search.map.newIndex = {};
- that.selectpicker.search.map.originalIndex = {};
- that.selectpicker.search.elements = [];
- that.selectpicker.search.data = [];
-
- if (searchValue) {
- var i,
- searchMatch = [],
- q = searchValue.toUpperCase(),
- cache = {},
- cacheArr = [],
- searchStyle = that._searchStyle(),
- normalizeSearch = that.options.liveSearchNormalize;
-
- if (normalizeSearch) q = normalizeToBase(q);
-
- that._$lisSelected = that.$menuInner.find('.selected');
-
- for (var i = 0; i < that.selectpicker.main.data.length; i++) {
- var li = that.selectpicker.main.data[i];
-
- if (!cache[i]) {
- cache[i] = stringSearch(li, q, searchStyle, normalizeSearch);
- }
-
- if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) {
- if (li.headerIndex > 0) {
- cache[li.headerIndex - 1] = true;
- cacheArr.push(li.headerIndex - 1);
- }
-
- cache[li.headerIndex] = true;
- cacheArr.push(li.headerIndex);
-
- cache[li.lastIndex + 1] = true;
- }
-
- if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i);
- }
-
- for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) {
- var index = cacheArr[i],
- prevIndex = cacheArr[i - 1],
- li = that.selectpicker.main.data[index],
- liPrev = that.selectpicker.main.data[prevIndex];
-
- if (li.type !== 'divider' || (li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i)) {
- that.selectpicker.search.data.push(li);
- searchMatch.push(that.selectpicker.main.elements[index]);
-
- if (li.hasOwnProperty('originalIndex')) {
- that.selectpicker.search.map.newIndex[li.originalIndex] = searchMatch.length - 1;
- that.selectpicker.search.map.originalIndex[searchMatch.length - 1] = li.originalIndex;
- }
- }
- }
-
- that.activeIndex = undefined;
- that.noScroll = true;
- that.$menuInner.scrollTop(0);
- that.selectpicker.search.elements = searchMatch;
- that.createView(true);
-
- if (!searchMatch.length) {
- noResults.className = 'no-results';
- noResults.innerHTML = that.options.noneResultsText.replace('{0}', '"' + htmlEscape(searchValue) + '"');
- that.$menuInner[0].firstChild.appendChild(noResults);
- }
- } else {
- that.$menuInner.scrollTop(0);
- that.createView(false);
- }
- });
- },
-
- _searchStyle: function () {
- return this.options.liveSearchStyle || 'contains';
- },
-
- val: function (value) {
- if (typeof value !== 'undefined') {
- this.$element
- .val(value)
- .triggerNative('change');
-
- return this.$element;
- } else {
- return this.$element.val();
- }
- },
-
- changeAll: function (status) {
- if (!this.multiple) return;
- if (typeof status === 'undefined') status = true;
-
- var $selectOptions = this.$element.find('option'),
- previousSelected = 0,
- currentSelected = 0,
- prevValue = getSelectValues(this.$element[0]);
-
- this.$element.addClass('bs-select-hidden');
-
- for (var i = 0; i < this.selectpicker.current.elements.length; i++) {
- var liData = this.selectpicker.current.data[i],
- index = this.selectpicker.current.map.originalIndex[i], // faster than $(li).data('originalIndex')
- option = $selectOptions[index];
-
- if (option && !option.disabled && liData.type !== 'divider') {
- if (option.selected) previousSelected++;
- option.selected = status;
- if (option.selected) currentSelected++;
- }
- }
-
- this.$element.removeClass('bs-select-hidden');
-
- if (previousSelected === currentSelected) return;
-
- this.setOptionStatus();
-
- this.togglePlaceholder();
-
- changedArguments = [null, null, prevValue];
-
- this.$element
- .triggerNative('change');
- },
-
- selectAll: function () {
- return this.changeAll(true);
- },
-
- deselectAll: function () {
- return this.changeAll(false);
- },
-
- toggle: function (e) {
- e = e || window.event;
-
- if (e) e.stopPropagation();
-
- this.$button.trigger('click.bs.dropdown.data-api');
- },
-
- keydown: function (e) {
- var $this = $(this),
- isToggle = $this.hasClass('dropdown-toggle'),
- $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU),
- that = $parent.data('this'),
- $items = that.findLis(),
- index,
- isActive,
- liActive,
- activeLi,
- offset,
- updateScroll = false,
- downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab,
- isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab,
- scrollTop = that.$menuInner[0].scrollTop,
- isVirtual = that.isVirtual(),
- position0 = isVirtual === true ? that.selectpicker.view.position0 : 0;
-
- isActive = that.$newElement.hasClass(classNames.SHOW);
-
- if (
- !isActive &&
- (
- isArrowKey ||
- (e.which >= 48 && e.which <= 57) ||
- (e.which >= 96 && e.which <= 105) ||
- (e.which >= 65 && e.which <= 90)
- )
- ) {
- that.$button.trigger('click.bs.dropdown.data-api');
- }
-
- if (e.which === keyCodes.ESCAPE && isActive) {
- e.preventDefault();
- that.$button.trigger('click.bs.dropdown.data-api').focus();
- }
-
- if (isArrowKey) { // if up or down
- if (!$items.length) return;
-
- // $items.index/.filter is too slow with a large list and no virtual scroll
- index = isVirtual === true ? $items.index($items.filter('.active')) : that.selectpicker.current.map.newIndex[that.activeIndex];
-
- if (index === undefined) index = -1;
-
- if (index !== -1) {
- liActive = that.selectpicker.current.elements[index + position0];
- liActive.classList.remove('active');
- if (liActive.firstChild) liActive.firstChild.classList.remove('active');
- }
-
- if (e.which === keyCodes.ARROW_UP) { // up
- if (index !== -1) index--;
- if (index + position0 < 0) index += $items.length;
-
- if (!that.selectpicker.view.canHighlight[index + position0]) {
- index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0;
- if (index === -1) index = $items.length - 1;
- }
- } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down
- index++;
- if (index + position0 >= that.selectpicker.view.canHighlight.length) index = 0;
-
- if (!that.selectpicker.view.canHighlight[index + position0]) {
- index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true);
- }
- }
-
- e.preventDefault();
-
- var liActiveIndex = position0 + index;
-
- if (e.which === keyCodes.ARROW_UP) { // up
- // scroll to bottom and highlight last option
- if (position0 === 0 && index === $items.length - 1) {
- that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight;
-
- liActiveIndex = that.selectpicker.current.elements.length - 1;
- } else {
- activeLi = that.selectpicker.current.data[liActiveIndex];
- offset = activeLi.position - activeLi.height;
-
- updateScroll = offset < scrollTop;
- }
- } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down
- // scroll to top and highlight first option
- if (index === 0) {
- that.$menuInner[0].scrollTop = 0;
-
- liActiveIndex = 0;
- } else {
- activeLi = that.selectpicker.current.data[liActiveIndex];
- offset = activeLi.position - that.sizeInfo.menuInnerHeight;
-
- updateScroll = offset > scrollTop;
- }
- }
-
- liActive = that.selectpicker.current.elements[liActiveIndex];
-
- if (liActive) {
- liActive.classList.add('active');
- if (liActive.firstChild) liActive.firstChild.classList.add('active');
- }
-
- that.activeIndex = that.selectpicker.current.map.originalIndex[liActiveIndex];
-
- that.selectpicker.view.currentActive = liActive;
-
- if (updateScroll) that.$menuInner[0].scrollTop = offset;
-
- if (that.options.liveSearch) {
- that.$searchbox.focus();
- } else {
- $this.focus();
- }
- } else if (
- (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which)) ||
- (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory)
- ) {
- var searchMatch,
- matches = [],
- keyHistory;
-
- e.preventDefault();
-
- that.selectpicker.keydown.keyHistory += keyCodeMap[e.which];
-
- if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel);
- that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start();
-
- keyHistory = that.selectpicker.keydown.keyHistory;
-
- // if all letters are the same, set keyHistory to just the first character when searching
- if (/^(.)\1+$/.test(keyHistory)) {
- keyHistory = keyHistory.charAt(0);
- }
-
- // find matches
- for (var i = 0; i < that.selectpicker.current.data.length; i++) {
- var li = that.selectpicker.current.data[i],
- hasMatch;
-
- hasMatch = stringSearch(li, keyHistory, 'startsWith', true);
-
- if (hasMatch && that.selectpicker.view.canHighlight[i]) {
- li.index = i;
- matches.push(li.originalIndex);
- }
- }
-
- if (matches.length) {
- var matchIndex = 0;
-
- $items.removeClass('active').find('a').removeClass('active');
-
- // either only one key has been pressed or they are all the same key
- if (keyHistory.length === 1) {
- matchIndex = matches.indexOf(that.activeIndex);
-
- if (matchIndex === -1 || matchIndex === matches.length - 1) {
- matchIndex = 0;
- } else {
- matchIndex++;
- }
- }
-
- searchMatch = that.selectpicker.current.map.newIndex[matches[matchIndex]];
-
- activeLi = that.selectpicker.current.data[searchMatch];
-
- if (scrollTop - activeLi.position > 0) {
- offset = activeLi.position - activeLi.height;
- updateScroll = true;
- } else {
- offset = activeLi.position - that.sizeInfo.menuInnerHeight;
- // if the option is already visible at the current scroll position, just keep it the same
- updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight;
- }
-
- liActive = that.selectpicker.current.elements[searchMatch];
- liActive.classList.add('active');
- if (liActive.firstChild) liActive.firstChild.classList.add('active');
- that.activeIndex = matches[matchIndex];
-
- liActive.firstChild.focus();
-
- if (updateScroll) that.$menuInner[0].scrollTop = offset;
-
- $this.focus();
- }
- }
-
- // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
- if (
- isActive &&
- (
- (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) ||
- e.which === keyCodes.ENTER ||
- (e.which === keyCodes.TAB && that.options.selectOnTab)
- )
- ) {
- if (e.which !== keyCodes.SPACE) e.preventDefault();
-
- if (!that.options.liveSearch || e.which !== keyCodes.SPACE) {
- that.$menuInner.find('.active a').trigger('click', true); // retain active class
- $this.focus();
-
- if (!that.options.liveSearch) {
- // Prevent screen from scrolling if the user hits the spacebar
- e.preventDefault();
- // Fixes spacebar selection of dropdown items in FF & IE
- $(document).data('spaceSelect', true);
- }
- }
- }
- },
-
- mobile: function () {
- this.$element.addClass('mobile-device');
- },
-
- refresh: function () {
- // update options if data attributes have been changed
- var config = $.extend({}, this.options, this.$element.data());
- this.options = config;
-
- this.selectpicker.main.map.newIndex = {};
- this.selectpicker.main.map.originalIndex = {};
- this.createLi();
- this.checkDisabled();
- this.render();
- this.setStyle();
- this.setWidth();
-
- this.setSize(true);
-
- this.$element.trigger('refreshed' + EVENT_KEY);
- },
-
- hide: function () {
- this.$newElement.hide();
- },
-
- show: function () {
- this.$newElement.show();
- },
-
- remove: function () {
- this.$newElement.remove();
- this.$element.remove();
- },
-
- destroy: function () {
- this.$newElement.before(this.$element).remove();
-
- if (this.$bsContainer) {
- this.$bsContainer.remove();
- } else {
- this.$menu.remove();
- }
-
- this.$element
- .off(EVENT_KEY)
- .removeData('selectpicker')
- .removeClass('bs-select-hidden selectpicker');
-
- $(window).off(EVENT_KEY + '.' + this.selectId);
- }
- };
-
- // SELECTPICKER PLUGIN DEFINITION
- // ==============================
- function Plugin (option) {
- // get the args of the outer function..
- var args = arguments;
- // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
- // to get lost/corrupted in android 2.3 and IE9 #715 #775
- var _option = option;
-
- [].shift.apply(args);
-
- // if the version was not set successfully
- if (!version.success) {
- // try to retreive it again
- try {
- version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.');
- } catch (err) {
- // fall back to use BootstrapVersion
- version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.');
- }
-
- version.major = version.full[0];
- version.success = true;
-
- if (version.major === '4') {
- classNames.DIVIDER = 'dropdown-divider';
- classNames.SHOW = 'show';
- classNames.BUTTONCLASS = 'btn-light';
- Selectpicker.DEFAULTS.style = classNames.BUTTONCLASS = 'btn-light';
- classNames.POPOVERHEADER = 'popover-header';
- }
- }
-
- var value;
- var chain = this.each(function () {
- var $this = $(this);
- if ($this.is('select')) {
- var data = $this.data('selectpicker'),
- options = typeof _option == 'object' && _option;
-
- if (!data) {
- var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
- config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template);
- $this.data('selectpicker', (data = new Selectpicker(this, config)));
- } else if (options) {
- for (var i in options) {
- if (options.hasOwnProperty(i)) {
- data.options[i] = options[i];
- }
- }
- }
-
- if (typeof _option == 'string') {
- if (data[_option] instanceof Function) {
- value = data[_option].apply(data, args);
- } else {
- value = data.options[_option];
- }
- }
- }
- });
-
- if (typeof value !== 'undefined') {
- // noinspection JSUnusedAssignment
- return value;
- } else {
- return chain;
- }
- }
-
- var old = $.fn.selectpicker;
- $.fn.selectpicker = Plugin;
- $.fn.selectpicker.Constructor = Selectpicker;
-
- // SELECTPICKER NO CONFLICT
- // ========================
- $.fn.selectpicker.noConflict = function () {
- $.fn.selectpicker = old;
- return this;
- };
-
- $(document)
- .off('keydown.bs.dropdown.data-api')
- .on('keydown' + EVENT_KEY, '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown)
- .on('focusin.modal', '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) {
- e.stopPropagation();
- });
-
- // SELECTPICKER DATA-API
- // =====================
- $(window).on('load' + EVENT_KEY + '.data-api', function () {
- $('.selectpicker').each(function () {
- var $selectpicker = $(this);
- Plugin.call($selectpicker, $selectpicker.data());
- })
- });
-})(jQuery);
-
-
-}));
-
-
-/***/ }),
-
-/***/ "./node_modules/bootstrap-v4-rtl/dist/js/bootstrap.js":
-/*!************************************************************!*\
- !*** ./node_modules/bootstrap-v4-rtl/dist/js/bootstrap.js ***!
- \************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-/*!
- * Bootstrap v4.1.1-0 (https://github.com/MahdiMajidzadeh/bootstrap-v4-rtl)
- * Copyright 2011-2018 Mahdi Majidzadeh
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-(function (global, factory) {
- true ? factory(exports, __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"), __webpack_require__(/*! popper.js */ "./node_modules/popper.js/lib/index.js")) :
- undefined;
-}(this, (function (exports,$,Popper) { 'use strict';
-
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
- Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
-
- function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
- }
-
- function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- return Constructor;
- }
-
- function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
- }
-
- function _objectSpread(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
- var ownKeys = Object.keys(source);
-
- if (typeof Object.getOwnPropertySymbols === 'function') {
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- }));
- }
-
- ownKeys.forEach(function (key) {
- _defineProperty(target, key, source[key]);
- });
- }
-
- return target;
- }
-
- function _inheritsLoose(subClass, superClass) {
- subClass.prototype = Object.create(superClass.prototype);
- subClass.prototype.constructor = subClass;
- subClass.__proto__ = superClass;
- }
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): util.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Util = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Private TransitionEnd Helpers
- * ------------------------------------------------------------------------
- */
- var TRANSITION_END = 'transitionend';
- var MAX_UID = 1000000;
- var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
-
- function toType(obj) {
- return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
- }
-
- function getSpecialTransitionEndEvent() {
- return {
- bindType: TRANSITION_END,
- delegateType: TRANSITION_END,
- handle: function handle(event) {
- if ($$$1(event.target).is(this)) {
- return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
- }
-
- return undefined; // eslint-disable-line no-undefined
- }
- };
- }
-
- function transitionEndEmulator(duration) {
- var _this = this;
-
- var called = false;
- $$$1(this).one(Util.TRANSITION_END, function () {
- called = true;
- });
- setTimeout(function () {
- if (!called) {
- Util.triggerTransitionEnd(_this);
- }
- }, duration);
- return this;
- }
-
- function setTransitionEndSupport() {
- $$$1.fn.emulateTransitionEnd = transitionEndEmulator;
- $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
- }
- /**
- * --------------------------------------------------------------------------
- * Public Util Api
- * --------------------------------------------------------------------------
- */
-
-
- var Util = {
- TRANSITION_END: 'bsTransitionEnd',
- getUID: function getUID(prefix) {
- do {
- // eslint-disable-next-line no-bitwise
- prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
- } while (document.getElementById(prefix));
-
- return prefix;
- },
- getSelectorFromElement: function getSelectorFromElement(element) {
- var selector = element.getAttribute('data-target');
-
- if (!selector || selector === '#') {
- selector = element.getAttribute('href') || '';
- }
-
- try {
- var $selector = $$$1(document).find(selector);
- return $selector.length > 0 ? selector : null;
- } catch (err) {
- return null;
- }
- },
- getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
- if (!element) {
- return 0;
- } // Get transition-duration of the element
-
-
- var transitionDuration = $$$1(element).css('transition-duration');
- var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found
-
- if (!floatTransitionDuration) {
- return 0;
- } // If multiple durations are defined, take the first
-
-
- transitionDuration = transitionDuration.split(',')[0];
- return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER;
- },
- reflow: function reflow(element) {
- return element.offsetHeight;
- },
- triggerTransitionEnd: function triggerTransitionEnd(element) {
- $$$1(element).trigger(TRANSITION_END);
- },
- // TODO: Remove in v5
- supportsTransitionEnd: function supportsTransitionEnd() {
- return Boolean(TRANSITION_END);
- },
- isElement: function isElement(obj) {
- return (obj[0] || obj).nodeType;
- },
- typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
- for (var property in configTypes) {
- if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
- var expectedTypes = configTypes[property];
- var value = config[property];
- var valueType = value && Util.isElement(value) ? 'element' : toType(value);
-
- if (!new RegExp(expectedTypes).test(valueType)) {
- throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
- }
- }
- }
- }
- };
- setTransitionEndSupport();
- return Util;
- }($);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): alert.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Alert = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'alert';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.alert';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var Selector = {
- DISMISS: '[data-dismiss="alert"]'
- };
- var Event = {
- CLOSE: "close" + EVENT_KEY,
- CLOSED: "closed" + EVENT_KEY,
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
- };
- var ClassName = {
- ALERT: 'alert',
- FADE: 'fade',
- SHOW: 'show'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Alert =
- /*#__PURE__*/
- function () {
- function Alert(element) {
- this._element = element;
- } // Getters
-
-
- var _proto = Alert.prototype;
-
- // Public
- _proto.close = function close(element) {
- var rootElement = this._element;
-
- if (element) {
- rootElement = this._getRootElement(element);
- }
-
- var customEvent = this._triggerCloseEvent(rootElement);
-
- if (customEvent.isDefaultPrevented()) {
- return;
- }
-
- this._removeElement(rootElement);
- };
-
- _proto.dispose = function dispose() {
- $$$1.removeData(this._element, DATA_KEY);
- this._element = null;
- }; // Private
-
-
- _proto._getRootElement = function _getRootElement(element) {
- var selector = Util.getSelectorFromElement(element);
- var parent = false;
-
- if (selector) {
- parent = $$$1(selector)[0];
- }
-
- if (!parent) {
- parent = $$$1(element).closest("." + ClassName.ALERT)[0];
- }
-
- return parent;
- };
-
- _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
- var closeEvent = $$$1.Event(Event.CLOSE);
- $$$1(element).trigger(closeEvent);
- return closeEvent;
- };
-
- _proto._removeElement = function _removeElement(element) {
- var _this = this;
-
- $$$1(element).removeClass(ClassName.SHOW);
-
- if (!$$$1(element).hasClass(ClassName.FADE)) {
- this._destroyElement(element);
-
- return;
- }
-
- var transitionDuration = Util.getTransitionDurationFromElement(element);
- $$$1(element).one(Util.TRANSITION_END, function (event) {
- return _this._destroyElement(element, event);
- }).emulateTransitionEnd(transitionDuration);
- };
-
- _proto._destroyElement = function _destroyElement(element) {
- $$$1(element).detach().trigger(Event.CLOSED).remove();
- }; // Static
-
-
- Alert._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var $element = $$$1(this);
- var data = $element.data(DATA_KEY);
-
- if (!data) {
- data = new Alert(this);
- $element.data(DATA_KEY, data);
- }
-
- if (config === 'close') {
- data[config](this);
- }
- });
- };
-
- Alert._handleDismiss = function _handleDismiss(alertInstance) {
- return function (event) {
- if (event) {
- event.preventDefault();
- }
-
- alertInstance.close(this);
- };
- };
-
- _createClass(Alert, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }]);
-
- return Alert;
- }();
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
-
- $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $$$1.fn[NAME] = Alert._jQueryInterface;
- $$$1.fn[NAME].Constructor = Alert;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Alert._jQueryInterface;
- };
-
- return Alert;
- }($);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): button.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Button = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'button';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.button';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var ClassName = {
- ACTIVE: 'active',
- BUTTON: 'btn',
- FOCUS: 'focus'
- };
- var Selector = {
- DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
- DATA_TOGGLE: '[data-toggle="buttons"]',
- INPUT: 'input',
- ACTIVE: '.active',
- BUTTON: '.btn'
- };
- var Event = {
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
- FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Button =
- /*#__PURE__*/
- function () {
- function Button(element) {
- this._element = element;
- } // Getters
-
-
- var _proto = Button.prototype;
-
- // Public
- _proto.toggle = function toggle() {
- var triggerChangeEvent = true;
- var addAriaPressed = true;
- var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];
-
- if (rootElement) {
- var input = $$$1(this._element).find(Selector.INPUT)[0];
-
- if (input) {
- if (input.type === 'radio') {
- if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {
- triggerChangeEvent = false;
- } else {
- var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];
-
- if (activeElement) {
- $$$1(activeElement).removeClass(ClassName.ACTIVE);
- }
- }
- }
-
- if (triggerChangeEvent) {
- if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
- return;
- }
-
- input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);
- $$$1(input).trigger('change');
- }
-
- input.focus();
- addAriaPressed = false;
- }
- }
-
- if (addAriaPressed) {
- this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));
- }
-
- if (triggerChangeEvent) {
- $$$1(this._element).toggleClass(ClassName.ACTIVE);
- }
- };
-
- _proto.dispose = function dispose() {
- $$$1.removeData(this._element, DATA_KEY);
- this._element = null;
- }; // Static
-
-
- Button._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var data = $$$1(this).data(DATA_KEY);
-
- if (!data) {
- data = new Button(this);
- $$$1(this).data(DATA_KEY, data);
- }
-
- if (config === 'toggle') {
- data[config]();
- }
- });
- };
-
- _createClass(Button, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }]);
-
- return Button;
- }();
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
-
- $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
- event.preventDefault();
- var button = event.target;
-
- if (!$$$1(button).hasClass(ClassName.BUTTON)) {
- button = $$$1(button).closest(Selector.BUTTON);
- }
-
- Button._jQueryInterface.call($$$1(button), 'toggle');
- }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
- var button = $$$1(event.target).closest(Selector.BUTTON)[0];
- $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
- });
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $$$1.fn[NAME] = Button._jQueryInterface;
- $$$1.fn[NAME].Constructor = Button;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Button._jQueryInterface;
- };
-
- return Button;
- }($);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): carousel.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Carousel = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'carousel';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.carousel';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
-
- var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
-
- var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
-
- var Default = {
- interval: 5000,
- keyboard: true,
- slide: false,
- pause: 'hover',
- wrap: true
- };
- var DefaultType = {
- interval: '(number|boolean)',
- keyboard: 'boolean',
- slide: '(boolean|string)',
- pause: '(string|boolean)',
- wrap: 'boolean'
- };
- var Direction = {
- NEXT: 'next',
- PREV: 'prev',
- LEFT: 'left',
- RIGHT: 'right'
- };
- var Event = {
- SLIDE: "slide" + EVENT_KEY,
- SLID: "slid" + EVENT_KEY,
- KEYDOWN: "keydown" + EVENT_KEY,
- MOUSEENTER: "mouseenter" + EVENT_KEY,
- MOUSELEAVE: "mouseleave" + EVENT_KEY,
- TOUCHEND: "touchend" + EVENT_KEY,
- LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
- };
- var ClassName = {
- CAROUSEL: 'carousel',
- ACTIVE: 'active',
- SLIDE: 'slide',
- RIGHT: 'carousel-item-right',
- LEFT: 'carousel-item-left',
- NEXT: 'carousel-item-next',
- PREV: 'carousel-item-prev',
- ITEM: 'carousel-item'
- };
- var Selector = {
- ACTIVE: '.active',
- ACTIVE_ITEM: '.active.carousel-item',
- ITEM: '.carousel-item',
- NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
- INDICATORS: '.carousel-indicators',
- DATA_SLIDE: '[data-slide], [data-slide-to]',
- DATA_RIDE: '[data-ride="carousel"]'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Carousel =
- /*#__PURE__*/
- function () {
- function Carousel(element, config) {
- this._items = null;
- this._interval = null;
- this._activeElement = null;
- this._isPaused = false;
- this._isSliding = false;
- this.touchTimeout = null;
- this._config = this._getConfig(config);
- this._element = $$$1(element)[0];
- this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];
-
- this._addEventListeners();
- } // Getters
-
-
- var _proto = Carousel.prototype;
-
- // Public
- _proto.next = function next() {
- if (!this._isSliding) {
- this._slide(Direction.NEXT);
- }
- };
-
- _proto.nextWhenVisible = function nextWhenVisible() {
- // Don't call next when the page isn't visible
- // or the carousel or its parent isn't visible
- if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {
- this.next();
- }
- };
-
- _proto.prev = function prev() {
- if (!this._isSliding) {
- this._slide(Direction.PREV);
- }
- };
-
- _proto.pause = function pause(event) {
- if (!event) {
- this._isPaused = true;
- }
-
- if ($$$1(this._element).find(Selector.NEXT_PREV)[0]) {
- Util.triggerTransitionEnd(this._element);
- this.cycle(true);
- }
-
- clearInterval(this._interval);
- this._interval = null;
- };
-
- _proto.cycle = function cycle(event) {
- if (!event) {
- this._isPaused = false;
- }
-
- if (this._interval) {
- clearInterval(this._interval);
- this._interval = null;
- }
-
- if (this._config.interval && !this._isPaused) {
- this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
- }
- };
-
- _proto.to = function to(index) {
- var _this = this;
-
- this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
-
- var activeIndex = this._getItemIndex(this._activeElement);
-
- if (index > this._items.length - 1 || index < 0) {
- return;
- }
-
- if (this._isSliding) {
- $$$1(this._element).one(Event.SLID, function () {
- return _this.to(index);
- });
- return;
- }
-
- if (activeIndex === index) {
- this.pause();
- this.cycle();
- return;
- }
-
- var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
-
- this._slide(direction, this._items[index]);
- };
-
- _proto.dispose = function dispose() {
- $$$1(this._element).off(EVENT_KEY);
- $$$1.removeData(this._element, DATA_KEY);
- this._items = null;
- this._config = null;
- this._element = null;
- this._interval = null;
- this._isPaused = null;
- this._isSliding = null;
- this._activeElement = null;
- this._indicatorsElement = null;
- }; // Private
-
-
- _proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default, config);
- Util.typeCheckConfig(NAME, config, DefaultType);
- return config;
- };
-
- _proto._addEventListeners = function _addEventListeners() {
- var _this2 = this;
-
- if (this._config.keyboard) {
- $$$1(this._element).on(Event.KEYDOWN, function (event) {
- return _this2._keydown(event);
- });
- }
-
- if (this._config.pause === 'hover') {
- $$$1(this._element).on(Event.MOUSEENTER, function (event) {
- return _this2.pause(event);
- }).on(Event.MOUSELEAVE, function (event) {
- return _this2.cycle(event);
- });
-
- if ('ontouchstart' in document.documentElement) {
- // 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
- $$$1(this._element).on(Event.TOUCHEND, function () {
- _this2.pause();
-
- if (_this2.touchTimeout) {
- clearTimeout(_this2.touchTimeout);
- }
-
- _this2.touchTimeout = setTimeout(function (event) {
- return _this2.cycle(event);
- }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
- });
- }
- }
- };
-
- _proto._keydown = function _keydown(event) {
- if (/input|textarea/i.test(event.target.tagName)) {
- return;
- }
-
- switch (event.which) {
- case ARROW_LEFT_KEYCODE:
- event.preventDefault();
- this.prev();
- break;
-
- case ARROW_RIGHT_KEYCODE:
- event.preventDefault();
- this.next();
- break;
-
- default:
- }
- };
-
- _proto._getItemIndex = function _getItemIndex(element) {
- this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));
- return this._items.indexOf(element);
- };
-
- _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
- var isNextDirection = direction === Direction.NEXT;
- var isPrevDirection = direction === Direction.PREV;
-
- var activeIndex = this._getItemIndex(activeElement);
-
- var lastItemIndex = this._items.length - 1;
- var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
-
- if (isGoingToWrap && !this._config.wrap) {
- return activeElement;
- }
-
- var delta = direction === Direction.PREV ? -1 : 1;
- var itemIndex = (activeIndex + delta) % this._items.length;
- return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
- };
-
- _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
- var targetIndex = this._getItemIndex(relatedTarget);
-
- var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);
-
- var slideEvent = $$$1.Event(Event.SLIDE, {
- relatedTarget: relatedTarget,
- direction: eventDirectionName,
- from: fromIndex,
- to: targetIndex
- });
- $$$1(this._element).trigger(slideEvent);
- return slideEvent;
- };
-
- _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
- if (this._indicatorsElement) {
- $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
-
- var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
-
- if (nextIndicator) {
- $$$1(nextIndicator).addClass(ClassName.ACTIVE);
- }
- }
- };
-
- _proto._slide = function _slide(direction, element) {
- var _this3 = this;
-
- var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];
-
- var activeElementIndex = this._getItemIndex(activeElement);
-
- var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
-
- var nextElementIndex = this._getItemIndex(nextElement);
-
- var isCycling = Boolean(this._interval);
- var directionalClassName;
- var orderClassName;
- var eventDirectionName;
-
- if (direction === Direction.NEXT) {
- directionalClassName = ClassName.LEFT;
- orderClassName = ClassName.NEXT;
- eventDirectionName = Direction.LEFT;
- } else {
- directionalClassName = ClassName.RIGHT;
- orderClassName = ClassName.PREV;
- eventDirectionName = Direction.RIGHT;
- }
-
- if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {
- this._isSliding = false;
- return;
- }
-
- var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
-
- if (slideEvent.isDefaultPrevented()) {
- return;
- }
-
- if (!activeElement || !nextElement) {
- // Some weirdness is happening, so we bail
- return;
- }
-
- this._isSliding = true;
-
- if (isCycling) {
- this.pause();
- }
-
- this._setActiveIndicatorElement(nextElement);
-
- var slidEvent = $$$1.Event(Event.SLID, {
- relatedTarget: nextElement,
- direction: eventDirectionName,
- from: activeElementIndex,
- to: nextElementIndex
- });
-
- if ($$$1(this._element).hasClass(ClassName.SLIDE)) {
- $$$1(nextElement).addClass(orderClassName);
- Util.reflow(nextElement);
- $$$1(activeElement).addClass(directionalClassName);
- $$$1(nextElement).addClass(directionalClassName);
- var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
- $$$1(activeElement).one(Util.TRANSITION_END, function () {
- $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
- $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
- _this3._isSliding = false;
- setTimeout(function () {
- return $$$1(_this3._element).trigger(slidEvent);
- }, 0);
- }).emulateTransitionEnd(transitionDuration);
- } else {
- $$$1(activeElement).removeClass(ClassName.ACTIVE);
- $$$1(nextElement).addClass(ClassName.ACTIVE);
- this._isSliding = false;
- $$$1(this._element).trigger(slidEvent);
- }
-
- if (isCycling) {
- this.cycle();
- }
- }; // Static
-
-
- Carousel._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var data = $$$1(this).data(DATA_KEY);
-
- var _config = _objectSpread({}, Default, $$$1(this).data());
-
- if (typeof config === 'object') {
- _config = _objectSpread({}, _config, config);
- }
-
- var action = typeof config === 'string' ? config : _config.slide;
-
- if (!data) {
- data = new Carousel(this, _config);
- $$$1(this).data(DATA_KEY, data);
- }
-
- 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) {
- data.pause();
- data.cycle();
- }
- });
- };
-
- Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
- var selector = Util.getSelectorFromElement(this);
-
- if (!selector) {
- return;
- }
-
- var target = $$$1(selector)[0];
-
- if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {
- return;
- }
-
- var config = _objectSpread({}, $$$1(target).data(), $$$1(this).data());
-
- var slideIndex = this.getAttribute('data-slide-to');
-
- if (slideIndex) {
- config.interval = false;
- }
-
- Carousel._jQueryInterface.call($$$1(target), config);
-
- if (slideIndex) {
- $$$1(target).data(DATA_KEY).to(slideIndex);
- }
-
- event.preventDefault();
- };
-
- _createClass(Carousel, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }, {
- key: "Default",
- get: function get() {
- return Default;
- }
- }]);
-
- return Carousel;
- }();
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
-
- $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
- $$$1(window).on(Event.LOAD_DATA_API, function () {
- $$$1(Selector.DATA_RIDE).each(function () {
- var $carousel = $$$1(this);
-
- Carousel._jQueryInterface.call($carousel, $carousel.data());
- });
- });
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $$$1.fn[NAME] = Carousel._jQueryInterface;
- $$$1.fn[NAME].Constructor = Carousel;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Carousel._jQueryInterface;
- };
-
- return Carousel;
- }($);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): collapse.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Collapse = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'collapse';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.collapse';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var Default = {
- toggle: true,
- parent: ''
- };
- var DefaultType = {
- toggle: 'boolean',
- parent: '(string|element)'
- };
- var Event = {
- SHOW: "show" + EVENT_KEY,
- SHOWN: "shown" + EVENT_KEY,
- HIDE: "hide" + EVENT_KEY,
- HIDDEN: "hidden" + EVENT_KEY,
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
- };
- var ClassName = {
- SHOW: 'show',
- COLLAPSE: 'collapse',
- COLLAPSING: 'collapsing',
- COLLAPSED: 'collapsed'
- };
- var Dimension = {
- WIDTH: 'width',
- HEIGHT: 'height'
- };
- var Selector = {
- ACTIVES: '.show, .collapsing',
- DATA_TOGGLE: '[data-toggle="collapse"]'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Collapse =
- /*#__PURE__*/
- function () {
- function Collapse(element, config) {
- this._isTransitioning = false;
- this._element = element;
- this._config = this._getConfig(config);
- this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
- var tabToggles = $$$1(Selector.DATA_TOGGLE);
-
- for (var i = 0; i < tabToggles.length; i++) {
- var elem = tabToggles[i];
- var selector = Util.getSelectorFromElement(elem);
-
- if (selector !== null && $$$1(selector).filter(element).length > 0) {
- this._selector = selector;
-
- this._triggerArray.push(elem);
- }
- }
-
- this._parent = this._config.parent ? this._getParent() : null;
-
- if (!this._config.parent) {
- this._addAriaAndCollapsedClass(this._element, this._triggerArray);
- }
-
- if (this._config.toggle) {
- this.toggle();
- }
- } // Getters
-
-
- var _proto = Collapse.prototype;
-
- // Public
- _proto.toggle = function toggle() {
- if ($$$1(this._element).hasClass(ClassName.SHOW)) {
- this.hide();
- } else {
- this.show();
- }
- };
-
- _proto.show = function show() {
- var _this = this;
-
- if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {
- return;
- }
-
- var actives;
- var activesData;
-
- if (this._parent) {
- actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
-
- if (actives.length === 0) {
- actives = null;
- }
- }
-
- if (actives) {
- activesData = $$$1(actives).not(this._selector).data(DATA_KEY);
-
- if (activesData && activesData._isTransitioning) {
- return;
- }
- }
-
- var startEvent = $$$1.Event(Event.SHOW);
- $$$1(this._element).trigger(startEvent);
-
- if (startEvent.isDefaultPrevented()) {
- return;
- }
-
- if (actives) {
- Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');
-
- if (!activesData) {
- $$$1(actives).data(DATA_KEY, null);
- }
- }
-
- var dimension = this._getDimension();
-
- $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
- this._element.style[dimension] = 0;
-
- if (this._triggerArray.length > 0) {
- $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
- }
-
- this.setTransitioning(true);
-
- var complete = function complete() {
- $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
- _this._element.style[dimension] = '';
-
- _this.setTransitioning(false);
-
- $$$1(_this._element).trigger(Event.SHOWN);
- };
-
- var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
- var scrollSize = "scroll" + capitalizedDimension;
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
- this._element.style[dimension] = this._element[scrollSize] + "px";
- };
-
- _proto.hide = function hide() {
- var _this2 = this;
-
- if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {
- return;
- }
-
- var startEvent = $$$1.Event(Event.HIDE);
- $$$1(this._element).trigger(startEvent);
-
- if (startEvent.isDefaultPrevented()) {
- return;
- }
-
- var dimension = this._getDimension();
-
- this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
- Util.reflow(this._element);
- $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
-
- if (this._triggerArray.length > 0) {
- for (var i = 0; i < this._triggerArray.length; i++) {
- var trigger = this._triggerArray[i];
- var selector = Util.getSelectorFromElement(trigger);
-
- if (selector !== null) {
- var $elem = $$$1(selector);
-
- if (!$elem.hasClass(ClassName.SHOW)) {
- $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
- }
- }
- }
- }
-
- this.setTransitioning(true);
-
- var complete = function complete() {
- _this2.setTransitioning(false);
-
- $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
- };
-
- this._element.style[dimension] = '';
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
- };
-
- _proto.setTransitioning = function setTransitioning(isTransitioning) {
- this._isTransitioning = isTransitioning;
- };
-
- _proto.dispose = function dispose() {
- $$$1.removeData(this._element, DATA_KEY);
- this._config = null;
- this._parent = null;
- this._element = null;
- this._triggerArray = null;
- this._isTransitioning = null;
- }; // Private
-
-
- _proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default, config);
- config.toggle = Boolean(config.toggle); // Coerce string values
-
- Util.typeCheckConfig(NAME, config, DefaultType);
- return config;
- };
-
- _proto._getDimension = function _getDimension() {
- var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);
- return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
- };
-
- _proto._getParent = function _getParent() {
- var _this3 = this;
-
- var parent = null;
-
- if (Util.isElement(this._config.parent)) {
- parent = this._config.parent; // It's a jQuery object
-
- if (typeof this._config.parent.jquery !== 'undefined') {
- parent = this._config.parent[0];
- }
- } else {
- parent = $$$1(this._config.parent)[0];
- }
-
- var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
- $$$1(parent).find(selector).each(function (i, element) {
- _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
- });
- return parent;
- };
-
- _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
- if (element) {
- var isOpen = $$$1(element).hasClass(ClassName.SHOW);
-
- if (triggerArray.length > 0) {
- $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
- }
- }
- }; // Static
-
-
- Collapse._getTargetFromElement = function _getTargetFromElement(element) {
- var selector = Util.getSelectorFromElement(element);
- return selector ? $$$1(selector)[0] : null;
- };
-
- Collapse._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var $this = $$$1(this);
- var data = $this.data(DATA_KEY);
-
- var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {});
-
- if (!data && _config.toggle && /show|hide/.test(config)) {
- _config.toggle = false;
- }
-
- if (!data) {
- data = new Collapse(this, _config);
- $this.data(DATA_KEY, data);
- }
-
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"" + config + "\"");
- }
-
- data[config]();
- }
- });
- };
-
- _createClass(Collapse, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }, {
- key: "Default",
- get: function get() {
- return Default;
- }
- }]);
-
- return Collapse;
- }();
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
-
- $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
- // preventDefault only for elements (which change the URL) not inside the collapsible element
- if (event.currentTarget.tagName === 'A') {
- event.preventDefault();
- }
-
- var $trigger = $$$1(this);
- var selector = Util.getSelectorFromElement(this);
- $$$1(selector).each(function () {
- var $target = $$$1(this);
- var data = $target.data(DATA_KEY);
- var config = data ? 'toggle' : $trigger.data();
-
- Collapse._jQueryInterface.call($target, config);
- });
- });
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $$$1.fn[NAME] = Collapse._jQueryInterface;
- $$$1.fn[NAME].Constructor = Collapse;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Collapse._jQueryInterface;
- };
-
- return Collapse;
- }($);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): dropdown.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Dropdown = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'dropdown';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.dropdown';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
-
- var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
-
- var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
-
- var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
-
- var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
-
- var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
-
- var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
- var Event = {
- HIDE: "hide" + EVENT_KEY,
- HIDDEN: "hidden" + EVENT_KEY,
- SHOW: "show" + EVENT_KEY,
- SHOWN: "shown" + EVENT_KEY,
- CLICK: "click" + EVENT_KEY,
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
- KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
- KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
- };
- var ClassName = {
- DISABLED: 'disabled',
- SHOW: 'show',
- DROPUP: 'dropup',
- DROPRIGHT: 'dropright',
- DROPLEFT: 'dropleft',
- MENURIGHT: 'dropdown-menu-right',
- MENULEFT: 'dropdown-menu-left',
- POSITION_STATIC: 'position-static'
- };
- var Selector = {
- DATA_TOGGLE: '[data-toggle="dropdown"]',
- FORM_CHILD: '.dropdown form',
- MENU: '.dropdown-menu',
- NAVBAR_NAV: '.navbar-nav',
- VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
- };
- var AttachmentMap = {
- TOP: 'top-start',
- TOPEND: 'top-end',
- BOTTOM: 'bottom-start',
- BOTTOMEND: 'bottom-end',
- RIGHT: 'right-start',
- RIGHTEND: 'right-end',
- LEFT: 'left-start',
- LEFTEND: 'left-end'
- };
- var Default = {
- offset: 0,
- flip: true,
- boundary: 'scrollParent',
- reference: 'toggle',
- display: 'dynamic'
- };
- var DefaultType = {
- offset: '(number|string|function)',
- flip: 'boolean',
- boundary: '(string|element)',
- reference: '(string|element)',
- display: 'string'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Dropdown =
- /*#__PURE__*/
- function () {
- function Dropdown(element, config) {
- this._element = element;
- this._popper = null;
- this._config = this._getConfig(config);
- this._menu = this._getMenuElement();
- this._inNavbar = this._detectNavbar();
-
- this._addEventListeners();
- } // Getters
-
-
- var _proto = Dropdown.prototype;
-
- // Public
- _proto.toggle = function toggle() {
- if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {
- return;
- }
-
- var parent = Dropdown._getParentFromElement(this._element);
-
- var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);
-
- Dropdown._clearMenus();
-
- if (isActive) {
- return;
- }
-
- var relatedTarget = {
- relatedTarget: this._element
- };
- var showEvent = $$$1.Event(Event.SHOW, relatedTarget);
- $$$1(parent).trigger(showEvent);
-
- if (showEvent.isDefaultPrevented()) {
- return;
- } // Disable totally Popper.js for Dropdown in Navbar
-
-
- if (!this._inNavbar) {
- /**
- * Check for Popper dependency
- * Popper - https://popper.js.org
- */
- if (typeof Popper === 'undefined') {
- throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
- }
-
- var referenceElement = this._element;
-
- if (this._config.reference === 'parent') {
- referenceElement = parent;
- } else if (Util.isElement(this._config.reference)) {
- referenceElement = this._config.reference; // Check if it's jQuery element
-
- if (typeof this._config.reference.jquery !== 'undefined') {
- referenceElement = this._config.reference[0];
- }
- } // If boundary is not `scrollParent`, then set position to `static`
- // to allow the menu to "escape" the scroll parent's boundaries
- // https://github.com/twbs/bootstrap/issues/24251
-
-
- if (this._config.boundary !== 'scrollParent') {
- $$$1(parent).addClass(ClassName.POSITION_STATIC);
- }
-
- this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
- } // 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 && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {
- $$$1(document.body).children().on('mouseover', null, $$$1.noop);
- }
-
- this._element.focus();
-
- this._element.setAttribute('aria-expanded', true);
-
- $$$1(this._menu).toggleClass(ClassName.SHOW);
- $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));
- };
-
- _proto.dispose = function dispose() {
- $$$1.removeData(this._element, DATA_KEY);
- $$$1(this._element).off(EVENT_KEY);
- this._element = null;
- this._menu = null;
-
- if (this._popper !== null) {
- this._popper.destroy();
-
- this._popper = null;
- }
- };
-
- _proto.update = function update() {
- this._inNavbar = this._detectNavbar();
-
- if (this._popper !== null) {
- this._popper.scheduleUpdate();
- }
- }; // Private
-
-
- _proto._addEventListeners = function _addEventListeners() {
- var _this = this;
-
- $$$1(this._element).on(Event.CLICK, function (event) {
- event.preventDefault();
- event.stopPropagation();
-
- _this.toggle();
- });
- };
-
- _proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, this.constructor.Default, $$$1(this._element).data(), config);
- Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
- return config;
- };
-
- _proto._getMenuElement = function _getMenuElement() {
- if (!this._menu) {
- var parent = Dropdown._getParentFromElement(this._element);
-
- this._menu = $$$1(parent).find(Selector.MENU)[0];
- }
-
- return this._menu;
- };
-
- _proto._getPlacement = function _getPlacement() {
- var $parentDropdown = $$$1(this._element).parent();
- var placement = AttachmentMap.BOTTOM; // Handle dropup
-
- if ($parentDropdown.hasClass(ClassName.DROPUP)) {
- placement = AttachmentMap.TOP;
-
- if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
- placement = AttachmentMap.TOPEND;
- }
- } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
- placement = AttachmentMap.RIGHT;
- } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
- placement = AttachmentMap.LEFT;
- } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {
- placement = AttachmentMap.BOTTOMEND;
- }
-
- return placement;
- };
-
- _proto._detectNavbar = function _detectNavbar() {
- return $$$1(this._element).closest('.navbar').length > 0;
- };
-
- _proto._getPopperConfig = function _getPopperConfig() {
- var _this2 = this;
-
- var offsetConf = {};
-
- if (typeof this._config.offset === 'function') {
- offsetConf.fn = function (data) {
- data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {});
- return data;
- };
- } else {
- offsetConf.offset = this._config.offset;
- }
-
- var popperConfig = {
- placement: this._getPlacement(),
- modifiers: {
- offset: offsetConf,
- flip: {
- enabled: this._config.flip
- },
- preventOverflow: {
- boundariesElement: this._config.boundary
- }
- } // Disable Popper.js if we have a static display
-
- };
-
- if (this._config.display === 'static') {
- popperConfig.modifiers.applyStyle = {
- enabled: false
- };
- }
-
- return popperConfig;
- }; // Static
-
-
- Dropdown._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var data = $$$1(this).data(DATA_KEY);
-
- var _config = typeof config === 'object' ? config : null;
-
- if (!data) {
- data = new Dropdown(this, _config);
- $$$1(this).data(DATA_KEY, data);
- }
-
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"" + config + "\"");
- }
-
- data[config]();
- }
- });
- };
-
- Dropdown._clearMenus = function _clearMenus(event) {
- if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
- return;
- }
-
- var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));
-
- for (var i = 0; i < toggles.length; i++) {
- var parent = Dropdown._getParentFromElement(toggles[i]);
-
- var context = $$$1(toggles[i]).data(DATA_KEY);
- var relatedTarget = {
- relatedTarget: toggles[i]
- };
-
- if (!context) {
- continue;
- }
-
- var dropdownMenu = context._menu;
-
- if (!$$$1(parent).hasClass(ClassName.SHOW)) {
- continue;
- }
-
- if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {
- continue;
- }
-
- var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);
- $$$1(parent).trigger(hideEvent);
-
- if (hideEvent.isDefaultPrevented()) {
- continue;
- } // If this is a touch-enabled device we remove the extra
- // empty mouseover listeners we added for iOS support
-
-
- if ('ontouchstart' in document.documentElement) {
- $$$1(document.body).children().off('mouseover', null, $$$1.noop);
- }
-
- toggles[i].setAttribute('aria-expanded', 'false');
- $$$1(dropdownMenu).removeClass(ClassName.SHOW);
- $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));
- }
- };
-
- Dropdown._getParentFromElement = function _getParentFromElement(element) {
- var parent;
- var selector = Util.getSelectorFromElement(element);
-
- if (selector) {
- parent = $$$1(selector)[0];
- }
-
- return parent || element.parentNode;
- }; // eslint-disable-next-line complexity
-
-
- Dropdown._dataApiKeydownHandler = function _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.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
- return;
- }
-
- event.preventDefault();
- event.stopPropagation();
-
- if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {
- return;
- }
-
- var parent = Dropdown._getParentFromElement(this);
-
- var isActive = $$$1(parent).hasClass(ClassName.SHOW);
-
- if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
- if (event.which === ESCAPE_KEYCODE) {
- var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];
- $$$1(toggle).trigger('focus');
- }
-
- $$$1(this).trigger('click');
- return;
- }
-
- var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();
-
- if (items.length === 0) {
- return;
- }
-
- var index = items.indexOf(event.target);
-
- if (event.which === ARROW_UP_KEYCODE && index > 0) {
- // Up
- index--;
- }
-
- if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
- // Down
- index++;
- }
-
- if (index < 0) {
- index = 0;
- }
-
- items[index].focus();
- };
-
- _createClass(Dropdown, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }, {
- key: "Default",
- get: function get() {
- return Default;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType;
- }
- }]);
-
- return Dropdown;
- }();
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
-
- $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
- event.preventDefault();
- event.stopPropagation();
-
- Dropdown._jQueryInterface.call($$$1(this), 'toggle');
- }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
- e.stopPropagation();
- });
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $$$1.fn[NAME] = Dropdown._jQueryInterface;
- $$$1.fn[NAME].Constructor = Dropdown;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Dropdown._jQueryInterface;
- };
-
- return Dropdown;
- }($, Popper);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): modal.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Modal = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'modal';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.modal';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
-
- var Default = {
- backdrop: true,
- keyboard: true,
- focus: true,
- show: true
- };
- var DefaultType = {
- backdrop: '(boolean|string)',
- keyboard: 'boolean',
- focus: 'boolean',
- show: 'boolean'
- };
- var Event = {
- HIDE: "hide" + EVENT_KEY,
- HIDDEN: "hidden" + EVENT_KEY,
- SHOW: "show" + EVENT_KEY,
- SHOWN: "shown" + EVENT_KEY,
- FOCUSIN: "focusin" + EVENT_KEY,
- RESIZE: "resize" + EVENT_KEY,
- CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
- KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
- MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
- MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
- };
- var ClassName = {
- SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
- BACKDROP: 'modal-backdrop',
- OPEN: 'modal-open',
- FADE: 'fade',
- SHOW: 'show'
- };
- var Selector = {
- DIALOG: '.modal-dialog',
- DATA_TOGGLE: '[data-toggle="modal"]',
- DATA_DISMISS: '[data-dismiss="modal"]',
- FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
- STICKY_CONTENT: '.sticky-top',
- NAVBAR_TOGGLER: '.navbar-toggler'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Modal =
- /*#__PURE__*/
- function () {
- function Modal(element, config) {
- this._config = this._getConfig(config);
- this._element = element;
- this._dialog = $$$1(element).find(Selector.DIALOG)[0];
- this._backdrop = null;
- this._isShown = false;
- this._isBodyOverflowing = false;
- this._ignoreBackdropClick = false;
- this._scrollbarWidth = 0;
- } // Getters
-
-
- var _proto = Modal.prototype;
-
- // Public
- _proto.toggle = function toggle(relatedTarget) {
- return this._isShown ? this.hide() : this.show(relatedTarget);
- };
-
- _proto.show = function show(relatedTarget) {
- var _this = this;
-
- if (this._isTransitioning || this._isShown) {
- return;
- }
-
- if ($$$1(this._element).hasClass(ClassName.FADE)) {
- this._isTransitioning = true;
- }
-
- var showEvent = $$$1.Event(Event.SHOW, {
- relatedTarget: relatedTarget
- });
- $$$1(this._element).trigger(showEvent);
-
- if (this._isShown || showEvent.isDefaultPrevented()) {
- return;
- }
-
- this._isShown = true;
-
- this._checkScrollbar();
-
- this._setScrollbar();
-
- this._adjustDialog();
-
- $$$1(document.body).addClass(ClassName.OPEN);
-
- this._setEscapeEvent();
-
- this._setResizeEvent();
-
- $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
- return _this.hide(event);
- });
- $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
- $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
- if ($$$1(event.target).is(_this._element)) {
- _this._ignoreBackdropClick = true;
- }
- });
- });
-
- this._showBackdrop(function () {
- return _this._showElement(relatedTarget);
- });
- };
-
- _proto.hide = function hide(event) {
- var _this2 = this;
-
- if (event) {
- event.preventDefault();
- }
-
- if (this._isTransitioning || !this._isShown) {
- return;
- }
-
- var hideEvent = $$$1.Event(Event.HIDE);
- $$$1(this._element).trigger(hideEvent);
-
- if (!this._isShown || hideEvent.isDefaultPrevented()) {
- return;
- }
-
- this._isShown = false;
- var transition = $$$1(this._element).hasClass(ClassName.FADE);
-
- if (transition) {
- this._isTransitioning = true;
- }
-
- this._setEscapeEvent();
-
- this._setResizeEvent();
-
- $$$1(document).off(Event.FOCUSIN);
- $$$1(this._element).removeClass(ClassName.SHOW);
- $$$1(this._element).off(Event.CLICK_DISMISS);
- $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
-
- if (transition) {
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $$$1(this._element).one(Util.TRANSITION_END, function (event) {
- return _this2._hideModal(event);
- }).emulateTransitionEnd(transitionDuration);
- } else {
- this._hideModal();
- }
- };
-
- _proto.dispose = function dispose() {
- $$$1.removeData(this._element, DATA_KEY);
- $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
- this._config = null;
- this._element = null;
- this._dialog = null;
- this._backdrop = null;
- this._isShown = null;
- this._isBodyOverflowing = null;
- this._ignoreBackdropClick = null;
- this._scrollbarWidth = null;
- };
-
- _proto.handleUpdate = function handleUpdate() {
- this._adjustDialog();
- }; // Private
-
-
- _proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default, config);
- Util.typeCheckConfig(NAME, config, DefaultType);
- return config;
- };
-
- _proto._showElement = function _showElement(relatedTarget) {
- var _this3 = this;
-
- var transition = $$$1(this._element).hasClass(ClassName.FADE);
-
- if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
- // Don't move modal's DOM position
- document.body.appendChild(this._element);
- }
-
- this._element.style.display = 'block';
-
- this._element.removeAttribute('aria-hidden');
-
- this._element.scrollTop = 0;
-
- if (transition) {
- Util.reflow(this._element);
- }
-
- $$$1(this._element).addClass(ClassName.SHOW);
-
- if (this._config.focus) {
- this._enforceFocus();
- }
-
- var shownEvent = $$$1.Event(Event.SHOWN, {
- relatedTarget: relatedTarget
- });
-
- var transitionComplete = function transitionComplete() {
- if (_this3._config.focus) {
- _this3._element.focus();
- }
-
- _this3._isTransitioning = false;
- $$$1(_this3._element).trigger(shownEvent);
- };
-
- if (transition) {
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
- $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
- } else {
- transitionComplete();
- }
- };
-
- _proto._enforceFocus = function _enforceFocus() {
- var _this4 = this;
-
- $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
- .on(Event.FOCUSIN, function (event) {
- if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
- _this4._element.focus();
- }
- });
- };
-
- _proto._setEscapeEvent = function _setEscapeEvent() {
- var _this5 = this;
-
- if (this._isShown && this._config.keyboard) {
- $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
- if (event.which === ESCAPE_KEYCODE) {
- event.preventDefault();
-
- _this5.hide();
- }
- });
- } else if (!this._isShown) {
- $$$1(this._element).off(Event.KEYDOWN_DISMISS);
- }
- };
-
- _proto._setResizeEvent = function _setResizeEvent() {
- var _this6 = this;
-
- if (this._isShown) {
- $$$1(window).on(Event.RESIZE, function (event) {
- return _this6.handleUpdate(event);
- });
- } else {
- $$$1(window).off(Event.RESIZE);
- }
- };
-
- _proto._hideModal = function _hideModal() {
- var _this7 = this;
-
- this._element.style.display = 'none';
-
- this._element.setAttribute('aria-hidden', true);
-
- this._isTransitioning = false;
-
- this._showBackdrop(function () {
- $$$1(document.body).removeClass(ClassName.OPEN);
-
- _this7._resetAdjustments();
-
- _this7._resetScrollbar();
-
- $$$1(_this7._element).trigger(Event.HIDDEN);
- });
- };
-
- _proto._removeBackdrop = function _removeBackdrop() {
- if (this._backdrop) {
- $$$1(this._backdrop).remove();
- this._backdrop = null;
- }
- };
-
- _proto._showBackdrop = function _showBackdrop(callback) {
- var _this8 = this;
-
- var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
-
- if (this._isShown && this._config.backdrop) {
- this._backdrop = document.createElement('div');
- this._backdrop.className = ClassName.BACKDROP;
-
- if (animate) {
- $$$1(this._backdrop).addClass(animate);
- }
-
- $$$1(this._backdrop).appendTo(document.body);
- $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
- if (_this8._ignoreBackdropClick) {
- _this8._ignoreBackdropClick = false;
- return;
- }
-
- if (event.target !== event.currentTarget) {
- return;
- }
-
- if (_this8._config.backdrop === 'static') {
- _this8._element.focus();
- } else {
- _this8.hide();
- }
- });
-
- if (animate) {
- Util.reflow(this._backdrop);
- }
-
- $$$1(this._backdrop).addClass(ClassName.SHOW);
-
- if (!callback) {
- return;
- }
-
- if (!animate) {
- callback();
- return;
- }
-
- var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
- $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
- } else if (!this._isShown && this._backdrop) {
- $$$1(this._backdrop).removeClass(ClassName.SHOW);
-
- var callbackRemove = function callbackRemove() {
- _this8._removeBackdrop();
-
- if (callback) {
- callback();
- }
- };
-
- if ($$$1(this._element).hasClass(ClassName.FADE)) {
- var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
-
- $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
- } else {
- callbackRemove();
- }
- } else if (callback) {
- callback();
- }
- }; // ----------------------------------------------------------------------
- // the following methods are used to handle overflowing modals
- // todo (fat): these should probably be refactored out of modal.js
- // ----------------------------------------------------------------------
-
-
- _proto._adjustDialog = function _adjustDialog() {
- var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-
- if (!this._isBodyOverflowing && isModalOverflowing) {
- this._element.style.paddingLeft = this._scrollbarWidth + "px";
- }
-
- if (this._isBodyOverflowing && !isModalOverflowing) {
- this._element.style.paddingRight = this._scrollbarWidth + "px";
- }
- };
-
- _proto._resetAdjustments = function _resetAdjustments() {
- this._element.style.paddingLeft = '';
- this._element.style.paddingRight = '';
- };
-
- _proto._checkScrollbar = function _checkScrollbar() {
- var rect = document.body.getBoundingClientRect();
- this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
- this._scrollbarWidth = this._getScrollbarWidth();
- };
-
- _proto._setScrollbar = function _setScrollbar() {
- var _this9 = this;
-
- if (this._isBodyOverflowing) {
- // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
- // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
- // Adjust fixed content padding
- $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
- var actualPadding = $$$1(element)[0].style.paddingRight;
- var calculatedPadding = $$$1(element).css('padding-right');
- $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
- }); // Adjust sticky content margin
-
- $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
- var actualMargin = $$$1(element)[0].style.marginRight;
- var calculatedMargin = $$$1(element).css('margin-right');
- $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
- }); // Adjust navbar-toggler margin
-
- $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
- var actualMargin = $$$1(element)[0].style.marginRight;
- var calculatedMargin = $$$1(element).css('margin-right');
- $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
- }); // Adjust body padding
-
- var actualPadding = document.body.style.paddingRight;
- var calculatedPadding = $$$1(document.body).css('padding-right');
- $$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
- }
- };
-
- _proto._resetScrollbar = function _resetScrollbar() {
- // Restore fixed content padding
- $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
- var padding = $$$1(element).data('padding-right');
-
- if (typeof padding !== 'undefined') {
- $$$1(element).css('padding-right', padding).removeData('padding-right');
- }
- }); // Restore sticky content and navbar-toggler margin
-
- $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
- var margin = $$$1(element).data('margin-right');
-
- if (typeof margin !== 'undefined') {
- $$$1(element).css('margin-right', margin).removeData('margin-right');
- }
- }); // Restore body padding
-
- var padding = $$$1(document.body).data('padding-right');
-
- if (typeof padding !== 'undefined') {
- $$$1(document.body).css('padding-right', padding).removeData('padding-right');
- }
- };
-
- _proto._getScrollbarWidth = function _getScrollbarWidth() {
- // thx d.walsh
- var scrollDiv = document.createElement('div');
- scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
- document.body.appendChild(scrollDiv);
- var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
- document.body.removeChild(scrollDiv);
- return scrollbarWidth;
- }; // Static
-
-
- Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
- return this.each(function () {
- var data = $$$1(this).data(DATA_KEY);
-
- var _config = _objectSpread({}, Default, $$$1(this).data(), typeof config === 'object' && config ? config : {});
-
- if (!data) {
- data = new Modal(this, _config);
- $$$1(this).data(DATA_KEY, data);
- }
-
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"" + config + "\"");
- }
-
- data[config](relatedTarget);
- } else if (_config.show) {
- data.show(relatedTarget);
- }
- });
- };
-
- _createClass(Modal, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }, {
- key: "Default",
- get: function get() {
- return Default;
- }
- }]);
-
- return Modal;
- }();
- /**
- * ------------------------------------------------------------------------
- * Data Api implementation
- * ------------------------------------------------------------------------
- */
-
-
- $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
- var _this10 = this;
-
- var target;
- var selector = Util.getSelectorFromElement(this);
-
- if (selector) {
- target = $$$1(selector)[0];
- }
-
- var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data());
-
- if (this.tagName === 'A' || this.tagName === 'AREA') {
- event.preventDefault();
- }
-
- var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
- if (showEvent.isDefaultPrevented()) {
- // Only register focus restorer if modal will actually get shown
- return;
- }
-
- $target.one(Event.HIDDEN, function () {
- if ($$$1(_this10).is(':visible')) {
- _this10.focus();
- }
- });
- });
-
- Modal._jQueryInterface.call($$$1(target), config, this);
- });
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
- $$$1.fn[NAME] = Modal._jQueryInterface;
- $$$1.fn[NAME].Constructor = Modal;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Modal._jQueryInterface;
- };
-
- return Modal;
- }($);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): tooltip.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Tooltip = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'tooltip';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.tooltip';
- var EVENT_KEY = "." + DATA_KEY;
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var CLASS_PREFIX = 'bs-tooltip';
- var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
- var DefaultType = {
- animation: 'boolean',
- template: 'string',
- title: '(string|element|function)',
- trigger: 'string',
- delay: '(number|object)',
- html: 'boolean',
- selector: '(string|boolean)',
- placement: '(string|function)',
- offset: '(number|string)',
- container: '(string|element|boolean)',
- fallbackPlacement: '(string|array)',
- boundary: '(string|element)'
- };
- var AttachmentMap = {
- AUTO: 'auto',
- TOP: 'top',
- RIGHT: 'right',
- BOTTOM: 'bottom',
- LEFT: 'left'
- };
- var Default = {
- animation: true,
- template: '',
- trigger: 'hover focus',
- title: '',
- delay: 0,
- html: false,
- selector: false,
- placement: 'top',
- offset: 0,
- container: false,
- fallbackPlacement: 'flip',
- boundary: 'scrollParent'
- };
- var HoverState = {
- SHOW: 'show',
- OUT: 'out'
- };
- var Event = {
- HIDE: "hide" + EVENT_KEY,
- HIDDEN: "hidden" + EVENT_KEY,
- SHOW: "show" + EVENT_KEY,
- SHOWN: "shown" + EVENT_KEY,
- INSERTED: "inserted" + EVENT_KEY,
- CLICK: "click" + EVENT_KEY,
- FOCUSIN: "focusin" + EVENT_KEY,
- FOCUSOUT: "focusout" + EVENT_KEY,
- MOUSEENTER: "mouseenter" + EVENT_KEY,
- MOUSELEAVE: "mouseleave" + EVENT_KEY
- };
- var ClassName = {
- FADE: 'fade',
- SHOW: 'show'
- };
- var Selector = {
- TOOLTIP: '.tooltip',
- TOOLTIP_INNER: '.tooltip-inner',
- ARROW: '.arrow'
- };
- var Trigger = {
- HOVER: 'hover',
- FOCUS: 'focus',
- CLICK: 'click',
- MANUAL: 'manual'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Tooltip =
- /*#__PURE__*/
- function () {
- function Tooltip(element, config) {
- /**
- * Check for Popper dependency
- * Popper - https://popper.js.org
- */
- if (typeof Popper === 'undefined') {
- throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
- } // private
-
-
- this._isEnabled = true;
- this._timeout = 0;
- this._hoverState = '';
- this._activeTrigger = {};
- this._popper = null; // Protected
-
- this.element = element;
- this.config = this._getConfig(config);
- this.tip = null;
-
- this._setListeners();
- } // Getters
-
-
- var _proto = Tooltip.prototype;
-
- // Public
- _proto.enable = function enable() {
- this._isEnabled = true;
- };
-
- _proto.disable = function disable() {
- this._isEnabled = false;
- };
-
- _proto.toggleEnabled = function toggleEnabled() {
- this._isEnabled = !this._isEnabled;
- };
-
- _proto.toggle = function toggle(event) {
- if (!this._isEnabled) {
- return;
- }
-
- if (event) {
- var dataKey = this.constructor.DATA_KEY;
- var context = $$$1(event.currentTarget).data(dataKey);
-
- if (!context) {
- context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $$$1(event.currentTarget).data(dataKey, context);
- }
-
- context._activeTrigger.click = !context._activeTrigger.click;
-
- if (context._isWithActiveTrigger()) {
- context._enter(null, context);
- } else {
- context._leave(null, context);
- }
- } else {
- if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
- this._leave(null, this);
-
- return;
- }
-
- this._enter(null, this);
- }
- };
-
- _proto.dispose = function dispose() {
- clearTimeout(this._timeout);
- $$$1.removeData(this.element, this.constructor.DATA_KEY);
- $$$1(this.element).off(this.constructor.EVENT_KEY);
- $$$1(this.element).closest('.modal').off('hide.bs.modal');
-
- if (this.tip) {
- $$$1(this.tip).remove();
- }
-
- this._isEnabled = null;
- this._timeout = null;
- this._hoverState = null;
- this._activeTrigger = null;
-
- if (this._popper !== null) {
- this._popper.destroy();
- }
-
- this._popper = null;
- this.element = null;
- this.config = null;
- this.tip = null;
- };
-
- _proto.show = function show() {
- var _this = this;
-
- if ($$$1(this.element).css('display') === 'none') {
- throw new Error('Please use show on visible elements');
- }
-
- var showEvent = $$$1.Event(this.constructor.Event.SHOW);
-
- if (this.isWithContent() && this._isEnabled) {
- $$$1(this.element).trigger(showEvent);
- var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
-
- if (showEvent.isDefaultPrevented() || !isInTheDom) {
- return;
- }
-
- var tip = this.getTipElement();
- var tipId = Util.getUID(this.constructor.NAME);
- tip.setAttribute('id', tipId);
- this.element.setAttribute('aria-describedby', tipId);
- this.setContent();
-
- if (this.config.animation) {
- $$$1(tip).addClass(ClassName.FADE);
- }
-
- var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
-
- var attachment = this._getAttachment(placement);
-
- this.addAttachmentClass(attachment);
- var container = this.config.container === false ? document.body : $$$1(this.config.container);
- $$$1(tip).data(this.constructor.DATA_KEY, this);
-
- if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
- $$$1(tip).appendTo(container);
- }
-
- $$$1(this.element).trigger(this.constructor.Event.INSERTED);
- this._popper = new Popper(this.element, tip, {
- placement: attachment,
- modifiers: {
- offset: {
- offset: this.config.offset
- },
- flip: {
- behavior: this.config.fallbackPlacement
- },
- arrow: {
- element: Selector.ARROW
- },
- preventOverflow: {
- boundariesElement: this.config.boundary
- }
- },
- onCreate: function onCreate(data) {
- if (data.originalPlacement !== data.placement) {
- _this._handlePopperPlacementChange(data);
- }
- },
- onUpdate: function onUpdate(data) {
- _this._handlePopperPlacementChange(data);
- }
- });
- $$$1(tip).addClass(ClassName.SHOW); // 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) {
- $$$1(document.body).children().on('mouseover', null, $$$1.noop);
- }
-
- var complete = function complete() {
- if (_this.config.animation) {
- _this._fixTransition();
- }
-
- var prevHoverState = _this._hoverState;
- _this._hoverState = null;
- $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
-
- if (prevHoverState === HoverState.OUT) {
- _this._leave(null, _this);
- }
- };
-
- if ($$$1(this.tip).hasClass(ClassName.FADE)) {
- var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
- $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
- } else {
- complete();
- }
- }
- };
-
- _proto.hide = function hide(callback) {
- var _this2 = this;
-
- var tip = this.getTipElement();
- var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
-
- var complete = function complete() {
- if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
- tip.parentNode.removeChild(tip);
- }
-
- _this2._cleanTipClass();
-
- _this2.element.removeAttribute('aria-describedby');
-
- $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
-
- if (_this2._popper !== null) {
- _this2._popper.destroy();
- }
-
- if (callback) {
- callback();
- }
- };
-
- $$$1(this.element).trigger(hideEvent);
-
- if (hideEvent.isDefaultPrevented()) {
- return;
- }
-
- $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
- // empty mouseover listeners we added for iOS support
-
- if ('ontouchstart' in document.documentElement) {
- $$$1(document.body).children().off('mouseover', null, $$$1.noop);
- }
-
- this._activeTrigger[Trigger.CLICK] = false;
- this._activeTrigger[Trigger.FOCUS] = false;
- this._activeTrigger[Trigger.HOVER] = false;
-
- if ($$$1(this.tip).hasClass(ClassName.FADE)) {
- var transitionDuration = Util.getTransitionDurationFromElement(tip);
- $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
- } else {
- complete();
- }
-
- this._hoverState = '';
- };
-
- _proto.update = function update() {
- if (this._popper !== null) {
- this._popper.scheduleUpdate();
- }
- }; // Protected
-
-
- _proto.isWithContent = function isWithContent() {
- return Boolean(this.getTitle());
- };
-
- _proto.addAttachmentClass = function addAttachmentClass(attachment) {
- $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
- };
-
- _proto.getTipElement = function getTipElement() {
- this.tip = this.tip || $$$1(this.config.template)[0];
- return this.tip;
- };
-
- _proto.setContent = function setContent() {
- var $tip = $$$1(this.getTipElement());
- this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
- $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
- };
-
- _proto.setElementContent = function setElementContent($element, content) {
- var html = this.config.html;
-
- if (typeof content === 'object' && (content.nodeType || content.jquery)) {
- // Content is a DOM node or a jQuery
- if (html) {
- if (!$$$1(content).parent().is($element)) {
- $element.empty().append(content);
- }
- } else {
- $element.text($$$1(content).text());
- }
- } else {
- $element[html ? 'html' : 'text'](content);
- }
- };
-
- _proto.getTitle = function getTitle() {
- var title = this.element.getAttribute('data-original-title');
-
- if (!title) {
- title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
- }
-
- return title;
- }; // Private
-
-
- _proto._getAttachment = function _getAttachment(placement) {
- return AttachmentMap[placement.toUpperCase()];
- };
-
- _proto._setListeners = function _setListeners() {
- var _this3 = this;
-
- var triggers = this.config.trigger.split(' ');
- triggers.forEach(function (trigger) {
- if (trigger === 'click') {
- $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
- return _this3.toggle(event);
- });
- } else if (trigger !== Trigger.MANUAL) {
- var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
- var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
- $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
- return _this3._enter(event);
- }).on(eventOut, _this3.config.selector, function (event) {
- return _this3._leave(event);
- });
- }
-
- $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
- return _this3.hide();
- });
- });
-
- if (this.config.selector) {
- this.config = _objectSpread({}, this.config, {
- trigger: 'manual',
- selector: ''
- });
- } else {
- this._fixTitle();
- }
- };
-
- _proto._fixTitle = function _fixTitle() {
- var titleType = typeof this.element.getAttribute('data-original-title');
-
- if (this.element.getAttribute('title') || titleType !== 'string') {
- this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
- this.element.setAttribute('title', '');
- }
- };
-
- _proto._enter = function _enter(event, context) {
- var dataKey = this.constructor.DATA_KEY;
- context = context || $$$1(event.currentTarget).data(dataKey);
-
- if (!context) {
- context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $$$1(event.currentTarget).data(dataKey, context);
- }
-
- if (event) {
- context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
- }
-
- if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
- context._hoverState = HoverState.SHOW;
- return;
- }
-
- clearTimeout(context._timeout);
- context._hoverState = HoverState.SHOW;
-
- if (!context.config.delay || !context.config.delay.show) {
- context.show();
- return;
- }
-
- context._timeout = setTimeout(function () {
- if (context._hoverState === HoverState.SHOW) {
- context.show();
- }
- }, context.config.delay.show);
- };
-
- _proto._leave = function _leave(event, context) {
- var dataKey = this.constructor.DATA_KEY;
- context = context || $$$1(event.currentTarget).data(dataKey);
-
- if (!context) {
- context = new this.constructor(event.currentTarget, this._getDelegateConfig());
- $$$1(event.currentTarget).data(dataKey, context);
- }
-
- if (event) {
- context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
- }
-
- if (context._isWithActiveTrigger()) {
- return;
- }
-
- clearTimeout(context._timeout);
- context._hoverState = HoverState.OUT;
-
- if (!context.config.delay || !context.config.delay.hide) {
- context.hide();
- return;
- }
-
- context._timeout = setTimeout(function () {
- if (context._hoverState === HoverState.OUT) {
- context.hide();
- }
- }, context.config.delay.hide);
- };
-
- _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
- for (var trigger in this._activeTrigger) {
- if (this._activeTrigger[trigger]) {
- return true;
- }
- }
-
- return false;
- };
-
- _proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, this.constructor.Default, $$$1(this.element).data(), typeof config === 'object' && config ? config : {});
-
- 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();
- }
-
- Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
- return config;
- };
-
- _proto._getDelegateConfig = function _getDelegateConfig() {
- var config = {};
-
- if (this.config) {
- for (var key in this.config) {
- if (this.constructor.Default[key] !== this.config[key]) {
- config[key] = this.config[key];
- }
- }
- }
-
- return config;
- };
-
- _proto._cleanTipClass = function _cleanTipClass() {
- var $tip = $$$1(this.getTipElement());
- var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
-
- if (tabClass !== null && tabClass.length > 0) {
- $tip.removeClass(tabClass.join(''));
- }
- };
-
- _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
- this._cleanTipClass();
-
- this.addAttachmentClass(this._getAttachment(data.placement));
- };
-
- _proto._fixTransition = function _fixTransition() {
- var tip = this.getTipElement();
- var initConfigAnimation = this.config.animation;
-
- if (tip.getAttribute('x-placement') !== null) {
- return;
- }
-
- $$$1(tip).removeClass(ClassName.FADE);
- this.config.animation = false;
- this.hide();
- this.show();
- this.config.animation = initConfigAnimation;
- }; // Static
-
-
- Tooltip._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var data = $$$1(this).data(DATA_KEY);
-
- var _config = typeof config === 'object' && config;
-
- if (!data && /dispose|hide/.test(config)) {
- return;
- }
-
- if (!data) {
- data = new Tooltip(this, _config);
- $$$1(this).data(DATA_KEY, data);
- }
-
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"" + config + "\"");
- }
-
- data[config]();
- }
- });
- };
-
- _createClass(Tooltip, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }, {
- key: "Default",
- get: function get() {
- return Default;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME;
- }
- }, {
- key: "DATA_KEY",
- get: function get() {
- return DATA_KEY;
- }
- }, {
- key: "Event",
- get: function get() {
- return Event;
- }
- }, {
- key: "EVENT_KEY",
- get: function get() {
- return EVENT_KEY;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType;
- }
- }]);
-
- return Tooltip;
- }();
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
-
- $$$1.fn[NAME] = Tooltip._jQueryInterface;
- $$$1.fn[NAME].Constructor = Tooltip;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Tooltip._jQueryInterface;
- };
-
- return Tooltip;
- }($, Popper);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): popover.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var Popover = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'popover';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.popover';
- var EVENT_KEY = "." + DATA_KEY;
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var CLASS_PREFIX = 'bs-popover';
- var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
-
- var Default = _objectSpread({}, Tooltip.Default, {
- placement: 'right',
- trigger: 'click',
- content: '',
- template: ''
- });
-
- var DefaultType = _objectSpread({}, Tooltip.DefaultType, {
- content: '(string|element|function)'
- });
-
- var ClassName = {
- FADE: 'fade',
- SHOW: 'show'
- };
- var Selector = {
- TITLE: '.popover-header',
- CONTENT: '.popover-body'
- };
- var Event = {
- HIDE: "hide" + EVENT_KEY,
- HIDDEN: "hidden" + EVENT_KEY,
- SHOW: "show" + EVENT_KEY,
- SHOWN: "shown" + EVENT_KEY,
- INSERTED: "inserted" + EVENT_KEY,
- CLICK: "click" + EVENT_KEY,
- FOCUSIN: "focusin" + EVENT_KEY,
- FOCUSOUT: "focusout" + EVENT_KEY,
- MOUSEENTER: "mouseenter" + EVENT_KEY,
- MOUSELEAVE: "mouseleave" + EVENT_KEY
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var Popover =
- /*#__PURE__*/
- function (_Tooltip) {
- _inheritsLoose(Popover, _Tooltip);
-
- function Popover() {
- return _Tooltip.apply(this, arguments) || this;
- }
-
- var _proto = Popover.prototype;
-
- // Overrides
- _proto.isWithContent = function isWithContent() {
- return this.getTitle() || this._getContent();
- };
-
- _proto.addAttachmentClass = function addAttachmentClass(attachment) {
- $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
- };
-
- _proto.getTipElement = function getTipElement() {
- this.tip = this.tip || $$$1(this.config.template)[0];
- return this.tip;
- };
-
- _proto.setContent = function setContent() {
- var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events
-
- this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
-
- var content = this._getContent();
-
- if (typeof content === 'function') {
- content = content.call(this.element);
- }
-
- this.setElementContent($tip.find(Selector.CONTENT), content);
- $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
- }; // Private
-
-
- _proto._getContent = function _getContent() {
- return this.element.getAttribute('data-content') || this.config.content;
- };
-
- _proto._cleanTipClass = function _cleanTipClass() {
- var $tip = $$$1(this.getTipElement());
- var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
-
- if (tabClass !== null && tabClass.length > 0) {
- $tip.removeClass(tabClass.join(''));
- }
- }; // Static
-
-
- Popover._jQueryInterface = function _jQueryInterface(config) {
- return this.each(function () {
- var data = $$$1(this).data(DATA_KEY);
-
- var _config = typeof config === 'object' ? config : null;
-
- if (!data && /destroy|hide/.test(config)) {
- return;
- }
-
- if (!data) {
- data = new Popover(this, _config);
- $$$1(this).data(DATA_KEY, data);
- }
-
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError("No method named \"" + config + "\"");
- }
-
- data[config]();
- }
- });
- };
-
- _createClass(Popover, null, [{
- key: "VERSION",
- // Getters
- get: function get() {
- return VERSION;
- }
- }, {
- key: "Default",
- get: function get() {
- return Default;
- }
- }, {
- key: "NAME",
- get: function get() {
- return NAME;
- }
- }, {
- key: "DATA_KEY",
- get: function get() {
- return DATA_KEY;
- }
- }, {
- key: "Event",
- get: function get() {
- return Event;
- }
- }, {
- key: "EVENT_KEY",
- get: function get() {
- return EVENT_KEY;
- }
- }, {
- key: "DefaultType",
- get: function get() {
- return DefaultType;
- }
- }]);
-
- return Popover;
- }(Tooltip);
- /**
- * ------------------------------------------------------------------------
- * jQuery
- * ------------------------------------------------------------------------
- */
-
-
- $$$1.fn[NAME] = Popover._jQueryInterface;
- $$$1.fn[NAME].Constructor = Popover;
-
- $$$1.fn[NAME].noConflict = function () {
- $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
- return Popover._jQueryInterface;
- };
-
- return Popover;
- }($);
-
- /**
- * --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): scrollspy.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * --------------------------------------------------------------------------
- */
-
- var ScrollSpy = function ($$$1) {
- /**
- * ------------------------------------------------------------------------
- * Constants
- * ------------------------------------------------------------------------
- */
- var NAME = 'scrollspy';
- var VERSION = '4.1.1';
- var DATA_KEY = 'bs.scrollspy';
- var EVENT_KEY = "." + DATA_KEY;
- var DATA_API_KEY = '.data-api';
- var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
- var Default = {
- offset: 10,
- method: 'auto',
- target: ''
- };
- var DefaultType = {
- offset: 'number',
- method: 'string',
- target: '(string|element)'
- };
- var Event = {
- ACTIVATE: "activate" + EVENT_KEY,
- SCROLL: "scroll" + EVENT_KEY,
- LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
- };
- var ClassName = {
- DROPDOWN_ITEM: 'dropdown-item',
- DROPDOWN_MENU: 'dropdown-menu',
- ACTIVE: 'active'
- };
- var Selector = {
- DATA_SPY: '[data-spy="scroll"]',
- ACTIVE: '.active',
- NAV_LIST_GROUP: '.nav, .list-group',
- NAV_LINKS: '.nav-link',
- NAV_ITEMS: '.nav-item',
- LIST_ITEMS: '.list-group-item',
- DROPDOWN: '.dropdown',
- DROPDOWN_ITEMS: '.dropdown-item',
- DROPDOWN_TOGGLE: '.dropdown-toggle'
- };
- var OffsetMethod = {
- OFFSET: 'offset',
- POSITION: 'position'
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
-
- };
-
- var ScrollSpy =
- /*#__PURE__*/
- function () {
- function ScrollSpy(element, config) {
- var _this = this;
-
- this._element = element;
- this._scrollElement = element.tagName === 'BODY' ? window : element;
- this._config = this._getConfig(config);
- this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
- this._offsets = [];
- this._targets = [];
- this._activeTarget = null;
- this._scrollHeight = 0;
- $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
- return _this._process(event);
- });
- this.refresh();
-
- this._process();
- } // Getters
-
-
- var _proto = ScrollSpy.prototype;
-
- // Public
- _proto.refresh = function refresh() {
- var _this2 = this;
-
- var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
- var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
- var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
- this._offsets = [];
- this._targets = [];
- this._scrollHeight = this._getScrollHeight();
- var targets = $$$1.makeArray($$$1(this._selector));
- targets.map(function (element) {
- var target;
- var targetSelector = Util.getSelectorFromElement(element);
-
- if (targetSelector) {
- target = $$$1(targetSelector)[0];
- }
-
- if (target) {
- var targetBCR = target.getBoundingClientRect();
-
- if (targetBCR.width || targetBCR.height) {
- // TODO (fat): remove sketch reliance on jQuery position/offset
- return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
- }
- }
-
- return null;
- }).filter(function (item) {
- return item;
- }).sort(function (a, b) {
- return a[0] - b[0];
- }).forEach(function (item) {
- _this2._offsets.push(item[0]);
-
- _this2._targets.push(item[1]);
- });
- };
-
- _proto.dispose = function dispose() {
- $$$1.removeData(this._element, DATA_KEY);
- $$$1(this._scrollElement).off(EVENT_KEY);
- this._element = null;
- this._scrollElement = null;
- this._config = null;
- this._selector = null;
- this._offsets = null;
- this._targets = null;
- this._activeTarget = null;
- this._scrollHeight = null;
- }; // Private
-
-
- _proto._getConfig = function _getConfig(config) {
- config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {});
-
- if (typeof config.target !== 'string') {
- var id = $$$1(config.target).attr('id');
-
- if (!id) {
- id = Util.getUID(NAME);
- $$$1(config.target).attr('id', id);
- }
-
- config.target = "#" + id;
- }
-
- Util.typeCheckConfig(NAME, config, DefaultType);
- return config;
- };
-
- _proto._getScrollTop = function _getScrollTop() {
- return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
- };
-
- _proto._getScrollHeight = function _getScrollHeight() {
- return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
- };
-
- _proto._getOffsetHeight = function _getOffsetHeight() {
- return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
- };
-
- _proto._process = function _process() {
- var scrollTop = this._getScrollTop() + this._config.offset;
-
- var scrollHeight = this._getScrollHeight();
-
- var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
-
- if (this._scrollHeight !== scrollHeight) {
- this.refresh();
- }
-
- if (scrollTop >= maxScroll) {
- var 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 (var i = this._offsets.length; i--;) {
- var 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]);
- }
- }
- };
-
- _proto._activate = function _activate(target) {
- this._activeTarget = target;
-
- this._clear();
-
- var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
-
-
- queries = queries.map(function (selector) {
- return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
- });
- var $link = $$$1(queries.join(','));
-
- if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
- $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
- $link.addClass(ClassName.ACTIVE);
- } else {
- // Set triggered link as active
- $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
- // With both and