mirror of
https://github.com/henrywhitaker3/Speedtest-Tracker.git
synced 2025-12-24 14:31:52 +01:00
Merge pull request #171 from henrywhitaker3/docker-speedtest-error
Updated to v1.7.7
This commit is contained in:
29
README.md
29
README.md
@@ -1,6 +1,6 @@
|
||||
# Speedtest Tracker
|
||||
|
||||
[](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [](https://github.com/henrywhitaker3/Speedtest-Tracker/commits)  [](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
|
||||
[](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [](https://github.com/henrywhitaker3/Speedtest-Tracker/commits)  [](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
|
||||
|
||||
This program runs a speedtest check every hour and graphs the results. The back-end is written in [Laravel](https://laravel.com/) and the front-end uses [React](https://reactjs.org/). It uses [Ookla's Speedtest cli](https://www.speedtest.net/apps/cli) to get the data and uses [Chart.js](https://www.chartjs.org/) to plot the results.
|
||||
|
||||
@@ -31,7 +31,32 @@ docker create \
|
||||
henrywhitaker3/speedtest-tracker
|
||||
```
|
||||
|
||||
## Parameters
|
||||
### Docker compose
|
||||
|
||||
```yml
|
||||
speedtest:
|
||||
container_name: speedtest
|
||||
image: henrywhitaker3/speedtest-tracker:dev
|
||||
ports:
|
||||
- 8765:80
|
||||
volumes:
|
||||
- /path/to/data:/config
|
||||
environment:
|
||||
- TZ=
|
||||
- PGID=
|
||||
- PUID=
|
||||
- SLACK_WEBHOOK=
|
||||
- BASE_PATH=/speedtest
|
||||
- OOKLA_EULA_GDPR=true
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-file: 10
|
||||
max-size: 200k
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
|
||||
|
||||
|
||||
@@ -35,6 +35,31 @@ docker create \
|
||||
henrywhitaker3/speedtest-tracker
|
||||
```
|
||||
|
||||
### Using Docker Compose
|
||||
|
||||
```yml
|
||||
speedtest:
|
||||
container_name: speedtest
|
||||
image: henrywhitaker3/speedtest-tracker:dev
|
||||
ports:
|
||||
- 8765:80
|
||||
volumes:
|
||||
- /path/to/data:/config
|
||||
environment:
|
||||
- TZ=
|
||||
- PGID=
|
||||
- PUID=
|
||||
- SLACK_WEBHOOK=
|
||||
- BASE_PATH=/speedtest
|
||||
- OOKLA_EULA_GDPR=true
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-file: 10
|
||||
max-size: 200k
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
#### Parameters
|
||||
|
||||
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
|
||||
|
||||
@@ -42,10 +42,21 @@ class SpeedtestLatestCommand extends Command
|
||||
$latest = SpeedtestHelper::latest();
|
||||
|
||||
if($latest) {
|
||||
$this->info('Last speedtest run at: ' . $latest->created_at);
|
||||
$this->info('Ping: ' . $latest->ping . ' ms');
|
||||
$this->info('Download: ' . $latest->download . ' Mbit/s');
|
||||
$this->info('Upload: ' . $latest->upload . ' Mbit/s');
|
||||
if($latest->scheduled) {
|
||||
$extra = '(scheduled)';
|
||||
} else {
|
||||
$extra = '(manual)';
|
||||
}
|
||||
|
||||
$this->info('Last speedtest run at: ' . $latest->created_at . ' ' . $extra);
|
||||
|
||||
if($latest->failed) {
|
||||
$this->error('Speedtest failed');
|
||||
} else {
|
||||
$this->info('Ping: ' . $latest->ping . ' ms');
|
||||
$this->info('Download: ' . $latest->download . ' Mbit/s');
|
||||
$this->info('Upload: ' . $latest->upload . ' Mbit/s');
|
||||
}
|
||||
} else {
|
||||
$this->info('No speedtests have been run yet.');
|
||||
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
{
|
||||
"1.7.7": [
|
||||
{
|
||||
"description": "Fixed speedtest:latest output",
|
||||
"link": ""
|
||||
},
|
||||
{
|
||||
"description": "Updated dependencies",
|
||||
"link": ""
|
||||
}
|
||||
],
|
||||
"1.7.6": [
|
||||
{
|
||||
"description": "Fixed issue with page failing to load",
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"dragonmantank/cron-expression": "^2",
|
||||
"fideloper/proxy": "^4.2",
|
||||
"fruitcake/laravel-cors": "^2.0",
|
||||
"guzzlehttp/guzzle": "^6.3",
|
||||
"guzzlehttp/guzzle": "^7.0",
|
||||
"laravel-notification-channels/telegram": "^0.4.0",
|
||||
"laravel/framework": "^7.0",
|
||||
"laravel/slack-notification-channel": "^2.0",
|
||||
|
||||
199
conf/site/composer.lock
generated
199
conf/site/composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "1f8e2d768bdcfbd5bf18db3f114479c8",
|
||||
"content-hash": "d1d54df76d42dd6744e4fb47afdf6045",
|
||||
"packages": [
|
||||
{
|
||||
"name": "asm89/stack-cors",
|
||||
@@ -834,37 +834,44 @@
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "6.5.5",
|
||||
"version": "7.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle.git",
|
||||
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
|
||||
"reference": "2d9d3c186a6637a43193e66b097c50e4451eaab2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
|
||||
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/2d9d3c186a6637a43193e66b097c50e4451eaab2",
|
||||
"reference": "2d9d3c186a6637a43193e66b097c50e4451eaab2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"guzzlehttp/promises": "^1.0",
|
||||
"guzzlehttp/psr7": "^1.6.1",
|
||||
"php": ">=5.5",
|
||||
"symfony/polyfill-intl-idn": "^1.17.0"
|
||||
"php": "^7.2.5",
|
||||
"psr/http-client": "^1.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/http-client-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ergebnis/composer-normalize": "^2.0",
|
||||
"ext-curl": "*",
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
|
||||
"php-http/client-integration-tests": "dev-phpunit8",
|
||||
"phpunit/phpunit": "^8.5.5",
|
||||
"psr/log": "^1.1"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-curl": "Required for CURL handler support",
|
||||
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
|
||||
"psr/log": "Required for using the Log middleware"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "6.5-dev"
|
||||
"dev-master": "7.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -884,6 +891,11 @@
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
},
|
||||
{
|
||||
"name": "Márk Sági-Kazár",
|
||||
"email": "mark.sagikazar@gmail.com",
|
||||
"homepage": "https://sagikazarmark.hu"
|
||||
}
|
||||
],
|
||||
"description": "Guzzle is a PHP HTTP client library",
|
||||
@@ -894,10 +906,12 @@
|
||||
"framework",
|
||||
"http",
|
||||
"http client",
|
||||
"psr-18",
|
||||
"psr-7",
|
||||
"rest",
|
||||
"web service"
|
||||
],
|
||||
"time": "2020-06-16T21:01:06+00:00"
|
||||
"time": "2020-06-27T10:33:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/promises",
|
||||
@@ -1084,16 +1098,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v7.18.0",
|
||||
"version": "v7.19.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "116b508bafd81de97b1c09744445d32a91076b60"
|
||||
"reference": "67d6d9688122dcf6c449b74ddc873fc9934e81e6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/116b508bafd81de97b1c09744445d32a91076b60",
|
||||
"reference": "116b508bafd81de97b1c09744445d32a91076b60",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/67d6d9688122dcf6c449b74ddc873fc9934e81e6",
|
||||
"reference": "67d6d9688122dcf6c449b74ddc873fc9934e81e6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1237,7 +1251,7 @@
|
||||
"framework",
|
||||
"laravel"
|
||||
],
|
||||
"time": "2020-06-30T13:52:36+00:00"
|
||||
"time": "2020-07-07T14:11:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/slack-notification-channel",
|
||||
@@ -1298,16 +1312,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/tinker",
|
||||
"version": "v2.4.0",
|
||||
"version": "v2.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/tinker.git",
|
||||
"reference": "cde90a7335a2130a4488beb68f4b2141869241db"
|
||||
"reference": "3c9ef136ca59366bc1b50b7f2500a946d5149c62"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/tinker/zipball/cde90a7335a2130a4488beb68f4b2141869241db",
|
||||
"reference": "cde90a7335a2130a4488beb68f4b2141869241db",
|
||||
"url": "https://api.github.com/repos/laravel/tinker/zipball/3c9ef136ca59366bc1b50b7f2500a946d5149c62",
|
||||
"reference": "3c9ef136ca59366bc1b50b7f2500a946d5149c62",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1358,7 +1372,7 @@
|
||||
"laravel",
|
||||
"psysh"
|
||||
],
|
||||
"time": "2020-04-07T15:01:31+00:00"
|
||||
"time": "2020-07-07T15:10:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/ui",
|
||||
@@ -1811,16 +1825,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
"version": "2.35.0",
|
||||
"version": "2.36.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/briannesbitt/Carbon.git",
|
||||
"reference": "4b9bd835261ef23d36397a46a76b496a458305e5"
|
||||
"reference": "ee7378a36cc62952100e718bcc58be4c7210e55f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4b9bd835261ef23d36397a46a76b496a458305e5",
|
||||
"reference": "4b9bd835261ef23d36397a46a76b496a458305e5",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ee7378a36cc62952100e718bcc58be4c7210e55f",
|
||||
"reference": "ee7378a36cc62952100e718bcc58be4c7210e55f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1832,9 +1846,10 @@
|
||||
"require-dev": {
|
||||
"doctrine/orm": "^2.7",
|
||||
"friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
|
||||
"kylekatarnls/multi-tester": "^1.1",
|
||||
"kylekatarnls/multi-tester": "^2.0",
|
||||
"phpmd/phpmd": "^2.8",
|
||||
"phpstan/phpstan": "^0.11",
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "^0.12.30",
|
||||
"phpunit/phpunit": "^7.5 || ^8.0",
|
||||
"squizlabs/php_codesniffer": "^3.4"
|
||||
},
|
||||
@@ -1851,6 +1866,11 @@
|
||||
"providers": [
|
||||
"Carbon\\Laravel\\ServiceProvider"
|
||||
]
|
||||
},
|
||||
"phpstan": {
|
||||
"includes": [
|
||||
"extension.neon"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1890,20 +1910,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-05-24T18:27:52+00:00"
|
||||
"time": "2020-07-04T12:29:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.4.0",
|
||||
"version": "v4.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120"
|
||||
"reference": "c346bbfafe2ff60680258b631afb730d186ed864"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120",
|
||||
"reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c346bbfafe2ff60680258b631afb730d186ed864",
|
||||
"reference": "c346bbfafe2ff60680258b631afb730d186ed864",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1942,7 +1962,7 @@
|
||||
"parser",
|
||||
"php"
|
||||
],
|
||||
"time": "2020-04-10T16:34:50+00:00"
|
||||
"time": "2020-07-02T17:12:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "opis/closure",
|
||||
@@ -2165,6 +2185,55 @@
|
||||
],
|
||||
"time": "2019-01-08T18:20:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-client",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-client.git",
|
||||
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
|
||||
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.0 || ^8.0",
|
||||
"psr/http-message": "^1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Client\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for HTTP clients",
|
||||
"homepage": "https://github.com/php-fig/http-client",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-client",
|
||||
"psr",
|
||||
"psr-18"
|
||||
],
|
||||
"time": "2020-06-29T06:28:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
"version": "1.0.1",
|
||||
@@ -2312,16 +2381,16 @@
|
||||
},
|
||||
{
|
||||
"name": "psy/psysh",
|
||||
"version": "v0.10.3",
|
||||
"version": "v0.10.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bobthecow/psysh.git",
|
||||
"reference": "2bde2fa03e05dff0aee834598b951d6fc7c6fe02"
|
||||
"reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/2bde2fa03e05dff0aee834598b951d6fc7c6fe02",
|
||||
"reference": "2bde2fa03e05dff0aee834598b951d6fc7c6fe02",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560",
|
||||
"reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2380,7 +2449,7 @@
|
||||
"interactive",
|
||||
"shell"
|
||||
],
|
||||
"time": "2020-04-07T06:44:48+00:00"
|
||||
"time": "2020-05-03T19:32:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
@@ -2794,16 +2863,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
"version": "v2.1.2",
|
||||
"version": "v2.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||
"reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337"
|
||||
"reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337",
|
||||
"reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5e20b83385a77593259c9f8beb2c43cd03b2ac14",
|
||||
"reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2813,6 +2882,10 @@
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.1-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -2850,7 +2923,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-05-27T08:34:37+00:00"
|
||||
"time": "2020-06-06T08:49:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/error-handler",
|
||||
@@ -3011,16 +3084,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
"version": "v2.1.2",
|
||||
"version": "v2.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
|
||||
"reference": "405952c4e90941a17e52ef7489a2bd94870bb290"
|
||||
"reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/405952c4e90941a17e52ef7489a2bd94870bb290",
|
||||
"reference": "405952c4e90941a17e52ef7489a2bd94870bb290",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f6f613d74cfc5a623fc36294d3451eb7fa5a042b",
|
||||
"reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3034,6 +3107,10 @@
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.1-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -3079,7 +3156,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-05-20T17:43:50+00:00"
|
||||
"time": "2020-07-06T13:23:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
@@ -4397,16 +4474,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v2.1.2",
|
||||
"version": "v2.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/service-contracts.git",
|
||||
"reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b"
|
||||
"reference": "58c7475e5457c5492c26cc740cc0ad7464be9442"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/66a8f0957a3ca54e4f724e49028ab19d75a8918b",
|
||||
"reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442",
|
||||
"reference": "58c7475e5457c5492c26cc740cc0ad7464be9442",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4420,6 +4497,10 @@
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.1-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -4465,7 +4546,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-05-20T17:43:50+00:00"
|
||||
"time": "2020-07-06T13:23:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
@@ -4646,16 +4727,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation-contracts",
|
||||
"version": "v2.1.2",
|
||||
"version": "v2.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation-contracts.git",
|
||||
"reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e"
|
||||
"reference": "616a9773c853097607cf9dd6577d5b143ffdcd63"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e5ca07c8f817f865f618aa072c2fe8e0e637340e",
|
||||
"reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e",
|
||||
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/616a9773c853097607cf9dd6577d5b143ffdcd63",
|
||||
"reference": "616a9773c853097607cf9dd6577d5b143ffdcd63",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4668,6 +4749,10 @@
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.1-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -4713,7 +4798,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-05-20T17:43:50+00:00"
|
||||
"time": "2020-07-06T13:23:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
|
||||
@@ -7,7 +7,7 @@ return [
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'version' => '1.7.6',
|
||||
'version' => '1.7.7',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
File diff suppressed because one or more lines are too long
2
conf/site/node_modules/.cache/terser-webpack-plugin/index-v5/f7/c2/f5266f7d2a8736c12e54b3973c77749f268cc25986bf51d7950d3563b53c
generated
vendored
Normal file
2
conf/site/node_modules/.cache/terser-webpack-plugin/index-v5/f7/c2/f5266f7d2a8736c12e54b3973c77749f268cc25986bf51d7950d3563b53c
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
03af4f7dddb7bcac27736f5495ea888c11ab3500 {"key":"{\"terser\":\"4.6.10\",\"terser-webpack-plugin\":\"2.3.5\",\"terser-webpack-plugin-options\":{\"test\":new RegExp(\"\\\\.m?js(\\\\?.*)?$\", \"i\"),\"chunkFilter\":() => true,\"warningsFilter\":() => true,\"extractComments\":true,\"sourceMap\":true,\"cache\":true,\"cacheKeys\":defaultCacheKeys => defaultCacheKeys,\"parallel\":true,\"include\":undefined,\"exclude\":undefined,\"minify\":undefined,\"terserOptions\":{\"compress\":{\"warnings\":false},\"output\":{\"comments\":false}}},\"nodeVersion\":\"v10.19.0\",\"filename\":\"\\u002Fjs\\u002Fapp.js\",\"contentHash\":\"539d71219bde9bdd7943\"}","integrity":"sha512-hauFAo1KQMUS7okHVZtWVnNZ2oka0/bodYKwpbFN/x4IBhbtNovmW//WXvvp+DEQ/jLnDfwJejzZFvaTzAdX1g==","time":1594206427281,"size":2546358}
|
||||
5
conf/site/node_modules/@popperjs/core/README.md
generated
vendored
5
conf/site/node_modules/@popperjs/core/README.md
generated
vendored
@@ -12,7 +12,10 @@
|
||||
<img src="https://img.shields.io/npm/v/@popperjs/core?style=for-the-badge" alt="npm version" />
|
||||
</a>
|
||||
<a href="https://www.npmjs.com/package/@popperjs/core">
|
||||
<img src="https://img.shields.io/npm/dm/popper.js?style=for-the-badge" alt="npm downloads per month" />
|
||||
<img src="https://img.shields.io/endpoint?style=for-the-badge&url=https://runkit.io/fezvrasta/combined-npm-downloads/1.0.0?packages=popper.js,@popperjs/core" alt="npm downloads per month (popper.js + @popperjs/core)" />
|
||||
</a>
|
||||
<a href="https://rollingversions.com/popperjs/popper-core">
|
||||
<img src="https://img.shields.io/badge/Rolling%20Versions-Enabled-brightgreen?style=for-the-badge" alt="Rolling Versions" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
702
conf/site/node_modules/@popperjs/core/dist/cjs/popper-base.js
generated
vendored
702
conf/site/node_modules/@popperjs/core/dist/cjs/popper-base.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @popperjs/core v2.3.3 - MIT License
|
||||
* @popperjs/core v2.4.4 - MIT License
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
@@ -93,6 +93,20 @@ function getWindowScrollBarX(element) {
|
||||
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -100,8 +114,9 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -111,8 +126,9 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -120,7 +136,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
@@ -160,31 +176,26 @@ function getParentNode(element) {
|
||||
);
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function getScrollParent(node) {
|
||||
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
|
||||
// $FlowFixMe: assume body is always available
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
}
|
||||
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -193,7 +204,7 @@ function listScrollParents(element, list) {
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
@@ -209,14 +220,45 @@ function getTrueOffsetParent(element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -224,7 +266,7 @@ function getOffsetParent(element) {
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
|
||||
var top = 'top';
|
||||
@@ -416,9 +458,9 @@ function getBasePlacement(placement) {
|
||||
function mergeByName(modifiers) {
|
||||
var merged = modifiers.reduce(function (merged, current) {
|
||||
var existing = merged[current.name];
|
||||
merged[current.name] = existing ? Object.assign({}, existing, {}, current, {
|
||||
options: Object.assign({}, existing.options, {}, current.options),
|
||||
data: Object.assign({}, existing.data, {}, current.data)
|
||||
merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
|
||||
options: Object.assign(Object.assign({}, existing.options), current.options),
|
||||
data: Object.assign(Object.assign({}, existing.data), current.data)
|
||||
}) : current;
|
||||
return merged;
|
||||
}, {}); // IE11 does not support Object.values
|
||||
@@ -428,6 +470,304 @@ function mergeByName(modifiers) {
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign(Object.assign({}, rect), {}, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
|
||||
var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
|
||||
var DEFAULT_OPTIONS = {
|
||||
@@ -464,7 +804,7 @@ function popperGenerator(generatorOptions) {
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -479,7 +819,7 @@ function popperGenerator(generatorOptions) {
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -669,307 +1009,7 @@ function popperGenerator(generatorOptions) {
|
||||
return instance;
|
||||
};
|
||||
}
|
||||
var createPopper = /*#__PURE__*/popperGenerator();
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
}
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
|
||||
function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign({}, rect, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign({}, getFreshSideObject(), {}, paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
exports.createPopper = createPopper;
|
||||
exports.detectOverflow = detectOverflow;
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/cjs/popper-base.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/cjs/popper-base.js.map
generated
vendored
File diff suppressed because one or more lines are too long
710
conf/site/node_modules/@popperjs/core/dist/cjs/popper-lite.js
generated
vendored
710
conf/site/node_modules/@popperjs/core/dist/cjs/popper-lite.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @popperjs/core v2.3.3 - MIT License
|
||||
* @popperjs/core v2.4.4 - MIT License
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
@@ -93,6 +93,20 @@ function getWindowScrollBarX(element) {
|
||||
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -100,8 +114,9 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -111,8 +126,9 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -120,7 +136,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
@@ -160,31 +176,26 @@ function getParentNode(element) {
|
||||
);
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function getScrollParent(node) {
|
||||
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
|
||||
// $FlowFixMe: assume body is always available
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
}
|
||||
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -193,7 +204,7 @@ function listScrollParents(element, list) {
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
@@ -209,14 +220,45 @@ function getTrueOffsetParent(element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -224,7 +266,7 @@ function getOffsetParent(element) {
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
|
||||
var top = 'top';
|
||||
@@ -416,9 +458,9 @@ function getBasePlacement(placement) {
|
||||
function mergeByName(modifiers) {
|
||||
var merged = modifiers.reduce(function (merged, current) {
|
||||
var existing = merged[current.name];
|
||||
merged[current.name] = existing ? Object.assign({}, existing, {}, current, {
|
||||
options: Object.assign({}, existing.options, {}, current.options),
|
||||
data: Object.assign({}, existing.data, {}, current.data)
|
||||
merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
|
||||
options: Object.assign(Object.assign({}, existing.options), current.options),
|
||||
data: Object.assign(Object.assign({}, existing.data), current.data)
|
||||
}) : current;
|
||||
return merged;
|
||||
}, {}); // IE11 does not support Object.values
|
||||
@@ -428,6 +470,304 @@ function mergeByName(modifiers) {
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign(Object.assign({}, rect), {}, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
|
||||
var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
|
||||
var DEFAULT_OPTIONS = {
|
||||
@@ -464,7 +804,7 @@ function popperGenerator(generatorOptions) {
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -479,7 +819,7 @@ function popperGenerator(generatorOptions) {
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -718,79 +1058,6 @@ var eventListeners = {
|
||||
data: {}
|
||||
};
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function popperOffsets(_ref) {
|
||||
var state = _ref.state,
|
||||
name = _ref.name;
|
||||
@@ -886,10 +1153,10 @@ function mapToStyles(_ref2) {
|
||||
if (gpuAcceleration) {
|
||||
var _Object$assign;
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
}
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
}
|
||||
|
||||
function computeStyles(_ref3) {
|
||||
@@ -918,7 +1185,7 @@ function computeStyles(_ref3) {
|
||||
};
|
||||
|
||||
if (state.modifiersData.popperOffsets != null) {
|
||||
state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.popperOffsets,
|
||||
position: state.options.strategy,
|
||||
adaptive: adaptive
|
||||
@@ -926,14 +1193,14 @@ function computeStyles(_ref3) {
|
||||
}
|
||||
|
||||
if (state.modifiersData.arrow != null) {
|
||||
state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.arrow,
|
||||
position: 'absolute',
|
||||
adaptive: false
|
||||
})));
|
||||
}
|
||||
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-placement': state.placement
|
||||
});
|
||||
} // eslint-disable-next-line import/no-unused-modules
|
||||
@@ -1032,233 +1299,6 @@ var applyStyles$1 = {
|
||||
requires: ['computeStyles']
|
||||
};
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
}
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
|
||||
function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign({}, rect, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign({}, getFreshSideObject(), {}, paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
|
||||
var createPopper = /*#__PURE__*/popperGenerator({
|
||||
defaultModifiers: defaultModifiers
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/cjs/popper-lite.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/cjs/popper-lite.js.map
generated
vendored
File diff suppressed because one or more lines are too long
761
conf/site/node_modules/@popperjs/core/dist/cjs/popper.js
generated
vendored
761
conf/site/node_modules/@popperjs/core/dist/cjs/popper.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @popperjs/core v2.3.3 - MIT License
|
||||
* @popperjs/core v2.4.4 - MIT License
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
@@ -93,6 +93,20 @@ function getWindowScrollBarX(element) {
|
||||
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -100,8 +114,9 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -111,8 +126,9 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -120,7 +136,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
@@ -160,31 +176,26 @@ function getParentNode(element) {
|
||||
);
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function getScrollParent(node) {
|
||||
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
|
||||
// $FlowFixMe: assume body is always available
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
}
|
||||
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -193,7 +204,7 @@ function listScrollParents(element, list) {
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
@@ -209,14 +220,45 @@ function getTrueOffsetParent(element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -224,7 +266,7 @@ function getOffsetParent(element) {
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
|
||||
var top = 'top';
|
||||
@@ -422,9 +464,9 @@ function getBasePlacement(placement) {
|
||||
function mergeByName(modifiers) {
|
||||
var merged = modifiers.reduce(function (merged, current) {
|
||||
var existing = merged[current.name];
|
||||
merged[current.name] = existing ? Object.assign({}, existing, {}, current, {
|
||||
options: Object.assign({}, existing.options, {}, current.options),
|
||||
data: Object.assign({}, existing.data, {}, current.data)
|
||||
merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
|
||||
options: Object.assign(Object.assign({}, existing.options), current.options),
|
||||
data: Object.assign(Object.assign({}, existing.data), current.data)
|
||||
}) : current;
|
||||
return merged;
|
||||
}, {}); // IE11 does not support Object.values
|
||||
@@ -434,6 +476,304 @@ function mergeByName(modifiers) {
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign(Object.assign({}, rect), {}, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
|
||||
var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
|
||||
var DEFAULT_OPTIONS = {
|
||||
@@ -470,7 +810,7 @@ function popperGenerator(generatorOptions) {
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -485,7 +825,7 @@ function popperGenerator(generatorOptions) {
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -724,79 +1064,6 @@ var eventListeners = {
|
||||
data: {}
|
||||
};
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function popperOffsets(_ref) {
|
||||
var state = _ref.state,
|
||||
name = _ref.name;
|
||||
@@ -892,10 +1159,10 @@ function mapToStyles(_ref2) {
|
||||
if (gpuAcceleration) {
|
||||
var _Object$assign;
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
}
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
}
|
||||
|
||||
function computeStyles(_ref3) {
|
||||
@@ -924,7 +1191,7 @@ function computeStyles(_ref3) {
|
||||
};
|
||||
|
||||
if (state.modifiersData.popperOffsets != null) {
|
||||
state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.popperOffsets,
|
||||
position: state.options.strategy,
|
||||
adaptive: adaptive
|
||||
@@ -932,14 +1199,14 @@ function computeStyles(_ref3) {
|
||||
}
|
||||
|
||||
if (state.modifiersData.arrow != null) {
|
||||
state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.arrow,
|
||||
position: 'absolute',
|
||||
adaptive: false
|
||||
})));
|
||||
}
|
||||
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-placement': state.placement
|
||||
});
|
||||
} // eslint-disable-next-line import/no-unused-modules
|
||||
@@ -1042,7 +1309,7 @@ function distanceAndSkiddingToXY(placement, rects, offset) {
|
||||
var basePlacement = getBasePlacement(placement);
|
||||
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
|
||||
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {
|
||||
placement: placement
|
||||
})) : offset,
|
||||
skidding = _ref[0],
|
||||
@@ -1112,233 +1379,6 @@ function getOppositeVariationPlacement(placement) {
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
}
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
|
||||
function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign({}, rect, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign({}, getFreshSideObject(), {}, paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
/*:: type OverflowsMap = { [ComputedPlacement]: number }; */
|
||||
|
||||
/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */
|
||||
@@ -1356,13 +1396,24 @@ function computeAutoPlacement(state, options) {
|
||||
_options$allowedAutoP = _options.allowedAutoPlacements,
|
||||
allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
|
||||
var variation = getVariation(placement);
|
||||
var placements$1 = (variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
|
||||
var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
|
||||
return getVariation(placement) === variation;
|
||||
}) : basePlacements).filter(function (placement) {
|
||||
return allowedAutoPlacements.indexOf(placement) >= 0;
|
||||
}); // $FlowFixMe: Flow seems to have problems with two array unions...
|
||||
}) : basePlacements; // $FlowFixMe
|
||||
|
||||
var overflows = placements$1.reduce(function (acc, placement) {
|
||||
var allowedPlacements = placements$1.filter(function (placement) {
|
||||
return allowedAutoPlacements.indexOf(placement) >= 0;
|
||||
});
|
||||
|
||||
if (allowedPlacements.length === 0) {
|
||||
allowedPlacements = placements$1;
|
||||
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' '));
|
||||
}
|
||||
} // $FlowFixMe: Flow seems to have problems with two array unions...
|
||||
|
||||
|
||||
var overflows = allowedPlacements.reduce(function (acc, placement) {
|
||||
acc[placement] = detectOverflow(state, {
|
||||
placement: placement,
|
||||
boundary: boundary,
|
||||
@@ -1394,7 +1445,11 @@ function flip(_ref) {
|
||||
return;
|
||||
}
|
||||
|
||||
var specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
var _options$mainAxis = options.mainAxis,
|
||||
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
|
||||
_options$altAxis = options.altAxis,
|
||||
checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
|
||||
specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
padding = options.padding,
|
||||
boundary = options.boundary,
|
||||
rootBoundary = options.rootBoundary,
|
||||
@@ -1444,7 +1499,15 @@ function flip(_ref) {
|
||||
}
|
||||
|
||||
var altVariationSide = getOppositePlacement(mainVariationSide);
|
||||
var checks = [overflow[_basePlacement] <= 0, overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0];
|
||||
var checks = [];
|
||||
|
||||
if (checkMainAxis) {
|
||||
checks.push(overflow[_basePlacement] <= 0);
|
||||
}
|
||||
|
||||
if (checkAltAxis) {
|
||||
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
|
||||
}
|
||||
|
||||
if (checks.every(function (check) {
|
||||
return check;
|
||||
@@ -1542,7 +1605,7 @@ function preventOverflow(_ref) {
|
||||
var popperOffsets = state.modifiersData.popperOffsets;
|
||||
var referenceRect = state.rects.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {
|
||||
placement: state.placement
|
||||
})) : tetherOffset;
|
||||
var data = {
|
||||
@@ -1643,7 +1706,7 @@ function arrow(_ref) {
|
||||
var maxProp = axis === 'y' ? bottom : right;
|
||||
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
|
||||
var startDiff = popperOffsets[axis] - state.rects.reference[axis];
|
||||
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
|
||||
var arrowOffsetParent = getOffsetParent(arrowElement);
|
||||
var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
|
||||
var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
|
||||
// outside of the popper bounds
|
||||
@@ -1679,6 +1742,12 @@ function effect$2(_ref2) {
|
||||
}
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
if (!isHTMLElement(arrowElement)) {
|
||||
console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));
|
||||
}
|
||||
}
|
||||
|
||||
if (!contains(state.elements.popper, arrowElement)) {
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' '));
|
||||
@@ -1748,7 +1817,7 @@ function hide(_ref) {
|
||||
isReferenceHidden: isReferenceHidden,
|
||||
hasPopperEscaped: hasPopperEscaped
|
||||
};
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-reference-hidden': isReferenceHidden,
|
||||
'data-popper-escaped': hasPopperEscaped
|
||||
});
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/cjs/popper.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/cjs/popper.js.map
generated
vendored
File diff suppressed because one or more lines are too long
16
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getBorders.js
generated
vendored
16
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getBorders.js
generated
vendored
@@ -1,16 +0,0 @@
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
export default function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
31
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getClippingRect.js
generated
vendored
31
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getClippingRect.js
generated
vendored
@@ -7,19 +7,33 @@ import getDocumentElement from "./getDocumentElement.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import { isElement, isHTMLElement } from "./instanceOf.js";
|
||||
import getBoundingClientRect from "./getBoundingClientRect.js";
|
||||
import getDecorations from "./getDecorations.js";
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import contains from "./contains.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import rectToClientRect from "../utils/rectToClientRect.js";
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
@@ -29,7 +43,7 @@ function getClippingParents(element) {
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
@@ -41,11 +55,10 @@ export default function getClippingRect(element, boundary, rootBoundary) {
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
|
||||
13
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getCompositeRect.js
generated
vendored
13
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getCompositeRect.js
generated
vendored
@@ -3,7 +3,8 @@ import getNodeScroll from "./getNodeScroll.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js";
|
||||
import getDocumentElement from "./getDocumentElement.js"; // Returns the composite rect of an element relative to its offsetParent.
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
import isScrollParent from "./isScrollParent.js"; // Returns the composite rect of an element relative to its offsetParent.
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
export default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -11,8 +12,9 @@ export default function getCompositeRect(elementOrVirtualElement, offsetParent,
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -22,8 +24,9 @@ export default function getCompositeRect(elementOrVirtualElement, offsetParent,
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -31,7 +34,7 @@ export default function getCompositeRect(elementOrVirtualElement, offsetParent,
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
|
||||
33
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getDecorations.js
generated
vendored
33
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getDecorations.js
generated
vendored
@@ -1,33 +0,0 @@
|
||||
import getBorders from "./getBorders.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import getWindow from "./getWindow.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js"; // Borders + scrollbars
|
||||
|
||||
export default function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
32
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getDocumentRect.js
generated
vendored
32
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getDocumentRect.js
generated
vendored
@@ -1,14 +1,26 @@
|
||||
import getCompositeRect from "./getCompositeRect.js";
|
||||
import getWindow from "./getWindow.js";
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
import getWindowScroll from "./getWindowScroll.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js";
|
||||
import getWindowScroll from "./getWindowScroll.js"; // Gets the entire size of the scrollable document area, even extending outside
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
export default function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
43
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getOffsetParent.js
generated
vendored
43
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getOffsetParent.js
generated
vendored
@@ -3,6 +3,8 @@ import getNodeName from "./getNodeName.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
import isTableElement from "./isTableElement.js";
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
|
||||
function getTrueOffsetParent(element) {
|
||||
if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
|
||||
@@ -10,14 +12,45 @@ function getTrueOffsetParent(element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
export default function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -25,5 +58,5 @@ export default function getOffsetParent(element) {
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
14
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getScrollParent.js
generated
vendored
14
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getScrollParent.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import isScrollParent from "./isScrollParent.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
export default function getScrollParent(node) {
|
||||
@@ -8,16 +8,8 @@ export default function getScrollParent(node) {
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
|
||||
35
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getViewportRect.js
generated
vendored
35
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/getViewportRect.js
generated
vendored
@@ -1,21 +1,40 @@
|
||||
import getWindow from "./getWindow.js";
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js";
|
||||
export default function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
10
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/isScrollParent.js
generated
vendored
Normal file
10
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/isScrollParent.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
export default function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
10
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/listScrollParents.js
generated
vendored
10
conf/site/node_modules/@popperjs/core/dist/esm/dom-utils/listScrollParents.js
generated
vendored
@@ -2,6 +2,14 @@ import getScrollParent from "./getScrollParent.js";
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import getWindow from "./getWindow.js";
|
||||
import isScrollParent from "./isScrollParent.js";
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
export default function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -10,7 +18,7 @@ export default function listScrollParents(element, list) {
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
|
||||
9
conf/site/node_modules/@popperjs/core/dist/esm/index.js
generated
vendored
9
conf/site/node_modules/@popperjs/core/dist/esm/index.js
generated
vendored
@@ -9,6 +9,7 @@ import validateModifiers from "./utils/validateModifiers.js";
|
||||
import uniqueBy from "./utils/uniqueBy.js";
|
||||
import getBasePlacement from "./utils/getBasePlacement.js";
|
||||
import mergeByName from "./utils/mergeByName.js";
|
||||
import detectOverflow from "./utils/detectOverflow.js";
|
||||
import { isElement } from "./dom-utils/instanceOf.js";
|
||||
import { auto } from "./enums.js";
|
||||
export * from "./enums.js";
|
||||
@@ -48,7 +49,7 @@ export function popperGenerator(generatorOptions) {
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -63,7 +64,7 @@ export function popperGenerator(generatorOptions) {
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -253,4 +254,6 @@ export function popperGenerator(generatorOptions) {
|
||||
return instance;
|
||||
};
|
||||
}
|
||||
export var createPopper = /*#__PURE__*/popperGenerator();
|
||||
export var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
export { detectOverflow };
|
||||
9
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/arrow.js
generated
vendored
9
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/arrow.js
generated
vendored
@@ -7,6 +7,7 @@ import within from "../utils/within.js";
|
||||
import mergePaddingObject from "../utils/mergePaddingObject.js";
|
||||
import expandToHashMap from "../utils/expandToHashMap.js";
|
||||
import { left, right, basePlacements, top, bottom } from "../enums.js";
|
||||
import { isHTMLElement } from "../dom-utils/instanceOf.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
function arrow(_ref) {
|
||||
var _state$modifiersData$;
|
||||
@@ -30,7 +31,7 @@ function arrow(_ref) {
|
||||
var maxProp = axis === 'y' ? bottom : right;
|
||||
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
|
||||
var startDiff = popperOffsets[axis] - state.rects.reference[axis];
|
||||
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
|
||||
var arrowOffsetParent = getOffsetParent(arrowElement);
|
||||
var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
|
||||
var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
|
||||
// outside of the popper bounds
|
||||
@@ -66,6 +67,12 @@ function effect(_ref2) {
|
||||
}
|
||||
}
|
||||
|
||||
if (false) {
|
||||
if (!isHTMLElement(arrowElement)) {
|
||||
console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));
|
||||
}
|
||||
}
|
||||
|
||||
if (!contains(state.elements.popper, arrowElement)) {
|
||||
if (false) {
|
||||
console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' '));
|
||||
|
||||
13
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/computeStyles.js
generated
vendored
13
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/computeStyles.js
generated
vendored
@@ -3,7 +3,8 @@ import getOffsetParent from "../dom-utils/getOffsetParent.js";
|
||||
import getWindow from "../dom-utils/getWindow.js";
|
||||
import getDocumentElement from "../dom-utils/getDocumentElement.js";
|
||||
import getComputedStyle from "../dom-utils/getComputedStyle.js";
|
||||
import getBasePlacement from "../utils/getBasePlacement.js";
|
||||
import getBasePlacement from "../utils/getBasePlacement.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
var unsetSides = {
|
||||
top: 'auto',
|
||||
right: 'auto',
|
||||
@@ -75,10 +76,10 @@ export function mapToStyles(_ref2) {
|
||||
if (gpuAcceleration) {
|
||||
var _Object$assign;
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
}
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
}
|
||||
|
||||
function computeStyles(_ref3) {
|
||||
@@ -107,7 +108,7 @@ function computeStyles(_ref3) {
|
||||
};
|
||||
|
||||
if (state.modifiersData.popperOffsets != null) {
|
||||
state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.popperOffsets,
|
||||
position: state.options.strategy,
|
||||
adaptive: adaptive
|
||||
@@ -115,14 +116,14 @@ function computeStyles(_ref3) {
|
||||
}
|
||||
|
||||
if (state.modifiersData.arrow != null) {
|
||||
state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.arrow,
|
||||
position: 'absolute',
|
||||
adaptive: false
|
||||
})));
|
||||
}
|
||||
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-placement': state.placement
|
||||
});
|
||||
} // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
3
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/eventListeners.js
generated
vendored
3
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/eventListeners.js
generated
vendored
@@ -1,4 +1,5 @@
|
||||
import getWindow from "../dom-utils/getWindow.js";
|
||||
import getWindow from "../dom-utils/getWindow.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
var passive = {
|
||||
passive: true
|
||||
};
|
||||
|
||||
18
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/flip.js
generated
vendored
18
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/flip.js
generated
vendored
@@ -4,7 +4,7 @@ import getOppositeVariationPlacement from "../utils/getOppositeVariationPlacemen
|
||||
import detectOverflow from "../utils/detectOverflow.js";
|
||||
import computeAutoPlacement from "../utils/computeAutoPlacement.js";
|
||||
import { bottom, top, start, right, left, auto } from "../enums.js";
|
||||
import getVariation from "../utils/getVariation.js";
|
||||
import getVariation from "../utils/getVariation.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
function getExpandedFallbackPlacements(placement) {
|
||||
if (getBasePlacement(placement) === auto) {
|
||||
@@ -24,7 +24,11 @@ function flip(_ref) {
|
||||
return;
|
||||
}
|
||||
|
||||
var specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
var _options$mainAxis = options.mainAxis,
|
||||
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
|
||||
_options$altAxis = options.altAxis,
|
||||
checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
|
||||
specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
padding = options.padding,
|
||||
boundary = options.boundary,
|
||||
rootBoundary = options.rootBoundary,
|
||||
@@ -74,7 +78,15 @@ function flip(_ref) {
|
||||
}
|
||||
|
||||
var altVariationSide = getOppositePlacement(mainVariationSide);
|
||||
var checks = [overflow[_basePlacement] <= 0, overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0];
|
||||
var checks = [];
|
||||
|
||||
if (checkMainAxis) {
|
||||
checks.push(overflow[_basePlacement] <= 0);
|
||||
}
|
||||
|
||||
if (checkAltAxis) {
|
||||
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
|
||||
}
|
||||
|
||||
if (checks.every(function (check) {
|
||||
return check;
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/hide.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/hide.js
generated
vendored
@@ -45,7 +45,7 @@ function hide(_ref) {
|
||||
isReferenceHidden: isReferenceHidden,
|
||||
hasPopperEscaped: hasPopperEscaped
|
||||
};
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-reference-hidden': isReferenceHidden,
|
||||
'data-popper-escaped': hasPopperEscaped
|
||||
});
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/offset.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/offset.js
generated
vendored
@@ -4,7 +4,7 @@ export function distanceAndSkiddingToXY(placement, rects, offset) {
|
||||
var basePlacement = getBasePlacement(placement);
|
||||
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
|
||||
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {
|
||||
placement: placement
|
||||
})) : offset,
|
||||
skidding = _ref[0],
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/preventOverflow.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/esm/modifiers/preventOverflow.js
generated
vendored
@@ -39,7 +39,7 @@ function preventOverflow(_ref) {
|
||||
var popperOffsets = state.modifiersData.popperOffsets;
|
||||
var referenceRect = state.rects.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {
|
||||
placement: state.placement
|
||||
})) : tetherOffset;
|
||||
var data = {
|
||||
|
||||
3
conf/site/node_modules/@popperjs/core/dist/esm/popper-base.js
generated
vendored
3
conf/site/node_modules/@popperjs/core/dist/esm/popper-base.js
generated
vendored
@@ -1,4 +1,3 @@
|
||||
import { createPopper, popperGenerator } from "./index.js";
|
||||
import detectOverflow from "./utils/detectOverflow.js";
|
||||
import { createPopper, popperGenerator, detectOverflow } from "./index.js";
|
||||
// eslint-disable-next-line import/no-unused-modules
|
||||
export { createPopper, popperGenerator, detectOverflow };
|
||||
3
conf/site/node_modules/@popperjs/core/dist/esm/popper-lite.js
generated
vendored
3
conf/site/node_modules/@popperjs/core/dist/esm/popper-lite.js
generated
vendored
@@ -1,9 +1,8 @@
|
||||
import { popperGenerator } from "./index.js";
|
||||
import { popperGenerator, detectOverflow } from "./index.js";
|
||||
import eventListeners from "./modifiers/eventListeners.js";
|
||||
import popperOffsets from "./modifiers/popperOffsets.js";
|
||||
import computeStyles from "./modifiers/computeStyles.js";
|
||||
import applyStyles from "./modifiers/applyStyles.js";
|
||||
import detectOverflow from "./utils/detectOverflow.js";
|
||||
var defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];
|
||||
var createPopper = /*#__PURE__*/popperGenerator({
|
||||
defaultModifiers: defaultModifiers
|
||||
|
||||
3
conf/site/node_modules/@popperjs/core/dist/esm/popper.js
generated
vendored
3
conf/site/node_modules/@popperjs/core/dist/esm/popper.js
generated
vendored
@@ -1,4 +1,4 @@
|
||||
import { popperGenerator } from "./index.js";
|
||||
import { popperGenerator, detectOverflow } from "./index.js";
|
||||
import eventListeners from "./modifiers/eventListeners.js";
|
||||
import popperOffsets from "./modifiers/popperOffsets.js";
|
||||
import computeStyles from "./modifiers/computeStyles.js";
|
||||
@@ -8,7 +8,6 @@ import flip from "./modifiers/flip.js";
|
||||
import preventOverflow from "./modifiers/preventOverflow.js";
|
||||
import arrow from "./modifiers/arrow.js";
|
||||
import hide from "./modifiers/hide.js";
|
||||
import detectOverflow from "./utils/detectOverflow.js";
|
||||
var defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];
|
||||
var createPopper = /*#__PURE__*/popperGenerator({
|
||||
defaultModifiers: defaultModifiers
|
||||
|
||||
21
conf/site/node_modules/@popperjs/core/dist/esm/utils/computeAutoPlacement.js
generated
vendored
21
conf/site/node_modules/@popperjs/core/dist/esm/utils/computeAutoPlacement.js
generated
vendored
@@ -20,13 +20,24 @@ export default function computeAutoPlacement(state, options) {
|
||||
_options$allowedAutoP = _options.allowedAutoPlacements,
|
||||
allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;
|
||||
var variation = getVariation(placement);
|
||||
var placements = (variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
|
||||
var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
|
||||
return getVariation(placement) === variation;
|
||||
}) : basePlacements).filter(function (placement) {
|
||||
return allowedAutoPlacements.indexOf(placement) >= 0;
|
||||
}); // $FlowFixMe: Flow seems to have problems with two array unions...
|
||||
}) : basePlacements; // $FlowFixMe
|
||||
|
||||
var overflows = placements.reduce(function (acc, placement) {
|
||||
var allowedPlacements = placements.filter(function (placement) {
|
||||
return allowedAutoPlacements.indexOf(placement) >= 0;
|
||||
});
|
||||
|
||||
if (allowedPlacements.length === 0) {
|
||||
allowedPlacements = placements;
|
||||
|
||||
if (false) {
|
||||
console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' '));
|
||||
}
|
||||
} // $FlowFixMe: Flow seems to have problems with two array unions...
|
||||
|
||||
|
||||
var overflows = allowedPlacements.reduce(function (acc, placement) {
|
||||
acc[placement] = detectOverflow(state, {
|
||||
placement: placement,
|
||||
boundary: boundary,
|
||||
|
||||
5
conf/site/node_modules/@popperjs/core/dist/esm/utils/detectOverflow.js
generated
vendored
5
conf/site/node_modules/@popperjs/core/dist/esm/utils/detectOverflow.js
generated
vendored
@@ -6,7 +6,8 @@ import rectToClientRect from "./rectToClientRect.js";
|
||||
import { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from "../enums.js";
|
||||
import { isElement } from "../dom-utils/instanceOf.js";
|
||||
import mergePaddingObject from "./mergePaddingObject.js";
|
||||
import expandToHashMap from "./expandToHashMap.js";
|
||||
import expandToHashMap from "./expandToHashMap.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
export default function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
@@ -38,7 +39,7 @@ export default function detectOverflow(state, options) {
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));
|
||||
var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
|
||||
6
conf/site/node_modules/@popperjs/core/dist/esm/utils/mergeByName.js
generated
vendored
6
conf/site/node_modules/@popperjs/core/dist/esm/utils/mergeByName.js
generated
vendored
@@ -1,9 +1,9 @@
|
||||
export default function mergeByName(modifiers) {
|
||||
var merged = modifiers.reduce(function (merged, current) {
|
||||
var existing = merged[current.name];
|
||||
merged[current.name] = existing ? Object.assign({}, existing, {}, current, {
|
||||
options: Object.assign({}, existing.options, {}, current.options),
|
||||
data: Object.assign({}, existing.data, {}, current.data)
|
||||
merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
|
||||
options: Object.assign(Object.assign({}, existing.options), current.options),
|
||||
data: Object.assign(Object.assign({}, existing.data), current.data)
|
||||
}) : current;
|
||||
return merged;
|
||||
}, {}); // IE11 does not support Object.values
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/esm/utils/mergePaddingObject.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/esm/utils/mergePaddingObject.js
generated
vendored
@@ -1,4 +1,4 @@
|
||||
import getFreshSideObject from "./getFreshSideObject.js";
|
||||
export default function mergePaddingObject(paddingObject) {
|
||||
return Object.assign({}, getFreshSideObject(), {}, paddingObject);
|
||||
return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
|
||||
}
|
||||
2
conf/site/node_modules/@popperjs/core/dist/esm/utils/rectToClientRect.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/esm/utils/rectToClientRect.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
export default function rectToClientRect(rect) {
|
||||
return Object.assign({}, rect, {
|
||||
return Object.assign(Object.assign({}, rect), {}, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
|
||||
702
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.js
generated
vendored
702
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @popperjs/core v2.3.3 - MIT License
|
||||
* @popperjs/core v2.4.4 - MIT License
|
||||
*/
|
||||
|
||||
(function (global, factory) {
|
||||
@@ -95,6 +95,20 @@
|
||||
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -102,8 +116,9 @@
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -113,8 +128,9 @@
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -122,7 +138,7 @@
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
@@ -162,31 +178,26 @@
|
||||
);
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function getScrollParent(node) {
|
||||
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
|
||||
// $FlowFixMe: assume body is always available
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
}
|
||||
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -195,7 +206,7 @@
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
@@ -211,14 +222,45 @@
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -226,7 +268,7 @@
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
|
||||
var top = 'top';
|
||||
@@ -418,9 +460,9 @@
|
||||
function mergeByName(modifiers) {
|
||||
var merged = modifiers.reduce(function (merged, current) {
|
||||
var existing = merged[current.name];
|
||||
merged[current.name] = existing ? Object.assign({}, existing, {}, current, {
|
||||
options: Object.assign({}, existing.options, {}, current.options),
|
||||
data: Object.assign({}, existing.data, {}, current.data)
|
||||
merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
|
||||
options: Object.assign(Object.assign({}, existing.options), current.options),
|
||||
data: Object.assign(Object.assign({}, existing.data), current.data)
|
||||
}) : current;
|
||||
return merged;
|
||||
}, {}); // IE11 does not support Object.values
|
||||
@@ -430,6 +472,304 @@
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign(Object.assign({}, rect), {}, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
|
||||
var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
|
||||
var DEFAULT_OPTIONS = {
|
||||
@@ -466,7 +806,7 @@
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -481,7 +821,7 @@
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -671,307 +1011,7 @@
|
||||
return instance;
|
||||
};
|
||||
}
|
||||
var createPopper = /*#__PURE__*/popperGenerator();
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
}
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
|
||||
function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign({}, rect, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign({}, getFreshSideObject(), {}, paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
exports.createPopper = createPopper;
|
||||
exports.detectOverflow = detectOverflow;
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.js.map
generated
vendored
File diff suppressed because one or more lines are too long
4
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.min.js
generated
vendored
4
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.min.js
generated
vendored
File diff suppressed because one or more lines are too long
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.min.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-base.min.js.map
generated
vendored
File diff suppressed because one or more lines are too long
710
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.js
generated
vendored
710
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @popperjs/core v2.3.3 - MIT License
|
||||
* @popperjs/core v2.4.4 - MIT License
|
||||
*/
|
||||
|
||||
(function (global, factory) {
|
||||
@@ -95,6 +95,20 @@
|
||||
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -102,8 +116,9 @@
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -113,8 +128,9 @@
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -122,7 +138,7 @@
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
@@ -162,31 +178,26 @@
|
||||
);
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function getScrollParent(node) {
|
||||
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
|
||||
// $FlowFixMe: assume body is always available
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
}
|
||||
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -195,7 +206,7 @@
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
@@ -211,14 +222,45 @@
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -226,7 +268,7 @@
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
|
||||
var top = 'top';
|
||||
@@ -418,9 +460,9 @@
|
||||
function mergeByName(modifiers) {
|
||||
var merged = modifiers.reduce(function (merged, current) {
|
||||
var existing = merged[current.name];
|
||||
merged[current.name] = existing ? Object.assign({}, existing, {}, current, {
|
||||
options: Object.assign({}, existing.options, {}, current.options),
|
||||
data: Object.assign({}, existing.data, {}, current.data)
|
||||
merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
|
||||
options: Object.assign(Object.assign({}, existing.options), current.options),
|
||||
data: Object.assign(Object.assign({}, existing.data), current.data)
|
||||
}) : current;
|
||||
return merged;
|
||||
}, {}); // IE11 does not support Object.values
|
||||
@@ -430,6 +472,304 @@
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign(Object.assign({}, rect), {}, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
|
||||
var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
|
||||
var DEFAULT_OPTIONS = {
|
||||
@@ -466,7 +806,7 @@
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -481,7 +821,7 @@
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -720,79 +1060,6 @@
|
||||
data: {}
|
||||
};
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function popperOffsets(_ref) {
|
||||
var state = _ref.state,
|
||||
name = _ref.name;
|
||||
@@ -888,10 +1155,10 @@
|
||||
if (gpuAcceleration) {
|
||||
var _Object$assign;
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
}
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
}
|
||||
|
||||
function computeStyles(_ref3) {
|
||||
@@ -920,7 +1187,7 @@
|
||||
};
|
||||
|
||||
if (state.modifiersData.popperOffsets != null) {
|
||||
state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.popperOffsets,
|
||||
position: state.options.strategy,
|
||||
adaptive: adaptive
|
||||
@@ -928,14 +1195,14 @@
|
||||
}
|
||||
|
||||
if (state.modifiersData.arrow != null) {
|
||||
state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.arrow,
|
||||
position: 'absolute',
|
||||
adaptive: false
|
||||
})));
|
||||
}
|
||||
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-placement': state.placement
|
||||
});
|
||||
} // eslint-disable-next-line import/no-unused-modules
|
||||
@@ -1034,233 +1301,6 @@
|
||||
requires: ['computeStyles']
|
||||
};
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
}
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
|
||||
function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign({}, rect, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign({}, getFreshSideObject(), {}, paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
|
||||
var createPopper = /*#__PURE__*/popperGenerator({
|
||||
defaultModifiers: defaultModifiers
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.js.map
generated
vendored
File diff suppressed because one or more lines are too long
4
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.min.js
generated
vendored
4
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.min.js
generated
vendored
File diff suppressed because one or more lines are too long
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.min.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/umd/popper-lite.min.js.map
generated
vendored
File diff suppressed because one or more lines are too long
761
conf/site/node_modules/@popperjs/core/dist/umd/popper.js
generated
vendored
761
conf/site/node_modules/@popperjs/core/dist/umd/popper.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @popperjs/core v2.3.3 - MIT License
|
||||
* @popperjs/core v2.4.4 - MIT License
|
||||
*/
|
||||
|
||||
(function (global, factory) {
|
||||
@@ -95,6 +95,20 @@
|
||||
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -102,8 +116,9 @@
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -113,8 +128,9 @@
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -122,7 +138,7 @@
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
@@ -162,31 +178,26 @@
|
||||
);
|
||||
}
|
||||
|
||||
function getComputedStyle(element) {
|
||||
return getWindow(element).getComputedStyle(element);
|
||||
}
|
||||
|
||||
function getScrollParent(node) {
|
||||
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
|
||||
// $FlowFixMe: assume body is always available
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
}
|
||||
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -195,7 +206,7 @@
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
@@ -211,14 +222,45 @@
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -226,7 +268,7 @@
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
|
||||
var top = 'top';
|
||||
@@ -424,9 +466,9 @@
|
||||
function mergeByName(modifiers) {
|
||||
var merged = modifiers.reduce(function (merged, current) {
|
||||
var existing = merged[current.name];
|
||||
merged[current.name] = existing ? Object.assign({}, existing, {}, current, {
|
||||
options: Object.assign({}, existing.options, {}, current.options),
|
||||
data: Object.assign({}, existing.data, {}, current.data)
|
||||
merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {
|
||||
options: Object.assign(Object.assign({}, existing.options), current.options),
|
||||
data: Object.assign(Object.assign({}, existing.data), current.data)
|
||||
}) : current;
|
||||
return merged;
|
||||
}, {}); // IE11 does not support Object.values
|
||||
@@ -436,6 +478,304 @@
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign(Object.assign({}, rect), {}, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
|
||||
var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
|
||||
var DEFAULT_OPTIONS = {
|
||||
@@ -472,7 +812,7 @@
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -487,7 +827,7 @@
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -726,79 +1066,6 @@
|
||||
data: {}
|
||||
};
|
||||
|
||||
function getVariation(placement) {
|
||||
return placement.split('-')[1];
|
||||
}
|
||||
|
||||
function getMainAxisFromPlacement(placement) {
|
||||
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
|
||||
}
|
||||
|
||||
function computeOffsets(_ref) {
|
||||
var reference = _ref.reference,
|
||||
element = _ref.element,
|
||||
placement = _ref.placement;
|
||||
var basePlacement = placement ? getBasePlacement(placement) : null;
|
||||
var variation = placement ? getVariation(placement) : null;
|
||||
var commonX = reference.x + reference.width / 2 - element.width / 2;
|
||||
var commonY = reference.y + reference.height / 2 - element.height / 2;
|
||||
var offsets;
|
||||
|
||||
switch (basePlacement) {
|
||||
case top:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y - element.height
|
||||
};
|
||||
break;
|
||||
|
||||
case bottom:
|
||||
offsets = {
|
||||
x: commonX,
|
||||
y: reference.y + reference.height
|
||||
};
|
||||
break;
|
||||
|
||||
case right:
|
||||
offsets = {
|
||||
x: reference.x + reference.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
case left:
|
||||
offsets = {
|
||||
x: reference.x - element.width,
|
||||
y: commonY
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
offsets = {
|
||||
x: reference.x,
|
||||
y: reference.y
|
||||
};
|
||||
}
|
||||
|
||||
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
|
||||
|
||||
if (mainAxis != null) {
|
||||
var len = mainAxis === 'y' ? 'height' : 'width';
|
||||
|
||||
switch (variation) {
|
||||
case start:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
|
||||
case end:
|
||||
offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return offsets;
|
||||
}
|
||||
|
||||
function popperOffsets(_ref) {
|
||||
var state = _ref.state,
|
||||
name = _ref.name;
|
||||
@@ -894,10 +1161,10 @@
|
||||
if (gpuAcceleration) {
|
||||
var _Object$assign;
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
}
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
}
|
||||
|
||||
function computeStyles(_ref3) {
|
||||
@@ -926,7 +1193,7 @@
|
||||
};
|
||||
|
||||
if (state.modifiersData.popperOffsets != null) {
|
||||
state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.popperOffsets,
|
||||
position: state.options.strategy,
|
||||
adaptive: adaptive
|
||||
@@ -934,14 +1201,14 @@
|
||||
}
|
||||
|
||||
if (state.modifiersData.arrow != null) {
|
||||
state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.arrow,
|
||||
position: 'absolute',
|
||||
adaptive: false
|
||||
})));
|
||||
}
|
||||
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-placement': state.placement
|
||||
});
|
||||
} // eslint-disable-next-line import/no-unused-modules
|
||||
@@ -1044,7 +1311,7 @@
|
||||
var basePlacement = getBasePlacement(placement);
|
||||
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
|
||||
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {
|
||||
placement: placement
|
||||
})) : offset,
|
||||
skidding = _ref[0],
|
||||
@@ -1114,233 +1381,6 @@
|
||||
});
|
||||
}
|
||||
|
||||
function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
};
|
||||
}
|
||||
|
||||
function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
}
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
|
||||
function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
|
||||
function contains(parent, child) {
|
||||
// $FlowFixMe: hasOwnProperty doesn't seem to work in tests
|
||||
var isShadow = Boolean(child.getRootNode && child.getRootNode().host); // First, attempt with faster native method
|
||||
|
||||
if (parent.contains(child)) {
|
||||
return true;
|
||||
} // then fallback to custom implementation with Shadow DOM support
|
||||
else if (isShadow) {
|
||||
var next = child;
|
||||
|
||||
do {
|
||||
if (next && parent.isSameNode(next)) {
|
||||
return true;
|
||||
} // $FlowFixMe: need a better way to handle this...
|
||||
|
||||
|
||||
next = next.parentNode || next.host;
|
||||
} while (next);
|
||||
} // Give up, the result is false
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function rectToClientRect(rect) {
|
||||
return Object.assign({}, rect, {
|
||||
left: rect.x,
|
||||
top: rect.y,
|
||||
right: rect.x + rect.width,
|
||||
bottom: rect.y + rect.height
|
||||
});
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
if (!isElement(clipperElement)) {
|
||||
return [];
|
||||
} // $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
|
||||
|
||||
function getClippingRect(element, boundary, rootBoundary) {
|
||||
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
|
||||
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
clippingRect.height = clippingRect.bottom - clippingRect.top;
|
||||
clippingRect.x = clippingRect.left;
|
||||
clippingRect.y = clippingRect.top;
|
||||
return clippingRect;
|
||||
}
|
||||
|
||||
function getFreshSideObject() {
|
||||
return {
|
||||
top: 0,
|
||||
right: 0,
|
||||
bottom: 0,
|
||||
left: 0
|
||||
};
|
||||
}
|
||||
|
||||
function mergePaddingObject(paddingObject) {
|
||||
return Object.assign({}, getFreshSideObject(), {}, paddingObject);
|
||||
}
|
||||
|
||||
function expandToHashMap(value, keys) {
|
||||
return keys.reduce(function (hashMap, key) {
|
||||
hashMap[key] = value;
|
||||
return hashMap;
|
||||
}, {});
|
||||
}
|
||||
|
||||
function detectOverflow(state, options) {
|
||||
if (options === void 0) {
|
||||
options = {};
|
||||
}
|
||||
|
||||
var _options = options,
|
||||
_options$placement = _options.placement,
|
||||
placement = _options$placement === void 0 ? state.placement : _options$placement,
|
||||
_options$boundary = _options.boundary,
|
||||
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
|
||||
_options$rootBoundary = _options.rootBoundary,
|
||||
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
|
||||
_options$elementConte = _options.elementContext,
|
||||
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
|
||||
_options$altBoundary = _options.altBoundary,
|
||||
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
|
||||
_options$padding = _options.padding,
|
||||
padding = _options$padding === void 0 ? 0 : _options$padding;
|
||||
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
|
||||
var altContext = elementContext === popper ? reference : popper;
|
||||
var referenceElement = state.elements.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var element = state.elements[altBoundary ? altContext : elementContext];
|
||||
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
|
||||
var referenceClientRect = getBoundingClientRect(referenceElement);
|
||||
var popperOffsets = computeOffsets({
|
||||
reference: referenceClientRect,
|
||||
element: popperRect,
|
||||
strategy: 'absolute',
|
||||
placement: placement
|
||||
});
|
||||
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, {}, popperOffsets));
|
||||
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
|
||||
// 0 or negative = within the clipping rect
|
||||
|
||||
var overflowOffsets = {
|
||||
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
|
||||
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
|
||||
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
|
||||
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
|
||||
};
|
||||
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
|
||||
|
||||
if (elementContext === popper && offsetData) {
|
||||
var offset = offsetData[placement];
|
||||
Object.keys(overflowOffsets).forEach(function (key) {
|
||||
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
|
||||
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
|
||||
overflowOffsets[key] += offset[axis] * multiply;
|
||||
});
|
||||
}
|
||||
|
||||
return overflowOffsets;
|
||||
}
|
||||
|
||||
/*:: type OverflowsMap = { [ComputedPlacement]: number }; */
|
||||
|
||||
/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */
|
||||
@@ -1358,13 +1398,24 @@
|
||||
_options$allowedAutoP = _options.allowedAutoPlacements,
|
||||
allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
|
||||
var variation = getVariation(placement);
|
||||
var placements$1 = (variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
|
||||
var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
|
||||
return getVariation(placement) === variation;
|
||||
}) : basePlacements).filter(function (placement) {
|
||||
return allowedAutoPlacements.indexOf(placement) >= 0;
|
||||
}); // $FlowFixMe: Flow seems to have problems with two array unions...
|
||||
}) : basePlacements; // $FlowFixMe
|
||||
|
||||
var overflows = placements$1.reduce(function (acc, placement) {
|
||||
var allowedPlacements = placements$1.filter(function (placement) {
|
||||
return allowedAutoPlacements.indexOf(placement) >= 0;
|
||||
});
|
||||
|
||||
if (allowedPlacements.length === 0) {
|
||||
allowedPlacements = placements$1;
|
||||
|
||||
{
|
||||
console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' '));
|
||||
}
|
||||
} // $FlowFixMe: Flow seems to have problems with two array unions...
|
||||
|
||||
|
||||
var overflows = allowedPlacements.reduce(function (acc, placement) {
|
||||
acc[placement] = detectOverflow(state, {
|
||||
placement: placement,
|
||||
boundary: boundary,
|
||||
@@ -1396,7 +1447,11 @@
|
||||
return;
|
||||
}
|
||||
|
||||
var specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
var _options$mainAxis = options.mainAxis,
|
||||
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
|
||||
_options$altAxis = options.altAxis,
|
||||
checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
|
||||
specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
padding = options.padding,
|
||||
boundary = options.boundary,
|
||||
rootBoundary = options.rootBoundary,
|
||||
@@ -1446,7 +1501,15 @@
|
||||
}
|
||||
|
||||
var altVariationSide = getOppositePlacement(mainVariationSide);
|
||||
var checks = [overflow[_basePlacement] <= 0, overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0];
|
||||
var checks = [];
|
||||
|
||||
if (checkMainAxis) {
|
||||
checks.push(overflow[_basePlacement] <= 0);
|
||||
}
|
||||
|
||||
if (checkAltAxis) {
|
||||
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
|
||||
}
|
||||
|
||||
if (checks.every(function (check) {
|
||||
return check;
|
||||
@@ -1544,7 +1607,7 @@
|
||||
var popperOffsets = state.modifiersData.popperOffsets;
|
||||
var referenceRect = state.rects.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {
|
||||
placement: state.placement
|
||||
})) : tetherOffset;
|
||||
var data = {
|
||||
@@ -1645,7 +1708,7 @@
|
||||
var maxProp = axis === 'y' ? bottom : right;
|
||||
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
|
||||
var startDiff = popperOffsets[axis] - state.rects.reference[axis];
|
||||
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
|
||||
var arrowOffsetParent = getOffsetParent(arrowElement);
|
||||
var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
|
||||
var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
|
||||
// outside of the popper bounds
|
||||
@@ -1681,6 +1744,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
if (!isHTMLElement(arrowElement)) {
|
||||
console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));
|
||||
}
|
||||
}
|
||||
|
||||
if (!contains(state.elements.popper, arrowElement)) {
|
||||
{
|
||||
console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' '));
|
||||
@@ -1750,7 +1819,7 @@
|
||||
isReferenceHidden: isReferenceHidden,
|
||||
hasPopperEscaped: hasPopperEscaped
|
||||
};
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-reference-hidden': isReferenceHidden,
|
||||
'data-popper-escaped': hasPopperEscaped
|
||||
});
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/dist/umd/popper.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/umd/popper.js.map
generated
vendored
File diff suppressed because one or more lines are too long
4
conf/site/node_modules/@popperjs/core/dist/umd/popper.min.js
generated
vendored
4
conf/site/node_modules/@popperjs/core/dist/umd/popper.min.js
generated
vendored
File diff suppressed because one or more lines are too long
2
conf/site/node_modules/@popperjs/core/dist/umd/popper.min.js.map
generated
vendored
2
conf/site/node_modules/@popperjs/core/dist/umd/popper.min.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
conf/site/node_modules/@popperjs/core/lib/dom-utils/getBorders.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/dom-utils/getBorders.d.ts
generated
vendored
@@ -1,2 +0,0 @@
|
||||
import { SideObject } from "../types";
|
||||
export default function getBorders(element: Element): SideObject;
|
||||
16
conf/site/node_modules/@popperjs/core/lib/dom-utils/getBorders.js
generated
vendored
16
conf/site/node_modules/@popperjs/core/lib/dom-utils/getBorders.js
generated
vendored
@@ -1,16 +0,0 @@
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
|
||||
function toNumber(cssValue) {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
export default function getBorders(element) {
|
||||
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth)
|
||||
};
|
||||
}
|
||||
19
conf/site/node_modules/@popperjs/core/lib/dom-utils/getBorders.js.flow
generated
vendored
19
conf/site/node_modules/@popperjs/core/lib/dom-utils/getBorders.js.flow
generated
vendored
@@ -1,19 +0,0 @@
|
||||
// @flow
|
||||
import type { SideObject } from '../types';
|
||||
import getComputedStyle from './getComputedStyle';
|
||||
import { isHTMLElement } from './instanceOf';
|
||||
|
||||
function toNumber(cssValue: string): number {
|
||||
return parseFloat(cssValue) || 0;
|
||||
}
|
||||
|
||||
export default function getBorders(element: Element): SideObject {
|
||||
const computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
|
||||
|
||||
return {
|
||||
top: toNumber(computedStyle.borderTopWidth),
|
||||
right: toNumber(computedStyle.borderRightWidth),
|
||||
bottom: toNumber(computedStyle.borderBottomWidth),
|
||||
left: toNumber(computedStyle.borderLeftWidth),
|
||||
};
|
||||
}
|
||||
31
conf/site/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
generated
vendored
31
conf/site/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
generated
vendored
@@ -7,19 +7,33 @@ import getDocumentElement from "./getDocumentElement.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import { isElement, isHTMLElement } from "./instanceOf.js";
|
||||
import getBoundingClientRect from "./getBoundingClientRect.js";
|
||||
import getDecorations from "./getDecorations.js";
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import contains from "./contains.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import rectToClientRect from "../utils/rectToClientRect.js";
|
||||
|
||||
function getInnerBoundingClientRect(element) {
|
||||
var rect = getBoundingClientRect(element);
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(element, clippingParent) {
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
} // A "clipping parent" is an overflowable container with the characteristic of
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
|
||||
|
||||
function getClippingParents(element) {
|
||||
var clippingParents = listScrollParents(element);
|
||||
var clippingParents = listScrollParents(getParentNode(element));
|
||||
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
|
||||
|
||||
@@ -29,7 +43,7 @@ function getClippingParents(element) {
|
||||
|
||||
|
||||
return clippingParents.filter(function (clippingParent) {
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement);
|
||||
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
|
||||
});
|
||||
} // Gets the maximum area that the element is visible in due to any number of
|
||||
// clipping parents
|
||||
@@ -41,11 +55,10 @@ export default function getClippingRect(element, boundary, rootBoundary) {
|
||||
var firstClippingParent = clippingParents[0];
|
||||
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
|
||||
var rect = getClientRectFromMixedType(element, clippingParent);
|
||||
var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
clippingRect.width = clippingRect.right - clippingRect.left;
|
||||
|
||||
41
conf/site/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js.flow
generated
vendored
41
conf/site/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js.flow
generated
vendored
@@ -10,10 +10,26 @@ import getDocumentElement from './getDocumentElement';
|
||||
import getComputedStyle from './getComputedStyle';
|
||||
import { isElement, isHTMLElement } from './instanceOf';
|
||||
import getBoundingClientRect from './getBoundingClientRect';
|
||||
import getDecorations from './getDecorations';
|
||||
import getParentNode from './getParentNode';
|
||||
import contains from './contains';
|
||||
import getNodeName from './getNodeName';
|
||||
import rectToClientRect from '../utils/rectToClientRect';
|
||||
|
||||
function getInnerBoundingClientRect(element: Element) {
|
||||
const rect = getBoundingClientRect(element);
|
||||
|
||||
rect.top = rect.top + element.clientTop;
|
||||
rect.left = rect.left + element.clientLeft;
|
||||
rect.bottom = rect.top + element.clientHeight;
|
||||
rect.right = rect.left + element.clientWidth;
|
||||
rect.width = element.clientWidth;
|
||||
rect.height = element.clientHeight;
|
||||
rect.x = rect.left;
|
||||
rect.y = rect.top;
|
||||
|
||||
return rect;
|
||||
}
|
||||
|
||||
function getClientRectFromMixedType(
|
||||
element: Element,
|
||||
clippingParent: Element | RootBoundary
|
||||
@@ -21,7 +37,7 @@ function getClientRectFromMixedType(
|
||||
return clippingParent === viewport
|
||||
? rectToClientRect(getViewportRect(element))
|
||||
: isHTMLElement(clippingParent)
|
||||
? getBoundingClientRect(clippingParent)
|
||||
? getInnerBoundingClientRect(clippingParent)
|
||||
: rectToClientRect(getDocumentRect(getDocumentElement(element)));
|
||||
}
|
||||
|
||||
@@ -29,7 +45,7 @@ function getClientRectFromMixedType(
|
||||
// clipping (or hiding) overflowing elements with a position different from
|
||||
// `initial`
|
||||
function getClippingParents(element: Element): Array<Element> {
|
||||
const clippingParents = listScrollParents(element);
|
||||
const clippingParents = listScrollParents(getParentNode(element));
|
||||
const canEscapeClipping =
|
||||
['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
|
||||
const clipperElement =
|
||||
@@ -43,8 +59,10 @@ function getClippingParents(element: Element): Array<Element> {
|
||||
|
||||
// $FlowFixMe: https://github.com/facebook/flow/issues/1414
|
||||
return clippingParents.filter(
|
||||
clippingParent =>
|
||||
isElement(clippingParent) && contains(clippingParent, clipperElement)
|
||||
(clippingParent) =>
|
||||
isElement(clippingParent) &&
|
||||
contains(clippingParent, clipperElement) &&
|
||||
getNodeName(clippingParent) !== 'body'
|
||||
);
|
||||
}
|
||||
|
||||
@@ -64,16 +82,11 @@ export default function getClippingRect(
|
||||
|
||||
const clippingRect = clippingParents.reduce((accRect, clippingParent) => {
|
||||
const rect = getClientRectFromMixedType(element, clippingParent);
|
||||
const decorations = getDecorations(
|
||||
isHTMLElement(clippingParent)
|
||||
? clippingParent
|
||||
: getDocumentElement(element)
|
||||
);
|
||||
|
||||
accRect.top = Math.max(rect.top + decorations.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right - decorations.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left + decorations.left, accRect.left);
|
||||
accRect.top = Math.max(rect.top, accRect.top);
|
||||
accRect.right = Math.min(rect.right, accRect.right);
|
||||
accRect.bottom = Math.min(rect.bottom, accRect.bottom);
|
||||
accRect.left = Math.max(rect.left, accRect.left);
|
||||
|
||||
return accRect;
|
||||
}, getClientRectFromMixedType(element, firstClippingParent));
|
||||
|
||||
13
conf/site/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
generated
vendored
13
conf/site/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
generated
vendored
@@ -3,7 +3,8 @@ import getNodeScroll from "./getNodeScroll.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js";
|
||||
import getDocumentElement from "./getDocumentElement.js"; // Returns the composite rect of an element relative to its offsetParent.
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
import isScrollParent from "./isScrollParent.js"; // Returns the composite rect of an element relative to its offsetParent.
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
|
||||
export default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
|
||||
@@ -11,8 +12,9 @@ export default function getCompositeRect(elementOrVirtualElement, offsetParent,
|
||||
isFixed = false;
|
||||
}
|
||||
|
||||
var documentElement;
|
||||
var documentElement = getDocumentElement(offsetParent);
|
||||
var rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
var isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
var scroll = {
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0
|
||||
@@ -22,8 +24,9 @@ export default function getCompositeRect(elementOrVirtualElement, offsetParent,
|
||||
y: 0
|
||||
};
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -31,7 +34,7 @@ export default function getCompositeRect(elementOrVirtualElement, offsetParent,
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if (documentElement = getDocumentElement(offsetParent)) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
|
||||
14
conf/site/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js.flow
generated
vendored
14
conf/site/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js.flow
generated
vendored
@@ -6,6 +6,7 @@ import getNodeName from './getNodeName';
|
||||
import { isHTMLElement } from './instanceOf';
|
||||
import getWindowScrollBarX from './getWindowScrollBarX';
|
||||
import getDocumentElement from './getDocumentElement';
|
||||
import isScrollParent from './isScrollParent';
|
||||
|
||||
// Returns the composite rect of an element relative to its offsetParent.
|
||||
// Composite means it takes into account transforms as well as layout.
|
||||
@@ -14,14 +15,19 @@ export default function getCompositeRect(
|
||||
offsetParent: Element | Window,
|
||||
isFixed: boolean = false
|
||||
): Rect {
|
||||
let documentElement;
|
||||
const documentElement = getDocumentElement(offsetParent);
|
||||
const rect = getBoundingClientRect(elementOrVirtualElement);
|
||||
const isOffsetParentAnElement = isHTMLElement(offsetParent);
|
||||
|
||||
let scroll = { scrollLeft: 0, scrollTop: 0 };
|
||||
let offsets = { x: 0, y: 0 };
|
||||
|
||||
if (!isFixed) {
|
||||
if (getNodeName(offsetParent) !== 'body') {
|
||||
if (isOffsetParentAnElement || (!isOffsetParentAnElement && !isFixed)) {
|
||||
if (
|
||||
getNodeName(offsetParent) !== 'body' ||
|
||||
// https://github.com/popperjs/popper-core/issues/1078
|
||||
isScrollParent(documentElement)
|
||||
) {
|
||||
scroll = getNodeScroll(offsetParent);
|
||||
}
|
||||
|
||||
@@ -29,7 +35,7 @@ export default function getCompositeRect(
|
||||
offsets = getBoundingClientRect(offsetParent);
|
||||
offsets.x += offsetParent.clientLeft;
|
||||
offsets.y += offsetParent.clientTop;
|
||||
} else if ((documentElement = getDocumentElement(offsetParent))) {
|
||||
} else if (documentElement) {
|
||||
offsets.x = getWindowScrollBarX(documentElement);
|
||||
}
|
||||
}
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDecorations.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDecorations.d.ts
generated
vendored
@@ -1,2 +0,0 @@
|
||||
import { SideObject } from "../types";
|
||||
export default function getDecorations(element: HTMLElement): SideObject;
|
||||
33
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDecorations.js
generated
vendored
33
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDecorations.js
generated
vendored
@@ -1,33 +0,0 @@
|
||||
import getBorders from "./getBorders.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import getWindow from "./getWindow.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js"; // Borders + scrollbars
|
||||
|
||||
export default function getDecorations(element) {
|
||||
var win = getWindow(element);
|
||||
var borders = getBorders(element);
|
||||
var isHTML = getNodeName(element) === 'html';
|
||||
var winScrollBarX = getWindowScrollBarX(element);
|
||||
var x = element.clientWidth + borders.right;
|
||||
var y = element.clientHeight + borders.bottom; // HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right: // RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
|
||||
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft
|
||||
};
|
||||
}
|
||||
43
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDecorations.js.flow
generated
vendored
43
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDecorations.js.flow
generated
vendored
@@ -1,43 +0,0 @@
|
||||
// @flow
|
||||
import type { SideObject } from '../types';
|
||||
import getBorders from './getBorders';
|
||||
import getNodeName from './getNodeName';
|
||||
import getWindow from './getWindow';
|
||||
import getWindowScrollBarX from './getWindowScrollBarX';
|
||||
|
||||
// Borders + scrollbars
|
||||
export default function getDecorations(element: HTMLElement): SideObject {
|
||||
const win = getWindow(element);
|
||||
const borders = getBorders(element);
|
||||
const isHTML = getNodeName(element) === 'html';
|
||||
const winScrollBarX = getWindowScrollBarX(element);
|
||||
|
||||
const x = element.clientWidth + borders.right;
|
||||
let y = element.clientHeight + borders.bottom;
|
||||
|
||||
// HACK:
|
||||
// document.documentElement.clientHeight on iOS reports the height of the
|
||||
// viewport including the bottom bar, even if the bottom bar isn't visible.
|
||||
// If the difference between window innerHeight and html clientHeight is more
|
||||
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
|
||||
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
|
||||
// is about 17px)
|
||||
// * The mobile bar is 114px tall
|
||||
if (isHTML && win.innerHeight - element.clientHeight > 50) {
|
||||
y = win.innerHeight - borders.bottom;
|
||||
}
|
||||
|
||||
return {
|
||||
top: isHTML ? 0 : element.clientTop,
|
||||
right:
|
||||
// RTL scrollbar (scrolling containers only)
|
||||
element.clientLeft > borders.left
|
||||
? borders.right
|
||||
: // LTR scrollbar
|
||||
isHTML
|
||||
? win.innerWidth - x - winScrollBarX
|
||||
: element.offsetWidth - x,
|
||||
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
|
||||
left: isHTML ? winScrollBarX : element.clientLeft,
|
||||
};
|
||||
}
|
||||
32
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
generated
vendored
32
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
generated
vendored
@@ -1,14 +1,26 @@
|
||||
import getCompositeRect from "./getCompositeRect.js";
|
||||
import getWindow from "./getWindow.js";
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
import getWindowScroll from "./getWindowScroll.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js";
|
||||
import getWindowScroll from "./getWindowScroll.js"; // Gets the entire size of the scrollable document area, even extending outside
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
|
||||
export default function getDocumentRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var winScroll = getWindowScroll(element);
|
||||
var documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
return documentRect;
|
||||
var body = element.ownerDocument.body;
|
||||
var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
|
||||
var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
|
||||
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
var y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
}
|
||||
35
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js.flow
generated
vendored
35
conf/site/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js.flow
generated
vendored
@@ -1,19 +1,36 @@
|
||||
// @flow
|
||||
import type { Rect } from '../types';
|
||||
import getCompositeRect from './getCompositeRect';
|
||||
import getWindow from './getWindow';
|
||||
import getDocumentElement from './getDocumentElement';
|
||||
import getComputedStyle from './getComputedStyle';
|
||||
import getWindowScrollBarX from './getWindowScrollBarX';
|
||||
import getWindowScroll from './getWindowScroll';
|
||||
|
||||
// Gets the entire size of the scrollable document area, even extending outside
|
||||
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
|
||||
export default function getDocumentRect(element: HTMLElement): Rect {
|
||||
const win = getWindow(element);
|
||||
const html = getDocumentElement(element);
|
||||
const winScroll = getWindowScroll(element);
|
||||
const documentRect = getCompositeRect(getDocumentElement(element), win);
|
||||
const body = element.ownerDocument.body;
|
||||
|
||||
documentRect.height = Math.max(documentRect.height, win.innerHeight);
|
||||
documentRect.width = Math.max(documentRect.width, win.innerWidth);
|
||||
documentRect.x = -winScroll.scrollLeft;
|
||||
documentRect.y = -winScroll.scrollTop;
|
||||
const width = Math.max(
|
||||
html.scrollWidth,
|
||||
html.clientWidth,
|
||||
body ? body.scrollWidth : 0,
|
||||
body ? body.clientWidth : 0
|
||||
);
|
||||
const height = Math.max(
|
||||
html.scrollHeight,
|
||||
html.clientHeight,
|
||||
body ? body.scrollHeight : 0,
|
||||
body ? body.clientHeight : 0
|
||||
);
|
||||
|
||||
return documentRect;
|
||||
let x = -winScroll.scrollLeft + getWindowScrollBarX(element);
|
||||
const y = -winScroll.scrollTop;
|
||||
|
||||
if (getComputedStyle(body || html).direction === 'rtl') {
|
||||
x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;
|
||||
}
|
||||
|
||||
return { width, height, x, y };
|
||||
}
|
||||
|
||||
43
conf/site/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
generated
vendored
43
conf/site/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
generated
vendored
@@ -3,6 +3,8 @@ import getNodeName from "./getNodeName.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
import isTableElement from "./isTableElement.js";
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
|
||||
function getTrueOffsetParent(element) {
|
||||
if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
|
||||
@@ -10,14 +12,45 @@ function getTrueOffsetParent(element) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
}
|
||||
var offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
var html = getDocumentElement(offsetParent);
|
||||
|
||||
if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
|
||||
|
||||
function getContainingBlock(element) {
|
||||
var currentNode = getParentNode(element);
|
||||
|
||||
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
|
||||
var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
|
||||
if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} // Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
|
||||
|
||||
export default function getOffsetParent(element) {
|
||||
var window = getWindow(element);
|
||||
var offsetParent = getTrueOffsetParent(element); // Find the nearest non-table offsetParent
|
||||
var offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -25,5 +58,5 @@ export default function getOffsetParent(element) {
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
56
conf/site/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js.flow
generated
vendored
56
conf/site/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js.flow
generated
vendored
@@ -4,6 +4,8 @@ import getNodeName from './getNodeName';
|
||||
import getComputedStyle from './getComputedStyle';
|
||||
import { isHTMLElement } from './instanceOf';
|
||||
import isTableElement from './isTableElement';
|
||||
import getParentNode from './getParentNode';
|
||||
import getDocumentElement from './getDocumentElement';
|
||||
|
||||
function getTrueOffsetParent(element: Element): ?Element {
|
||||
if (
|
||||
@@ -14,16 +16,62 @@ function getTrueOffsetParent(element: Element): ?Element {
|
||||
return null;
|
||||
}
|
||||
|
||||
return element.offsetParent;
|
||||
const offsetParent = element.offsetParent;
|
||||
|
||||
if (offsetParent) {
|
||||
const html = getDocumentElement(offsetParent);
|
||||
|
||||
if (
|
||||
getNodeName(offsetParent) === 'body' &&
|
||||
getComputedStyle(offsetParent).position === 'static' &&
|
||||
getComputedStyle(html).position !== 'static'
|
||||
) {
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
return offsetParent;
|
||||
}
|
||||
|
||||
// `.offsetParent` reports `null` for fixed elements, while absolute elements
|
||||
// return the containing block
|
||||
function getContainingBlock(element: Element) {
|
||||
let currentNode = getParentNode(element);
|
||||
|
||||
while (
|
||||
isHTMLElement(currentNode) &&
|
||||
['html', 'body'].indexOf(getNodeName(currentNode)) < 0
|
||||
) {
|
||||
const css = getComputedStyle(currentNode);
|
||||
|
||||
// This is non-exhaustive but covers the most common CSS properties that
|
||||
// create a containing block.
|
||||
if (
|
||||
css.transform !== 'none' ||
|
||||
css.perspective !== 'none' ||
|
||||
(css.willChange && css.willChange !== 'auto')
|
||||
) {
|
||||
return currentNode;
|
||||
} else {
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// Gets the closest ancestor positioned element. Handles some edge cases,
|
||||
// such as table ancestors and cross browser bugs.
|
||||
export default function getOffsetParent(element: Element) {
|
||||
const window = getWindow(element);
|
||||
|
||||
let offsetParent = getTrueOffsetParent(element);
|
||||
|
||||
// Find the nearest non-table offsetParent
|
||||
while (offsetParent && isTableElement(offsetParent)) {
|
||||
while (
|
||||
offsetParent &&
|
||||
isTableElement(offsetParent) &&
|
||||
getComputedStyle(offsetParent).position === 'static'
|
||||
) {
|
||||
offsetParent = getTrueOffsetParent(offsetParent);
|
||||
}
|
||||
|
||||
@@ -35,5 +83,5 @@ export default function getOffsetParent(element: Element) {
|
||||
return window;
|
||||
}
|
||||
|
||||
return offsetParent || window;
|
||||
return offsetParent || getContainingBlock(element) || window;
|
||||
}
|
||||
|
||||
14
conf/site/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
generated
vendored
14
conf/site/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
import isScrollParent from "./isScrollParent.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import { isHTMLElement } from "./instanceOf.js";
|
||||
export default function getScrollParent(node) {
|
||||
@@ -8,16 +8,8 @@ export default function getScrollParent(node) {
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(node),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
|
||||
11
conf/site/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js.flow
generated
vendored
11
conf/site/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js.flow
generated
vendored
@@ -1,6 +1,6 @@
|
||||
// @flow
|
||||
import getParentNode from './getParentNode';
|
||||
import getComputedStyle from './getComputedStyle';
|
||||
import isScrollParent from './isScrollParent';
|
||||
import getNodeName from './getNodeName';
|
||||
import { isHTMLElement } from './instanceOf';
|
||||
|
||||
@@ -10,13 +10,8 @@ export default function getScrollParent(node: Node): HTMLElement {
|
||||
return node.ownerDocument.body;
|
||||
}
|
||||
|
||||
if (isHTMLElement(node)) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
const { overflow, overflowX, overflowY } = getComputedStyle(node);
|
||||
|
||||
if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {
|
||||
return node;
|
||||
}
|
||||
if (isHTMLElement(node) && isScrollParent(node)) {
|
||||
return node;
|
||||
}
|
||||
|
||||
return getScrollParent(getParentNode(node));
|
||||
|
||||
4
conf/site/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.d.ts
generated
vendored
4
conf/site/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.d.ts
generated
vendored
@@ -1,6 +1,6 @@
|
||||
export default function getViewportRect(element: Element): {
|
||||
width: any;
|
||||
height: any;
|
||||
width: number;
|
||||
height: number;
|
||||
x: number;
|
||||
y: number;
|
||||
};
|
||||
|
||||
35
conf/site/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
generated
vendored
35
conf/site/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
generated
vendored
@@ -1,21 +1,40 @@
|
||||
import getWindow from "./getWindow.js";
|
||||
import getDocumentElement from "./getDocumentElement.js";
|
||||
import getWindowScrollBarX from "./getWindowScrollBarX.js";
|
||||
export default function getViewportRect(element) {
|
||||
var win = getWindow(element);
|
||||
var html = getDocumentElement(element);
|
||||
var visualViewport = win.visualViewport;
|
||||
var width = win.innerWidth;
|
||||
var height = win.innerHeight; // We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
var width = html.clientWidth;
|
||||
var height = html.clientHeight;
|
||||
var x = 0;
|
||||
var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
width: width,
|
||||
height: height,
|
||||
x: 0,
|
||||
y: 0
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y: y
|
||||
};
|
||||
}
|
||||
40
conf/site/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js.flow
generated
vendored
40
conf/site/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js.flow
generated
vendored
@@ -1,20 +1,46 @@
|
||||
// @flow
|
||||
import getWindow from './getWindow';
|
||||
import getDocumentElement from './getDocumentElement';
|
||||
import getWindowScrollBarX from './getWindowScrollBarX';
|
||||
|
||||
export default function getViewportRect(element: Element) {
|
||||
const win = getWindow(element);
|
||||
const html = getDocumentElement(element);
|
||||
const visualViewport = win.visualViewport;
|
||||
|
||||
let width = win.innerWidth;
|
||||
let height = win.innerHeight;
|
||||
let width = html.clientWidth;
|
||||
let height = html.clientHeight;
|
||||
let x = 0;
|
||||
let y = 0;
|
||||
|
||||
// We don't know which browsers have buggy or odd implementations of this, so
|
||||
// for now we're only applying it to iOS to fix the keyboard issue.
|
||||
// Investigation required
|
||||
if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {
|
||||
// NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
|
||||
// can be obscured underneath it.
|
||||
// Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
|
||||
// if it isn't open, so if this isn't available, the popper will be detected
|
||||
// to overflow the bottom of the screen too early.
|
||||
if (visualViewport) {
|
||||
width = visualViewport.width;
|
||||
height = visualViewport.height;
|
||||
|
||||
// Uses Layout Viewport (like Chrome; Safari does not currently)
|
||||
// In Chrome, it returns a value very close to 0 (+/-) but contains rounding
|
||||
// errors due to floating point numbers, so we need to check precision.
|
||||
// Safari returns a number <= 0, usually < -1 when pinch-zoomed
|
||||
|
||||
// Feature detection fails in mobile emulation mode in Chrome.
|
||||
// Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
|
||||
// 0.001
|
||||
// Fallback here: "Not Safari" userAgent
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
x = visualViewport.offsetLeft;
|
||||
y = visualViewport.offsetTop;
|
||||
}
|
||||
}
|
||||
|
||||
return { width, height, x: 0, y: 0 };
|
||||
return {
|
||||
width,
|
||||
height,
|
||||
x: x + getWindowScrollBarX(element),
|
||||
y,
|
||||
};
|
||||
}
|
||||
|
||||
1
conf/site/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.d.ts
generated
vendored
Normal file
1
conf/site/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export default function isScrollParent(element: HTMLElement): boolean;
|
||||
10
conf/site/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
generated
vendored
Normal file
10
conf/site/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
import getComputedStyle from "./getComputedStyle.js";
|
||||
export default function isScrollParent(element) {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
var _getComputedStyle = getComputedStyle(element),
|
||||
overflow = _getComputedStyle.overflow,
|
||||
overflowX = _getComputedStyle.overflowX,
|
||||
overflowY = _getComputedStyle.overflowY;
|
||||
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
8
conf/site/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js.flow
generated
vendored
Normal file
8
conf/site/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js.flow
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
// @flow
|
||||
import getComputedStyle from './getComputedStyle';
|
||||
|
||||
export default function isScrollParent(element: HTMLElement): boolean {
|
||||
// Firefox wants us to check `-x` and `-y` variations as well
|
||||
const { overflow, overflowX, overflowY } = getComputedStyle(element);
|
||||
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
|
||||
}
|
||||
10
conf/site/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
generated
vendored
10
conf/site/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
generated
vendored
@@ -2,6 +2,14 @@ import getScrollParent from "./getScrollParent.js";
|
||||
import getParentNode from "./getParentNode.js";
|
||||
import getNodeName from "./getNodeName.js";
|
||||
import getWindow from "./getWindow.js";
|
||||
import isScrollParent from "./isScrollParent.js";
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
|
||||
export default function listScrollParents(element, list) {
|
||||
if (list === void 0) {
|
||||
list = [];
|
||||
@@ -10,7 +18,7 @@ export default function listScrollParents(element, list) {
|
||||
var scrollParent = getScrollParent(element);
|
||||
var isBody = getNodeName(scrollParent) === 'body';
|
||||
var win = getWindow(scrollParent);
|
||||
var target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
|
||||
var updatedList = list.concat(target);
|
||||
return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
|
||||
updatedList.concat(listScrollParents(getParentNode(target)));
|
||||
|
||||
14
conf/site/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js.flow
generated
vendored
14
conf/site/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js.flow
generated
vendored
@@ -4,7 +4,14 @@ import getParentNode from './getParentNode';
|
||||
import getNodeName from './getNodeName';
|
||||
import getWindow from './getWindow';
|
||||
import type { Window, VisualViewport } from '../types';
|
||||
import isScrollParent from './isScrollParent';
|
||||
|
||||
/*
|
||||
given a DOM element, return the list of all scroll parents, up the list of ancesors
|
||||
until we get to the top window object. This list is what we attach scroll listeners
|
||||
to, because if any of these parent elements scroll, we'll need to re-calculate the
|
||||
reference element's position.
|
||||
*/
|
||||
export default function listScrollParents(
|
||||
element: Node,
|
||||
list: Array<Element | Window> = []
|
||||
@@ -12,7 +19,12 @@ export default function listScrollParents(
|
||||
const scrollParent = getScrollParent(element);
|
||||
const isBody = getNodeName(scrollParent) === 'body';
|
||||
const win = getWindow(scrollParent);
|
||||
const target = isBody ? [win].concat(win.visualViewport || []) : scrollParent;
|
||||
const target = isBody
|
||||
? [win].concat(
|
||||
win.visualViewport || [],
|
||||
isScrollParent(scrollParent) ? scrollParent : []
|
||||
)
|
||||
: scrollParent;
|
||||
const updatedList = list.concat(target);
|
||||
|
||||
return isBody
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/index.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/index.d.ts
generated
vendored
@@ -1,4 +1,5 @@
|
||||
import { OptionsGeneric, Modifier, Instance, VirtualElement } from "./types";
|
||||
import detectOverflow from "./utils/detectOverflow";
|
||||
export * from "./types";
|
||||
export * from "./enums";
|
||||
declare type PopperGeneratorArgs = {
|
||||
@@ -7,3 +8,4 @@ declare type PopperGeneratorArgs = {
|
||||
};
|
||||
export declare function popperGenerator(generatorOptions?: PopperGeneratorArgs): <TModifier extends Partial<Modifier<any, any>>>(reference: Element | VirtualElement, popper: HTMLElement, options?: Partial<OptionsGeneric<TModifier>>) => Instance;
|
||||
export declare const createPopper: <TModifier extends Partial<Modifier<any, any>>>(reference: Element | VirtualElement, popper: HTMLElement, options?: Partial<OptionsGeneric<TModifier>>) => Instance;
|
||||
export { detectOverflow };
|
||||
|
||||
9
conf/site/node_modules/@popperjs/core/lib/index.js
generated
vendored
9
conf/site/node_modules/@popperjs/core/lib/index.js
generated
vendored
@@ -9,6 +9,7 @@ import validateModifiers from "./utils/validateModifiers.js";
|
||||
import uniqueBy from "./utils/uniqueBy.js";
|
||||
import getBasePlacement from "./utils/getBasePlacement.js";
|
||||
import mergeByName from "./utils/mergeByName.js";
|
||||
import detectOverflow from "./utils/detectOverflow.js";
|
||||
import { isElement } from "./dom-utils/instanceOf.js";
|
||||
import { auto } from "./enums.js";
|
||||
export * from "./enums.js";
|
||||
@@ -48,7 +49,7 @@ export function popperGenerator(generatorOptions) {
|
||||
var state = {
|
||||
placement: 'bottom',
|
||||
orderedModifiers: [],
|
||||
options: Object.assign({}, DEFAULT_OPTIONS, {}, defaultOptions),
|
||||
options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),
|
||||
modifiersData: {},
|
||||
elements: {
|
||||
reference: reference,
|
||||
@@ -63,7 +64,7 @@ export function popperGenerator(generatorOptions) {
|
||||
state: state,
|
||||
setOptions: function setOptions(options) {
|
||||
cleanupModifierEffects();
|
||||
state.options = Object.assign({}, defaultOptions, {}, state.options, {}, options);
|
||||
state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);
|
||||
state.scrollParents = {
|
||||
reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
|
||||
popper: listScrollParents(popper)
|
||||
@@ -253,4 +254,6 @@ export function popperGenerator(generatorOptions) {
|
||||
return instance;
|
||||
};
|
||||
}
|
||||
export var createPopper = /*#__PURE__*/popperGenerator();
|
||||
export var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
export { detectOverflow };
|
||||
19
conf/site/node_modules/@popperjs/core/lib/index.js.flow
generated
vendored
19
conf/site/node_modules/@popperjs/core/lib/index.js.flow
generated
vendored
@@ -17,6 +17,7 @@ import validateModifiers from './utils/validateModifiers';
|
||||
import uniqueBy from './utils/uniqueBy';
|
||||
import getBasePlacement from './utils/getBasePlacement';
|
||||
import mergeByName from './utils/mergeByName';
|
||||
import detectOverflow from './utils/detectOverflow';
|
||||
import { isElement } from './dom-utils/instanceOf';
|
||||
import { auto } from './enums';
|
||||
|
||||
@@ -41,7 +42,8 @@ type PopperGeneratorArgs = {
|
||||
|
||||
function areValidElements(...args: Array<any>): boolean {
|
||||
return !args.some(
|
||||
element => !(element && typeof element.getBoundingClientRect === 'function')
|
||||
(element) =>
|
||||
!(element && typeof element.getBoundingClientRect === 'function')
|
||||
);
|
||||
}
|
||||
|
||||
@@ -100,7 +102,7 @@ export function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {
|
||||
);
|
||||
|
||||
// Strip out disabled modifiers
|
||||
state.orderedModifiers = orderedModifiers.filter(m => m.enabled);
|
||||
state.orderedModifiers = orderedModifiers.filter((m) => m.enabled);
|
||||
|
||||
// Validate the provided modifiers so that the consumer will get warned
|
||||
// if one of the modifiers is invalid for any reason
|
||||
@@ -137,7 +139,7 @@ export function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {
|
||||
// We no longer take into account `margins` on the popper, and it can
|
||||
// cause bugs with positioning, so we'll warn the consumer
|
||||
if (
|
||||
[marginTop, marginRight, marginBottom, marginLeft].some(margin =>
|
||||
[marginTop, marginRight, marginBottom, marginLeft].some((margin) =>
|
||||
parseFloat(margin)
|
||||
)
|
||||
) {
|
||||
@@ -203,7 +205,7 @@ export function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {
|
||||
// it doesn't persist and is fresh on each update.
|
||||
// To ensure persistent data, use `${name}#persistent`
|
||||
state.orderedModifiers.forEach(
|
||||
modifier =>
|
||||
(modifier) =>
|
||||
(state.modifiersData[modifier.name] = {
|
||||
...modifier.data,
|
||||
})
|
||||
@@ -237,7 +239,7 @@ export function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {
|
||||
// not necessary (debounced to run at most once-per-tick)
|
||||
update: debounce<$Shape<State>>(
|
||||
() =>
|
||||
new Promise<$Shape<State>>(resolve => {
|
||||
new Promise<$Shape<State>>((resolve) => {
|
||||
instance.forceUpdate();
|
||||
resolve(state);
|
||||
})
|
||||
@@ -256,7 +258,7 @@ export function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {
|
||||
return instance;
|
||||
}
|
||||
|
||||
instance.setOptions(options).then(state => {
|
||||
instance.setOptions(options).then((state) => {
|
||||
if (!isDestroyed && options.onFirstUpdate) {
|
||||
options.onFirstUpdate(state);
|
||||
}
|
||||
@@ -278,7 +280,7 @@ export function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {
|
||||
}
|
||||
|
||||
function cleanupModifierEffects() {
|
||||
effectCleanupFns.forEach(fn => fn());
|
||||
effectCleanupFns.forEach((fn) => fn());
|
||||
effectCleanupFns = [];
|
||||
}
|
||||
|
||||
@@ -287,3 +289,6 @@ export function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {
|
||||
}
|
||||
|
||||
export const createPopper = popperGenerator();
|
||||
|
||||
// eslint-disable-next-line import/no-unused-modules
|
||||
export { detectOverflow };
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/arrow.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/arrow.d.ts
generated
vendored
@@ -1,5 +1,5 @@
|
||||
import { Modifier, Padding } from "../types";
|
||||
declare type Options = {
|
||||
export declare type Options = {
|
||||
element: HTMLElement | string | null;
|
||||
padding: Padding;
|
||||
};
|
||||
|
||||
9
conf/site/node_modules/@popperjs/core/lib/modifiers/arrow.js
generated
vendored
9
conf/site/node_modules/@popperjs/core/lib/modifiers/arrow.js
generated
vendored
@@ -7,6 +7,7 @@ import within from "../utils/within.js";
|
||||
import mergePaddingObject from "../utils/mergePaddingObject.js";
|
||||
import expandToHashMap from "../utils/expandToHashMap.js";
|
||||
import { left, right, basePlacements, top, bottom } from "../enums.js";
|
||||
import { isHTMLElement } from "../dom-utils/instanceOf.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
function arrow(_ref) {
|
||||
var _state$modifiersData$;
|
||||
@@ -30,7 +31,7 @@ function arrow(_ref) {
|
||||
var maxProp = axis === 'y' ? bottom : right;
|
||||
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
|
||||
var startDiff = popperOffsets[axis] - state.rects.reference[axis];
|
||||
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
|
||||
var arrowOffsetParent = getOffsetParent(arrowElement);
|
||||
var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
|
||||
var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
|
||||
// outside of the popper bounds
|
||||
@@ -66,6 +67,12 @@ function effect(_ref2) {
|
||||
}
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
if (!isHTMLElement(arrowElement)) {
|
||||
console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));
|
||||
}
|
||||
}
|
||||
|
||||
if (!contains(state.elements.popper, arrowElement)) {
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' '));
|
||||
|
||||
19
conf/site/node_modules/@popperjs/core/lib/modifiers/arrow.js.flow
generated
vendored
19
conf/site/node_modules/@popperjs/core/lib/modifiers/arrow.js.flow
generated
vendored
@@ -9,8 +9,10 @@ import within from '../utils/within';
|
||||
import mergePaddingObject from '../utils/mergePaddingObject';
|
||||
import expandToHashMap from '../utils/expandToHashMap';
|
||||
import { left, right, basePlacements, top, bottom } from '../enums';
|
||||
import { isHTMLElement } from '../dom-utils/instanceOf';
|
||||
|
||||
type Options = {
|
||||
// eslint-disable-next-line import/no-unused-modules
|
||||
export type Options = {
|
||||
element: HTMLElement | string | null,
|
||||
padding: Padding,
|
||||
};
|
||||
@@ -39,8 +41,7 @@ function arrow({ state, name }: ModifierArguments<Options>) {
|
||||
state.rects.popper[len];
|
||||
const startDiff = popperOffsets[axis] - state.rects.reference[axis];
|
||||
|
||||
const arrowOffsetParent =
|
||||
state.elements.arrow && getOffsetParent(state.elements.arrow);
|
||||
const arrowOffsetParent = getOffsetParent(arrowElement);
|
||||
const clientSize = arrowOffsetParent
|
||||
? axis === 'y'
|
||||
? arrowOffsetParent.clientHeight || 0
|
||||
@@ -80,6 +81,18 @@ function effect({ state, options, name }: ModifierArguments<Options>) {
|
||||
}
|
||||
}
|
||||
|
||||
if (false) {
|
||||
if (!isHTMLElement(arrowElement)) {
|
||||
console.error(
|
||||
[
|
||||
'Popper: "arrow" element must be an HTMLElement (not an SVGElement).',
|
||||
'To use an SVG arrow, wrap it in an HTMLElement that will be used as',
|
||||
'the arrow.',
|
||||
].join(' ')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!contains(state.elements.popper, arrowElement)) {
|
||||
if (false) {
|
||||
console.error(
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/computeStyles.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/computeStyles.d.ts
generated
vendored
@@ -1,6 +1,6 @@
|
||||
import { PositioningStrategy, Modifier, Rect } from "../types";
|
||||
import { BasePlacement } from "../enums";
|
||||
declare type Options = {
|
||||
export declare type Options = {
|
||||
gpuAcceleration: boolean;
|
||||
adaptive: boolean;
|
||||
};
|
||||
|
||||
13
conf/site/node_modules/@popperjs/core/lib/modifiers/computeStyles.js
generated
vendored
13
conf/site/node_modules/@popperjs/core/lib/modifiers/computeStyles.js
generated
vendored
@@ -3,7 +3,8 @@ import getOffsetParent from "../dom-utils/getOffsetParent.js";
|
||||
import getWindow from "../dom-utils/getWindow.js";
|
||||
import getDocumentElement from "../dom-utils/getDocumentElement.js";
|
||||
import getComputedStyle from "../dom-utils/getComputedStyle.js";
|
||||
import getBasePlacement from "../utils/getBasePlacement.js";
|
||||
import getBasePlacement from "../utils/getBasePlacement.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
var unsetSides = {
|
||||
top: 'auto',
|
||||
right: 'auto',
|
||||
@@ -75,10 +76,10 @@ export function mapToStyles(_ref2) {
|
||||
if (gpuAcceleration) {
|
||||
var _Object$assign;
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
|
||||
}
|
||||
|
||||
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
|
||||
}
|
||||
|
||||
function computeStyles(_ref3) {
|
||||
@@ -107,7 +108,7 @@ function computeStyles(_ref3) {
|
||||
};
|
||||
|
||||
if (state.modifiersData.popperOffsets != null) {
|
||||
state.styles.popper = Object.assign({}, state.styles.popper, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.popperOffsets,
|
||||
position: state.options.strategy,
|
||||
adaptive: adaptive
|
||||
@@ -115,14 +116,14 @@ function computeStyles(_ref3) {
|
||||
}
|
||||
|
||||
if (state.modifiersData.arrow != null) {
|
||||
state.styles.arrow = Object.assign({}, state.styles.arrow, {}, mapToStyles(Object.assign({}, commonStyles, {
|
||||
state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {
|
||||
offsets: state.modifiersData.arrow,
|
||||
position: 'absolute',
|
||||
adaptive: false
|
||||
})));
|
||||
}
|
||||
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-placement': state.placement
|
||||
});
|
||||
} // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
3
conf/site/node_modules/@popperjs/core/lib/modifiers/computeStyles.js.flow
generated
vendored
3
conf/site/node_modules/@popperjs/core/lib/modifiers/computeStyles.js.flow
generated
vendored
@@ -14,7 +14,8 @@ import getDocumentElement from '../dom-utils/getDocumentElement';
|
||||
import getComputedStyle from '../dom-utils/getComputedStyle';
|
||||
import getBasePlacement from '../utils/getBasePlacement';
|
||||
|
||||
type Options = {
|
||||
// eslint-disable-next-line import/no-unused-modules
|
||||
export type Options = {
|
||||
gpuAcceleration: boolean,
|
||||
adaptive: boolean,
|
||||
};
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/eventListeners.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/eventListeners.d.ts
generated
vendored
@@ -1,5 +1,5 @@
|
||||
import { Modifier } from "../types";
|
||||
declare type Options = {
|
||||
export declare type Options = {
|
||||
scroll: boolean;
|
||||
resize: boolean;
|
||||
};
|
||||
|
||||
3
conf/site/node_modules/@popperjs/core/lib/modifiers/eventListeners.js
generated
vendored
3
conf/site/node_modules/@popperjs/core/lib/modifiers/eventListeners.js
generated
vendored
@@ -1,4 +1,5 @@
|
||||
import getWindow from "../dom-utils/getWindow.js";
|
||||
import getWindow from "../dom-utils/getWindow.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
var passive = {
|
||||
passive: true
|
||||
};
|
||||
|
||||
3
conf/site/node_modules/@popperjs/core/lib/modifiers/eventListeners.js.flow
generated
vendored
3
conf/site/node_modules/@popperjs/core/lib/modifiers/eventListeners.js.flow
generated
vendored
@@ -2,7 +2,8 @@
|
||||
import type { ModifierArguments, Modifier } from '../types';
|
||||
import getWindow from '../dom-utils/getWindow';
|
||||
|
||||
type Options = {
|
||||
// eslint-disable-next-line import/no-unused-modules
|
||||
export type Options = {
|
||||
scroll: boolean,
|
||||
resize: boolean,
|
||||
};
|
||||
|
||||
4
conf/site/node_modules/@popperjs/core/lib/modifiers/flip.d.ts
generated
vendored
4
conf/site/node_modules/@popperjs/core/lib/modifiers/flip.d.ts
generated
vendored
@@ -1,6 +1,8 @@
|
||||
import { Placement, Boundary, RootBoundary } from "../enums";
|
||||
import { Modifier, Padding } from "../types";
|
||||
declare type Options = {
|
||||
export declare type Options = {
|
||||
mainAxis: boolean;
|
||||
altAxis: boolean;
|
||||
fallbackPlacements: Array<Placement>;
|
||||
padding: Padding;
|
||||
boundary: Boundary;
|
||||
|
||||
18
conf/site/node_modules/@popperjs/core/lib/modifiers/flip.js
generated
vendored
18
conf/site/node_modules/@popperjs/core/lib/modifiers/flip.js
generated
vendored
@@ -4,7 +4,7 @@ import getOppositeVariationPlacement from "../utils/getOppositeVariationPlacemen
|
||||
import detectOverflow from "../utils/detectOverflow.js";
|
||||
import computeAutoPlacement from "../utils/computeAutoPlacement.js";
|
||||
import { bottom, top, start, right, left, auto } from "../enums.js";
|
||||
import getVariation from "../utils/getVariation.js";
|
||||
import getVariation from "../utils/getVariation.js"; // eslint-disable-next-line import/no-unused-modules
|
||||
|
||||
function getExpandedFallbackPlacements(placement) {
|
||||
if (getBasePlacement(placement) === auto) {
|
||||
@@ -24,7 +24,11 @@ function flip(_ref) {
|
||||
return;
|
||||
}
|
||||
|
||||
var specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
var _options$mainAxis = options.mainAxis,
|
||||
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
|
||||
_options$altAxis = options.altAxis,
|
||||
checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
|
||||
specifiedFallbackPlacements = options.fallbackPlacements,
|
||||
padding = options.padding,
|
||||
boundary = options.boundary,
|
||||
rootBoundary = options.rootBoundary,
|
||||
@@ -74,7 +78,15 @@ function flip(_ref) {
|
||||
}
|
||||
|
||||
var altVariationSide = getOppositePlacement(mainVariationSide);
|
||||
var checks = [overflow[_basePlacement] <= 0, overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0];
|
||||
var checks = [];
|
||||
|
||||
if (checkMainAxis) {
|
||||
checks.push(overflow[_basePlacement] <= 0);
|
||||
}
|
||||
|
||||
if (checkAltAxis) {
|
||||
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
|
||||
}
|
||||
|
||||
if (checks.every(function (check) {
|
||||
return check;
|
||||
|
||||
30
conf/site/node_modules/@popperjs/core/lib/modifiers/flip.js.flow
generated
vendored
30
conf/site/node_modules/@popperjs/core/lib/modifiers/flip.js.flow
generated
vendored
@@ -9,7 +9,10 @@ import computeAutoPlacement from '../utils/computeAutoPlacement';
|
||||
import { bottom, top, start, right, left, auto } from '../enums';
|
||||
import getVariation from '../utils/getVariation';
|
||||
|
||||
type Options = {
|
||||
// eslint-disable-next-line import/no-unused-modules
|
||||
export type Options = {
|
||||
mainAxis: boolean,
|
||||
altAxis: boolean,
|
||||
fallbackPlacements: Array<Placement>,
|
||||
padding: Padding,
|
||||
boundary: Boundary,
|
||||
@@ -39,6 +42,8 @@ function flip({ state, options, name }: ModifierArguments<Options>) {
|
||||
}
|
||||
|
||||
const {
|
||||
mainAxis: checkMainAxis = true,
|
||||
altAxis: checkAltAxis = true,
|
||||
fallbackPlacements: specifiedFallbackPlacements,
|
||||
padding,
|
||||
boundary,
|
||||
@@ -112,13 +117,20 @@ function flip({ state, options, name }: ModifierArguments<Options>) {
|
||||
|
||||
const altVariationSide: any = getOppositePlacement(mainVariationSide);
|
||||
|
||||
const checks = [
|
||||
overflow[basePlacement] <= 0,
|
||||
overflow[mainVariationSide] <= 0,
|
||||
overflow[altVariationSide] <= 0,
|
||||
];
|
||||
const checks = [];
|
||||
|
||||
if (checks.every(check => check)) {
|
||||
if (checkMainAxis) {
|
||||
checks.push(overflow[basePlacement] <= 0);
|
||||
}
|
||||
|
||||
if (checkAltAxis) {
|
||||
checks.push(
|
||||
overflow[mainVariationSide] <= 0,
|
||||
overflow[altVariationSide] <= 0
|
||||
);
|
||||
}
|
||||
|
||||
if (checks.every((check) => check)) {
|
||||
firstFittingPlacement = placement;
|
||||
makeFallbackChecks = false;
|
||||
break;
|
||||
@@ -132,10 +144,10 @@ function flip({ state, options, name }: ModifierArguments<Options>) {
|
||||
const numberOfChecks = flipVariations ? 3 : 1;
|
||||
|
||||
for (let i = numberOfChecks; i > 0; i--) {
|
||||
const fittingPlacement = placements.find(placement => {
|
||||
const fittingPlacement = placements.find((placement) => {
|
||||
const checks = checksMap.get(placement);
|
||||
if (checks) {
|
||||
return checks.slice(0, i).every(check => check);
|
||||
return checks.slice(0, i).every((check) => check);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/hide.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/hide.js
generated
vendored
@@ -45,7 +45,7 @@ function hide(_ref) {
|
||||
isReferenceHidden: isReferenceHidden,
|
||||
hasPopperEscaped: hasPopperEscaped
|
||||
};
|
||||
state.attributes.popper = Object.assign({}, state.attributes.popper, {
|
||||
state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {
|
||||
'data-popper-reference-hidden': isReferenceHidden,
|
||||
'data-popper-escaped': hasPopperEscaped
|
||||
});
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/hide.js.flow
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/hide.js.flow
generated
vendored
@@ -23,7 +23,7 @@ function getSideOffsets(
|
||||
}
|
||||
|
||||
function isAnySideFullyClipped(overflow: SideObject): boolean {
|
||||
return [top, right, bottom, left].some(side => overflow[side] >= 0);
|
||||
return [top, right, bottom, left].some((side) => overflow[side] >= 0);
|
||||
}
|
||||
|
||||
function hide({ state, name }: ModifierArguments<{||}>) {
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/offset.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/offset.d.ts
generated
vendored
@@ -6,7 +6,7 @@ declare type OffsetsFunction = (arg0: {
|
||||
placement: Placement;
|
||||
}) => [number | null | undefined, number | null | undefined];
|
||||
declare type Offset = OffsetsFunction | [number | null | undefined, number | null | undefined];
|
||||
declare type Options = {
|
||||
export declare type Options = {
|
||||
offset: Offset;
|
||||
};
|
||||
export declare function distanceAndSkiddingToXY(placement: Placement, rects: {
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/offset.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/offset.js
generated
vendored
@@ -4,7 +4,7 @@ export function distanceAndSkiddingToXY(placement, rects, offset) {
|
||||
var basePlacement = getBasePlacement(placement);
|
||||
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
|
||||
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
|
||||
var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {
|
||||
placement: placement
|
||||
})) : offset,
|
||||
skidding = _ref[0],
|
||||
|
||||
3
conf/site/node_modules/@popperjs/core/lib/modifiers/offset.js.flow
generated
vendored
3
conf/site/node_modules/@popperjs/core/lib/modifiers/offset.js.flow
generated
vendored
@@ -12,7 +12,8 @@ type OffsetsFunction = ({
|
||||
|
||||
type Offset = OffsetsFunction | [?number, ?number];
|
||||
|
||||
type Options = {
|
||||
// eslint-disable-next-line import/no-unused-modules
|
||||
export type Options = {
|
||||
offset: Offset,
|
||||
};
|
||||
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/preventOverflow.d.ts
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/preventOverflow.d.ts
generated
vendored
@@ -5,7 +5,7 @@ declare type TetherOffset = (arg0: {
|
||||
reference: Rect;
|
||||
placement: Placement;
|
||||
}) => number | number;
|
||||
declare type Options = {
|
||||
export declare type Options = {
|
||||
mainAxis: boolean;
|
||||
altAxis: boolean;
|
||||
boundary: Boundary;
|
||||
|
||||
2
conf/site/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
generated
vendored
2
conf/site/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
generated
vendored
@@ -39,7 +39,7 @@ function preventOverflow(_ref) {
|
||||
var popperOffsets = state.modifiersData.popperOffsets;
|
||||
var referenceRect = state.rects.reference;
|
||||
var popperRect = state.rects.popper;
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
|
||||
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {
|
||||
placement: state.placement
|
||||
})) : tetherOffset;
|
||||
var data = {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user