diff --git a/.gitignore b/.gitignore
index 1127ce4..084826b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,16 +3,9 @@
!*template*
*test*
-# Ignore VS Code settings
-/.vscode
-
-# Ignore node_modules and settings in dev-insights-auth-server
-/dev-insights-auth-server/node_modules
-/dev-insights-auth-server/settings.json
-
-# Ignore pnpm related files in dev-insights
-/dev-insights/node_modules/.pnpm/
-/dev-insights/node_modules/.modules.yaml
+# Ignore node_modules and settings
+*/node_modules
+*/settings.json
# Ignore lock files
**/package-lock.json
diff --git a/dev-insights-auth-server/app.js b/dev-insights-auth-server/app.js
deleted file mode 100644
index d139e7d..0000000
--- a/dev-insights-auth-server/app.js
+++ /dev/null
@@ -1,98 +0,0 @@
-// Imports
-import fs from 'fs';
-import cors from 'cors';
-import express from 'express';
-
-// Load settings from settings.json
-const settings = JSON.parse(fs.readFileSync('settings.json', 'utf8'));
-
-// Initialize Express app
-let app = express();
-
-// Enable CORS
-app.use(cors());
-
-// Define authentication route
-app.get(
- '/authenticate/:mode',
- cors({
- origin: [
- settings.dev.authenticationURL,
- settings.production.authenticationURL
- ],
- methods: ['POST'],
- credentials: true
- }),
- async (request, response) => {
- try {
- // Determine mode (default to 'production')
- let mode = request.params.mode || 'production';
-
- // Handle error query parameter
- if (request.query.error) {
- response.redirect(
- `${settings[mode].redirectURL}?error=${request.query.error}`
- );
- return;
- }
-
- // Extract code query parameter
- /** @type {string} */
- let code;
- if (typeof request.query.code === 'string') {
- code = request.query.code;
- } else {
- code = '';
- }
-
- // Prepare parameters for GitHub OAuth
- const params = new URLSearchParams({
- client_id: settings[mode].clientId,
- client_secret: settings[mode].clientSecret,
- code: code,
- redirect_uri: settings[mode].authenticationURL
- }).toString();
-
- // Request access token from GitHub
- let authenticationResponse = await fetch(
- `https://github.com/login/oauth/access_token?${params}`,
- {
- method: 'POST',
- headers: {
- Accept: 'application/json'
- }
- }
- );
-
- // Parse authentication response
- let authentication = await authenticationResponse.json();
-
- // Handle authentication error
- if (authentication.error) {
- let params = new URLSearchParams(authentication);
-
- response.redirect(
- `${settings[mode].redirectURL}?error=${params.toString()}`
- );
- return;
- }
-
- // Redirect with access token
- response.redirect(
- `${settings[mode].redirectURL}?token=${authentication.access_token}`
- );
- } catch (error) {
- // Handle unexpected errors
- let mode = request.params.mode || 'production';
-
- response.redirect(
- `${settings[mode].redirectURL}?error=${error.message}`
- );
- }
- }
-);
-
-// Start the server
-app.listen(settings.port, () => {
- console.log(`Listening on port ${settings.port}`);
-});
diff --git a/dev-insights-auth-server/package.json b/dev-insights-auth-server/package.json
deleted file mode 100644
index 531b2e5..0000000
--- a/dev-insights-auth-server/package.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "dev-insights-auth-server",
- "version": "1.0.0",
- "description": "",
- "main": "app.js",
- "type": "module",
- "scripts": {
- "start": "node app",
- "dev": "nodemon app"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "cors": "^2.8.5",
- "express": "^4.19.2"
- },
- "devDependencies": {
- "nodemon": "^3.1.4"
- }
-}
diff --git a/dev-insights-auth-server/pnpm-lock.yaml b/dev-insights-auth-server/pnpm-lock.yaml
deleted file mode 100644
index 77c838c..0000000
--- a/dev-insights-auth-server/pnpm-lock.yaml
+++ /dev/null
@@ -1,795 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- cors:
- specifier: ^2.8.5
- version: 2.8.5
- express:
- specifier: ^4.19.2
- version: 4.19.2
- devDependencies:
- nodemon:
- specifier: ^3.1.4
- version: 3.1.4
-
-packages:
-
- accepts@1.3.8:
- resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
- engines: {node: '>= 0.6'}
-
- anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
-
- array-flatten@1.1.1:
- resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
-
- body-parser@1.20.2:
- resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
-
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- bytes@3.1.2:
- resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
- engines: {node: '>= 0.8'}
-
- call-bind@1.0.7:
- resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
- engines: {node: '>= 0.4'}
-
- chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- content-disposition@0.5.4:
- resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
- engines: {node: '>= 0.6'}
-
- content-type@1.0.5:
- resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
- engines: {node: '>= 0.6'}
-
- cookie-signature@1.0.6:
- resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
-
- cookie@0.6.0:
- resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
- engines: {node: '>= 0.6'}
-
- cors@2.8.5:
- resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
- engines: {node: '>= 0.10'}
-
- debug@2.6.9:
- resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- debug@4.3.6:
- resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- define-data-property@1.1.4:
- resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
- engines: {node: '>= 0.4'}
-
- depd@2.0.0:
- resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
- engines: {node: '>= 0.8'}
-
- destroy@1.2.0:
- resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
- engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
-
- ee-first@1.1.1:
- resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
-
- encodeurl@1.0.2:
- resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
- engines: {node: '>= 0.8'}
-
- es-define-property@1.0.0:
- resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- escape-html@1.0.3:
- resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
-
- etag@1.8.1:
- resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
- engines: {node: '>= 0.6'}
-
- express@4.19.2:
- resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
- engines: {node: '>= 0.10.0'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- finalhandler@1.2.0:
- resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
- engines: {node: '>= 0.8'}
-
- forwarded@0.2.0:
- resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
- engines: {node: '>= 0.6'}
-
- fresh@0.5.2:
- resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
- engines: {node: '>= 0.6'}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- get-intrinsic@1.2.4:
- resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
- engines: {node: '>= 0.4'}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
-
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
- has-property-descriptors@1.0.2:
- resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
- has-proto@1.0.3:
- resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
-
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- http-errors@2.0.0:
- resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
- engines: {node: '>= 0.8'}
-
- iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
-
- ignore-by-default@1.0.1:
- resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
-
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- ipaddr.js@1.9.1:
- resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
- engines: {node: '>= 0.10'}
-
- is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- media-typer@0.3.0:
- resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
- engines: {node: '>= 0.6'}
-
- merge-descriptors@1.0.1:
- resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
-
- methods@1.1.2:
- resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
- engines: {node: '>= 0.6'}
-
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
- mime@1.6.0:
- resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
- engines: {node: '>=4'}
- hasBin: true
-
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-
- ms@2.0.0:
- resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
-
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- negotiator@0.6.3:
- resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
- engines: {node: '>= 0.6'}
-
- nodemon@3.1.4:
- resolution: {integrity: sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==}
- engines: {node: '>=10'}
- hasBin: true
-
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
-
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- object-inspect@1.13.2:
- resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
- engines: {node: '>= 0.4'}
-
- on-finished@2.4.1:
- resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
- engines: {node: '>= 0.8'}
-
- parseurl@1.3.3:
- resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
- engines: {node: '>= 0.8'}
-
- path-to-regexp@0.1.7:
- resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- proxy-addr@2.0.7:
- resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
- engines: {node: '>= 0.10'}
-
- pstree.remy@1.1.8:
- resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
-
- qs@6.11.0:
- resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
- engines: {node: '>=0.6'}
-
- range-parser@1.2.1:
- resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
- engines: {node: '>= 0.6'}
-
- raw-body@2.5.2:
- resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
- engines: {node: '>= 0.8'}
-
- readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
-
- safe-buffer@5.2.1:
- resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
-
- safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-
- semver@7.6.3:
- resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
- engines: {node: '>=10'}
- hasBin: true
-
- send@0.18.0:
- resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
- engines: {node: '>= 0.8.0'}
-
- serve-static@1.15.0:
- resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
- engines: {node: '>= 0.8.0'}
-
- set-function-length@1.2.2:
- resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
- engines: {node: '>= 0.4'}
-
- setprototypeof@1.2.0:
- resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
-
- side-channel@1.0.6:
- resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
- engines: {node: '>= 0.4'}
-
- simple-update-notifier@2.0.0:
- resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==}
- engines: {node: '>=10'}
-
- statuses@2.0.1:
- resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
- engines: {node: '>= 0.8'}
-
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- toidentifier@1.0.1:
- resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
- engines: {node: '>=0.6'}
-
- touch@3.1.1:
- resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
- hasBin: true
-
- type-is@1.6.18:
- resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
- engines: {node: '>= 0.6'}
-
- undefsafe@2.0.5:
- resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
-
- unpipe@1.0.0:
- resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
- engines: {node: '>= 0.8'}
-
- utils-merge@1.0.1:
- resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
- engines: {node: '>= 0.4.0'}
-
- vary@1.1.2:
- resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
- engines: {node: '>= 0.8'}
-
-snapshots:
-
- accepts@1.3.8:
- dependencies:
- mime-types: 2.1.35
- negotiator: 0.6.3
-
- anymatch@3.1.3:
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.1
-
- array-flatten@1.1.1: {}
-
- balanced-match@1.0.2: {}
-
- binary-extensions@2.3.0: {}
-
- body-parser@1.20.2:
- dependencies:
- bytes: 3.1.2
- content-type: 1.0.5
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
- http-errors: 2.0.0
- iconv-lite: 0.4.24
- on-finished: 2.4.1
- qs: 6.11.0
- raw-body: 2.5.2
- type-is: 1.6.18
- unpipe: 1.0.0
- transitivePeerDependencies:
- - supports-color
-
- brace-expansion@1.1.11:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- bytes@3.1.2: {}
-
- call-bind@1.0.7:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- set-function-length: 1.2.2
-
- chokidar@3.6.0:
- dependencies:
- anymatch: 3.1.3
- braces: 3.0.3
- glob-parent: 5.1.2
- is-binary-path: 2.1.0
- is-glob: 4.0.3
- normalize-path: 3.0.0
- readdirp: 3.6.0
- optionalDependencies:
- fsevents: 2.3.3
-
- concat-map@0.0.1: {}
-
- content-disposition@0.5.4:
- dependencies:
- safe-buffer: 5.2.1
-
- content-type@1.0.5: {}
-
- cookie-signature@1.0.6: {}
-
- cookie@0.6.0: {}
-
- cors@2.8.5:
- dependencies:
- object-assign: 4.1.1
- vary: 1.1.2
-
- debug@2.6.9:
- dependencies:
- ms: 2.0.0
-
- debug@4.3.6(supports-color@5.5.0):
- dependencies:
- ms: 2.1.2
- optionalDependencies:
- supports-color: 5.5.0
-
- define-data-property@1.1.4:
- dependencies:
- es-define-property: 1.0.0
- es-errors: 1.3.0
- gopd: 1.0.1
-
- depd@2.0.0: {}
-
- destroy@1.2.0: {}
-
- ee-first@1.1.1: {}
-
- encodeurl@1.0.2: {}
-
- es-define-property@1.0.0:
- dependencies:
- get-intrinsic: 1.2.4
-
- es-errors@1.3.0: {}
-
- escape-html@1.0.3: {}
-
- etag@1.8.1: {}
-
- express@4.19.2:
- dependencies:
- accepts: 1.3.8
- array-flatten: 1.1.1
- body-parser: 1.20.2
- content-disposition: 0.5.4
- content-type: 1.0.5
- cookie: 0.6.0
- cookie-signature: 1.0.6
- debug: 2.6.9
- depd: 2.0.0
- encodeurl: 1.0.2
- escape-html: 1.0.3
- etag: 1.8.1
- finalhandler: 1.2.0
- fresh: 0.5.2
- http-errors: 2.0.0
- merge-descriptors: 1.0.1
- methods: 1.1.2
- on-finished: 2.4.1
- parseurl: 1.3.3
- path-to-regexp: 0.1.7
- proxy-addr: 2.0.7
- qs: 6.11.0
- range-parser: 1.2.1
- safe-buffer: 5.2.1
- send: 0.18.0
- serve-static: 1.15.0
- setprototypeof: 1.2.0
- statuses: 2.0.1
- type-is: 1.6.18
- utils-merge: 1.0.1
- vary: 1.1.2
- transitivePeerDependencies:
- - supports-color
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- finalhandler@1.2.0:
- dependencies:
- debug: 2.6.9
- encodeurl: 1.0.2
- escape-html: 1.0.3
- on-finished: 2.4.1
- parseurl: 1.3.3
- statuses: 2.0.1
- unpipe: 1.0.0
- transitivePeerDependencies:
- - supports-color
-
- forwarded@0.2.0: {}
-
- fresh@0.5.2: {}
-
- fsevents@2.3.3:
- optional: true
-
- function-bind@1.1.2: {}
-
- get-intrinsic@1.2.4:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- gopd@1.0.1:
- dependencies:
- get-intrinsic: 1.2.4
-
- has-flag@3.0.0: {}
-
- has-property-descriptors@1.0.2:
- dependencies:
- es-define-property: 1.0.0
-
- has-proto@1.0.3: {}
-
- has-symbols@1.0.3: {}
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- http-errors@2.0.0:
- dependencies:
- depd: 2.0.0
- inherits: 2.0.4
- setprototypeof: 1.2.0
- statuses: 2.0.1
- toidentifier: 1.0.1
-
- iconv-lite@0.4.24:
- dependencies:
- safer-buffer: 2.1.2
-
- ignore-by-default@1.0.1: {}
-
- inherits@2.0.4: {}
-
- ipaddr.js@1.9.1: {}
-
- is-binary-path@2.1.0:
- dependencies:
- binary-extensions: 2.3.0
-
- is-extglob@2.1.1: {}
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-number@7.0.0: {}
-
- media-typer@0.3.0: {}
-
- merge-descriptors@1.0.1: {}
-
- methods@1.1.2: {}
-
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
- mime@1.6.0: {}
-
- minimatch@3.1.2:
- dependencies:
- brace-expansion: 1.1.11
-
- ms@2.0.0: {}
-
- ms@2.1.2: {}
-
- ms@2.1.3: {}
-
- negotiator@0.6.3: {}
-
- nodemon@3.1.4:
- dependencies:
- chokidar: 3.6.0
- debug: 4.3.6(supports-color@5.5.0)
- ignore-by-default: 1.0.1
- minimatch: 3.1.2
- pstree.remy: 1.1.8
- semver: 7.6.3
- simple-update-notifier: 2.0.0
- supports-color: 5.5.0
- touch: 3.1.1
- undefsafe: 2.0.5
-
- normalize-path@3.0.0: {}
-
- object-assign@4.1.1: {}
-
- object-inspect@1.13.2: {}
-
- on-finished@2.4.1:
- dependencies:
- ee-first: 1.1.1
-
- parseurl@1.3.3: {}
-
- path-to-regexp@0.1.7: {}
-
- picomatch@2.3.1: {}
-
- proxy-addr@2.0.7:
- dependencies:
- forwarded: 0.2.0
- ipaddr.js: 1.9.1
-
- pstree.remy@1.1.8: {}
-
- qs@6.11.0:
- dependencies:
- side-channel: 1.0.6
-
- range-parser@1.2.1: {}
-
- raw-body@2.5.2:
- dependencies:
- bytes: 3.1.2
- http-errors: 2.0.0
- iconv-lite: 0.4.24
- unpipe: 1.0.0
-
- readdirp@3.6.0:
- dependencies:
- picomatch: 2.3.1
-
- safe-buffer@5.2.1: {}
-
- safer-buffer@2.1.2: {}
-
- semver@7.6.3: {}
-
- send@0.18.0:
- dependencies:
- debug: 2.6.9
- depd: 2.0.0
- destroy: 1.2.0
- encodeurl: 1.0.2
- escape-html: 1.0.3
- etag: 1.8.1
- fresh: 0.5.2
- http-errors: 2.0.0
- mime: 1.6.0
- ms: 2.1.3
- on-finished: 2.4.1
- range-parser: 1.2.1
- statuses: 2.0.1
- transitivePeerDependencies:
- - supports-color
-
- serve-static@1.15.0:
- dependencies:
- encodeurl: 1.0.2
- escape-html: 1.0.3
- parseurl: 1.3.3
- send: 0.18.0
- transitivePeerDependencies:
- - supports-color
-
- set-function-length@1.2.2:
- dependencies:
- define-data-property: 1.1.4
- es-errors: 1.3.0
- function-bind: 1.1.2
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
-
- setprototypeof@1.2.0: {}
-
- side-channel@1.0.6:
- dependencies:
- call-bind: 1.0.7
- es-errors: 1.3.0
- get-intrinsic: 1.2.4
- object-inspect: 1.13.2
-
- simple-update-notifier@2.0.0:
- dependencies:
- semver: 7.6.3
-
- statuses@2.0.1: {}
-
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- toidentifier@1.0.1: {}
-
- touch@3.1.1: {}
-
- type-is@1.6.18:
- dependencies:
- media-typer: 0.3.0
- mime-types: 2.1.35
-
- undefsafe@2.0.5: {}
-
- unpipe@1.0.0: {}
-
- utils-merge@1.0.1: {}
-
- vary@1.1.2: {}
diff --git a/dev-insights-auth-server/settings-template.json b/dev-insights-auth-server/settings-template.json
deleted file mode 100644
index ffe5ddc..0000000
--- a/dev-insights-auth-server/settings-template.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "port": 3000,
- "production": {
- "clientId": "",
- "clientSecret": "",
- "authenticationURL": "",
- "redirectURL": ""
- },
- "dev": {
- "clientId": "",
- "clientSecret": "",
- "authenticationURL": "",
- "redirectURL": ""
- }
-}
diff --git a/dev-insights/icons/github-mark-white.svg b/dev-insights/icons/github-mark-white.svg
deleted file mode 100644
index d5e6491..0000000
--- a/dev-insights/icons/github-mark-white.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/dev-insights/icons/github-mark.svg b/dev-insights/icons/github-mark.svg
deleted file mode 100644
index 37fa923..0000000
--- a/dev-insights/icons/github-mark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/dev-insights/index.html b/dev-insights/index.html
deleted file mode 100644
index 15a8f3f..0000000
--- a/dev-insights/index.html
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
- Dev Insights
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Dev Insights
-
-
-
-
-
-
-
-
-
-
Login
-
-
-
-
-
-
-
-
-
-
-
diff --git a/dev-insights/js/script.js b/dev-insights/js/script.js
deleted file mode 100644
index 0545614..0000000
--- a/dev-insights/js/script.js
+++ /dev/null
@@ -1,800 +0,0 @@
-// Imports
-/** @type {import('../node_modules/tom-select/dist/js/tom-select.complete.min.js')} */
-const TomSelect = window['TomSelect'];
-/** @type {import('../node_modules/@floating-ui/dom/dist/floating-ui.dom.d.ts')} */
-const FloatingUIDOM = window['FloatingUIDOM'];
-/** @type {import('../node_modules/lucide/dist/lucide.d.ts')} */
-const lucide = window['lucide'];
-
-// Types
-/**
- * Represents a response from the GitHub API.
- * @typedef {Object} APIResponse
- * @property {Headers} headers - The headers of the response.
- * @property {boolean} ok - Indicates if the response was successful.
- * @property {boolean} redirected - Indicates if the response was redirected.
- * @property {number} status - The status code of the response.
- * @property {string} statusText - The status message of the response.
- * @property {string} type - The type of the response.
- * @property {string} url - The URL of the response.
- * @property {Object} data - The data of the response.
- */
-
-/**
- * @typedef {Object} Repo
- * @property {string} name - The name of the repository.
- * @property {string} period - The period for which the statistics are displayed.
- * @property {string} defaultBranch - The default branch of the repository.
- * @property {string[]} branches - An array of branch names.
- * @property {string[]} contributors - An array of contributors.
- * @property {string[]} issues - An array of issues.
- * @property {string[]} commits - An array of commits.
- * @property {string[]} pullRequests - An array of pull requests.
-*/
-
-/**
- * @typedef {Object} CurrentUser
- * @property {string} username - The username of the current user.
- * @property {string} name - The name of the current user.
- * @property {string} avatar - The avatar URL of the current user.
- * @property {string} token - The authentication token of the current user.
- */
-
-// Constants
-const MODE = 'dev';
-const MODES = {
- production: {
- authenticationURL: 'http://129.80.106.196:3000/authenticate/production'
- },
- dev: {
- authenticationURL: 'http://129.80.106.196:3000/authenticate/dev'
- }
-};
-
-// functions
-/**
- * Updates the DOM element representing a tree structure.
- *
- * This function clears the current content of the `tree` element and then iterates over the `stats` object.
- * For each entry in `stats`, it creates a new branch element using the `makeBranch` function and appends it to the `tree` element.
- *
- * @function updateTree
- *
- * @returns {void}
- */
-function updateTree() {
- statsTree.innerHTML = '';
-
- for (let [name, branch] of Object.entries(stats)) {
- statsTree.appendChild(makeBranch(branch, name));
- }
-}
-
-/**
- * Creates a tree structure for a branch and its sub-branches.
- *
- * This function generates a nested list item (``) representing a branch and its sub-branches.
- * It recursively processes each sub-branch and appends them to the main branch element.
- * The branch element includes a summary with an icon, branch name, and statistics.
- *
- * @function makeBranch
- *
- * @param {Object} branch - The branch object containing sub-branches and their values.
- * @param {string} name - The name of the branch.
- * @returns {HTMLElement} The tree item element representing the branch.
- */
-function makeBranch(branch, name) {
- let treeItem = document.createElement('li');
- treeItem.classList.add('tree-item');
-
- let branchElement = document.createElement('details');
- branchElement.classList.add('branch');
-
- let branchSummary = document.createElement('summary');
- branchSummary.classList.add('branch-summary');
-
- let icon = document.createElement('i');
- icon.classList.add('icon');
- icon.setAttribute('data-lucide', 'chevron-right');
-
- branchSummary.appendChild(icon);
-
- let branchName = document.createElement('span');
- branchName.classList.add('branch-name');
- branchName.textContent = name;
- branchSummary.appendChild(branchName);
-
- let statValue = document.createElement('span');
- statValue.classList.add('stat-value');
- statValue.textContent = `(${branch.total})`;
- branchSummary.appendChild(statValue);
-
- branchElement.appendChild(branchSummary);
-
- let branchList = document.createElement('ul');
- branchList.classList.add('branch-list');
-
- for (let [key, value] of Object.entries(branch.values)) {
- if (typeof value === 'object' && !Array.isArray(value)) {
- branchList.appendChild(makeBranch(value, `${key} `));
- } else {
- let treeItem = document.createElement('li');
- treeItem.classList.add('tree-item');
- treeItem.textContent = key;
-
- let statValue = document.createElement('span');
- statValue.classList.add('stat-value');
- statValue.textContent = `(${value})`;
- treeItem.appendChild(statValue);
-
- branchList.appendChild(treeItem);
- }
- }
-
- branchElement.appendChild(branchList);
- treeItem.appendChild(branchElement);
-
- return treeItem;
-}
-
-/**
- * Resets the repository-related UI elements and data structures.
- *
- * This function hides the repository link, clears and disables branch and period selectors,
- * and resets the repository and statistics objects to their initial empty states.
- *
- * @function clearRepo
- *
- * @returns {void}
- */
-function clearRepo() {
- repoLink.classList.add('hidden');
- repoLink.href = '';
-
- branchSelect.clear();
- branchSelect.clearOptions();
- branchSelect.disable();
- periodSelect.disable();
-
- repo = {
- name: '',
- period: '',
- defaultBranch: '',
- branches: [],
- contributors: [],
- issues: [],
- commits: [],
- pullRequests: []
- };
-
- stats = {};
-}
-
-/**
- * Toggles the enabled/disabled state of settings inputs.
- *
- * This function selects all input and select elements within elements with the class `setting`,
- * excluding the element with the ID `repo-input`. It then sets the `disabled` property of these elements
- * based on the `disable` parameter.
- *
- * @function toggleSettings
- *
- * @param {boolean} disable - A boolean value indicating whether to disable (true) or enable (false) the settings inputs.
- *
- * @returns {void}
- */
-function toggleSettings(disable) {
- /**@type {NodeListOf} */
- let settingInputs = document.querySelectorAll(
- '.setting input:not(#repo-input), .setting select'
- );
-
- for (let settingInput of settingInputs) {
- settingInput.disabled = disable;
- }
-}
-
-/**
- * Validates the repository name input and provides feedback on errors.
- *
- * This function checks the format of the repository name entered by the user. It validates both the username and repository name
- * according to specific rules, such as allowed characters and length. If any validation rules are violated, it displays error messages
- * and clears the repository data. If the input is valid, it hides any error messages.
- *
- * @function validateRepoName
- *
- * @returns {string[]|void} An array of validation error messages, if there are no errors.
- */
-function validateRepoName() {
- try {
- let repoName = repoInput.value;
- let [username, repository] = repoName.split('/');
-
- let messages = [];
-
- // Username validation
- if (username) {
- if (/^-|-$/.test(username)) {
- messages.push('Username cannot begin or end with a hyphen');
- }
- if (!/^[a-zA-Z0-9-]+$/.test(username)) {
- messages.push('Username may only contain alphanumeric characters or single hyphens');
- }
- if (username.includes('--')) {
- messages.push('Username cannot contain consecutive hyphens');
- }
- if (username.length > 39) {
- messages.push('Username is too long (maximum is 39 characters)');
- }
- } else {
- messages.push('Missing username');
- }
-
- // Repository validation
- if (repository) {
- if (!/^[ -~]+$/.test(repository)) {
- messages.push('Repository name can only contain ASCII characters');
- }
- if (repository.length > 100) {
- messages.push('Repository name is too long (maximum is 100 characters)');
- }
- } else {
- messages.push('Missing repository or Missing / between username and repository');
- }
-
- if (messages.length > 0) {
- repoError.innerText = messages.join(', ');
-
- repoError.classList.remove('hidden');
-
- clearRepo();
- } else {
- repoError.innerText = '';
- repoError.classList.add('hidden');
- }
-
- return messages;
- } catch (error) {
- console.error(error);
-
- repoError.innerText = 'Unknown error';
- repoError.classList.remove('hidden');
-
- clearRepo();
- }
-}
-
-/**
- * Checks the existence of a GitHub repository and updates the UI accordingly.
- *
- * This asynchronous function sends a GET request to the GitHub API to verify if the repository specified in the `repoInput` exists.
- * If the repository exists, it updates the repository link, enables branch and period selectors, and fetches branch information.
- * If the repository does not exist or an error occurs, it displays an appropriate error message and resets the repository-related UI elements.
- *
- * @function checkRepoExistence
- *
- * @returns {Promise}
- */
-async function checkRepoExistence() {
- try {
- let repoName = repoInput.value;
-
- if (!repoError.classList.contains('hidden')) return;
-
- let response = await apiQuery(`https://api.github.com/repos/${repoName}`);
-
- if (response.status === 200) {
- repoLink.classList.remove('hidden');
- repoLink.href = `https://github.com/${repoName}`;
-
- repo.name = repoName;
- repo.defaultBranch = response.data.default_branch;
-
- branchSelect.enable();
- periodSelect.enable();
-
- getBranches();
- toggleSettings(false);
- } else {
- repoError.innerText = `Unexpected status code: ${response.status}`;
- repoError.classList.remove('hidden');
-
- clearRepo();
- toggleSettings(true);
- }
- } catch (error) {
- if (error?.response?.status === 404) {
- repoError.innerText = 'Repository does not exist';
- repoError.classList.remove('hidden');
-
- clearRepo();
- toggleSettings(true);
- } else {
- console.error(error);
-
- repoError.innerText = 'Unknown error';
- repoError.classList.remove('hidden');
-
- clearRepo();
- toggleSettings(true);
- }
- }
-}
-
-/**
- * Fetches all branches of the specified GitHub repository and updates the branch list.
- *
- * This asynchronous function retrieves branches from the GitHub API in a paginated manner,
- * concatenating the results until no more branches are available. It then updates the repository's
- * branch list and calls `setBranches` to update the UI with the fetched branches.
- *
- * @function getBranches
- *
- * @returns {Promise}
- */
-async function getBranches() {
- try {
- let branches = [];
- let page = 1;
- const perPage = 100;
-
- do {
- let response = await apiQuery(
- `https://api.github.com/repos/${repo.name}/branches?per_page=${perPage}&page=${page}`
- );
-
- if (response.status === 200 && response.data.length > 0) {
- branches = branches.concat(response.data);
- page++;
- } else {
- break;
- }
- } while (true);
-
- repo.branches = branches.map((branch) => branch.name);
-
- setBranches();
- } catch (error) {
- console.error('Error fetching branches:', error);
- }
-}
-
-/**
- * Populates the branch selector with the branches of the repository.
- *
- * This function iterates over the list of branches in the `repo` object and adds each branch as an option
- * to the `branchSelect` element. It also sets the default branch as the selected item in the selector.
- *
- * @function setBranches
- *
- * @returns {void}
- */
-function setBranches() {
- for (let branch of repo.branches) {
- branchSelect.addOption({
- value: branch,
- text: branch
- });
- }
-
- branchSelect.addItem(repo.defaultBranch);
-}
-
-/**
- * Sets the theme of the application and updates the UI accordingly.
- *
- * This function saves the selected theme to local storage, updates the theme toggle state,
- * and applies the theme to the document. If the theme is being loaded for the first time,
- * it makes the body visible and sets a transition duration for smooth theme changes.
- *
- * @function setTheme
- *
- * @param {'light' | 'dark'} theme - The theme to be applied ('light' or 'dark').
- * @returns {void}
- */
-function setTheme(theme) {
- localStorage.setItem('theme', theme);
- themeToggle.checked = theme === 'dark';
-
- if (theme === 'light') {
- githubLogo.src = './icons/github-mark.svg';
- } else if (theme === 'dark') {
- githubLogo.src = './icons/github-mark-white.svg';
- }
-
- document.documentElement.setAttribute('data-theme', theme);
-}
-
-/**
- * Checks the authentication status of the user and updates the UI accordingly.
- *
- * This asynchronous function checks if the user is authenticated by retrieving the user information from the GitHub API.
- * If the user is authenticated, it updates the current user object, sets the login button to hidden, and displays the user avatar.
- * If the user is not authenticated, it logs the user out and displays the login button.
- *
- * @function checkAuth
- *
- * @returns {Promise}
- */
-async function checkAuth() {
- try {
- let urlParams = new URLSearchParams(window.location.search);
-
- let storageToken = localStorage.getItem('token');
- let queryToken = urlParams.get('token');
-
- let user = {};
- let token = null;
-
- if (queryToken) token = queryToken;
- else if (storageToken) token = storageToken;
-
- if (token) {
- user = await getUser(token);
-
- if (typeof user === 'string') {
- console.error(user);
- return;
- }
-
- localStorage.setItem('token', token);
-
- currentUser.username = user.login;
- currentUser.name = user.name;
- currentUser.avatar = user.avatar_url;
- currentUser.token = token;
-
- loginButton.classList.toggle('hidden');
-
- avatar.src = currentUser.avatar;
- avatar.title = currentUser.username;
-
- usernameElement.textContent = currentUser.username;
-
- githubLogo.classList.toggle('hidden');
- avatar.classList.toggle('hidden');
- }
- } catch (error) {
- console.error(error);
- }
-}
-
-/**
- * Retrieves the user information from the GitHub API.
- *
- * This asynchronous function sends a GET request to the GitHub API to retrieve the user information.
- * If the user is authenticated, it returns the user object. If the user is not authenticated,
- * it logs the user out and returns an error message.
- *
- * @function getUser
- *
- * @param {string} token - The user's GitHub token.
- * @returns {Promise} The user object or an error message.
- */
-async function getUser(token) {
- try {
- if (!token) return 'missing token';
-
- let response = await apiQuery('https://api.github.com/user', {
- headers: {
- Authorization: `Bearer ${token}`
- }
- });
-
- return response.data;
- } catch (error) {
- if (error?.response?.status === 401) {
- logout();
-
- return 'invalid token';
- } else {
- console.error(error);
- }
- }
-}
-
-/**
- * Logs the user in by redirecting to the GitHub OAuth login page.
- *
- * @function login
- *
- * @returns {void}
- */
-function login() {
- let params = new URLSearchParams({
- redirect_uri: MODES[MODE].authenticationURL,
- scope: 'repo'
- });
-
- window.location.href = `https://github.com/login/oauth/authorize?${params.toString()}`;
-}
-
-/**
- * Logs the user out by removing the token from local storage,
- * resetting the current user object, and updating the UI.
- *
- * @function logout
- *
- * @returns {void}
- */
-function logout() {
- localStorage.removeItem('token');
-
- currentUser = {
- username: '',
- name: '',
- avatar: '',
- token: ''
- };
-
- loginButton.classList.toggle('hidden');
-
- avatar.src = '';
- avatar.title = '';
- usernameElement.textContent = currentUser.username;
-
- githubLogo.classList.toggle('hidden');
- avatar.classList.toggle('hidden');
-
- userDropdown.classList.add('hidden');
-
- avatar.title = '';
-}
-
-/**
- * Sends a query to the GitHub API and returns the response.
- *
- * @function apiQuery
- *
- * @param {string} url - The URL of the API endpoint.
- * @param {object} [options] - The options object for the fetch request.
- * @returns {Promise} The response from the API.
- */
-async function apiQuery(url, options) {
- if (currentUser.token) {
- if (!options) options = {};
- if (!options.headers) options.headers = {};
-
- options.headers.Authorization = `Bearer ${currentUser.token}`;
- }
-
- let response = await fetch(url, options);
- let responseData = await response.json();
-
- responseData = {
- headers: response.headers,
- ok: response.ok,
- redirected: response.redirected,
- status: response.status,
- statusText: response.statusText,
- type: response.type,
- url: response.url,
- data: responseData
- };
-
- return responseData;
-}
-
-async function paginatedAPIQuery(url, options) { }
-
-/**
- * Converts a value in REM units to pixels.
- *
- * @function remToPx
- *
- * @param {number} rem - The value in REM units.
- * @returns {number} The value in pixels.
- */
-function remToPx(rem) {
- return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
-}
-
-// Variables
-/** @type {Repo} */
-let repo = {
- name: '',
- period: '',
- defaultBranch: '',
- branches: [],
- contributors: [],
- issues: [],
- commits: [],
- pullRequests: []
-};
-let stats = {};
-/** @type {CurrentUser} */
-let currentUser = {
- username: '',
- name: '',
- avatar: '',
- token: ''
-};
-
-// HTML elements
-const themeToggle = /**@type {HTMLInputElement} */ (document.getElementById('theme-toggle-checkbox'));
-const repoInput = /**@type {HTMLInputElement} */ (document.getElementById('repo-input'));
-const repoPeriod = /**@type {HTMLSelectElement} */ (document.getElementById('period-input'));
-const statsTree = /**@type {HTMLDivElement} */ (document.getElementById('stats'));
-const repoLink = /**@type {HTMLAnchorElement} */ (document.getElementById('repo-link'));
-const repoError = /**@type {HTMLDivElement} */ (document.getElementById('repo-error'));
-const branchInput = /**@type {HTMLSelectElement} */ (document.getElementById('branch-input'));
-const navBar = /**@type {HTMLDivElement} */ (document.getElementById('nav-bar'));
-const loginButton = /**@type {HTMLButtonElement} */ (document.getElementById('login-button'));
-const githubLogo = /**@type {HTMLImageElement} */ (document.getElementById('github-logo'));
-const avatar = /**@type {HTMLImageElement} */ (document.getElementById('avatar'));
-const userDropdown = /**@type {HTMLDivElement} */ (document.getElementById('user-dropdown'));
-const logoutButton = /**@type {HTMLButtonElement} */ (document.getElementById('logout-button'));
-const usernameElement = /**@type {HTMLInputElement} */ (document.getElementById('username'));
-
-// Load theme
-const savedTheme = localStorage.getItem('theme');
-if (savedTheme === 'dark' || savedTheme === 'light') {
- setTheme(savedTheme);
-} else {
- if (window.matchMedia('(prefers-color-scheme: dark)').matches) setTheme('dark');
- else setTheme('light');
-}
-
-// Event listeners
-themeToggle.addEventListener('change', () => {
- if (themeToggle.checked) setTheme('dark');
- else setTheme('light');
-});
-
-repoInput.addEventListener('keydown', (event) => {
- if (event.key === 'Enter') {
- checkRepoExistence();
-
- repoInput.blur();
- }
-});
-
-repoInput.addEventListener('input', () => {
- validateRepoName();
-});
-
-repoInput.addEventListener('blur', checkRepoExistence);
-
-loginButton.addEventListener('click', login);
-
-githubLogo.addEventListener('click', login);
-
-avatar.addEventListener('click', () => {
- userDropdown.classList.toggle('hidden');
-});
-
-logoutButton.addEventListener('click', logout);
-
-// Selects
-let branchSelect = new TomSelect('#branch-input', {
- plugins: ['dropdown_input'],
- maxOptions: null,
- maxItems: 1
-});
-
-let periodSelect = new TomSelect('#period-input', {
- plugins: ['dropdown_input'],
- maxOptions: null,
- maxItems: 1
-});
-
-branchSelect.disable();
-periodSelect.disable();
-
-// Floating UI
-FloatingUIDOM.autoUpdate(navBar, userDropdown, () => {
- FloatingUIDOM.computePosition(navBar, userDropdown, {
- placement: 'bottom-end',
- middleware: [
- FloatingUIDOM.offset({
- mainAxis: remToPx(0.25),
- crossAxis: remToPx(-0.5)
- })
- ]
- }).then(({ x, y }) => {
- Object.assign(userDropdown.style, { top: `${y}px`, left: `${x}px` });
- });
-});
-
-// Test
-stats = {
- Issues: {
- total: 183,
- values: {
- Open: {
- total: 132,
- values: {
- ProfBrickz: 78,
- csmith1188: 51,
- Talon24229: 0
- }
- },
- Closed: {
- total: 51,
- values: {
- ProfBrickz: 30,
- csmith1188: 21,
- Talon24229: 0
- }
- },
- A: {
- total: 0,
- values: {
- ProfBrickz: 0,
- csmith1188: 0,
- Talon24229: 0
- }
- },
- All: {
- total: 183,
- values: {
- ProfBrickz: {
- total: 108,
- values: {
- Open: 78,
- Closed: 30
- }
- },
- csmith1188: {
- total: 72,
- values: {
- Open: 51,
- Closed: 21
- }
- },
- Talon24229: {
- total: 0,
- values: {
- Open: 0,
- Closed: 0
- }
- }
- }
- },
- ALL: 183
- }
- },
- Commits: {
- total: 2731,
- values: {
- ProfBrickz: 1523,
- csmith1188: 1208,
- Talon24229: 0
- }
- },
- 'Pull Requests': {
- total: 95,
- values: {
- ProfBrickz: 52,
- csmith1188: 43,
- Talon24229: 0
- }
- },
- a: {
- total: 0,
- values: {
- b: {
- total: 0,
- values: {
- c: {
- total: 0,
- values: {
- d: {
- total: 0,
- values: {
- e: 0
- }
- }
- }
- }
- }
- }
- }
- }
-};
-updateTree();
-
-// Load icons
-lucide.createIcons();
-
-checkAuth();
diff --git a/dev-insights/node_modules/@floating-ui/core/LICENSE b/dev-insights/node_modules/@floating-ui/core/LICENSE
deleted file mode 100644
index 639cdc6..0000000
--- a/dev-insights/node_modules/@floating-ui/core/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-MIT License
-
-Copyright (c) 2021-present Floating UI contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/dev-insights/node_modules/@floating-ui/core/README.md b/dev-insights/node_modules/@floating-ui/core/README.md
deleted file mode 100644
index c4b69b2..0000000
--- a/dev-insights/node_modules/@floating-ui/core/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# @floating-ui/core
-
-This is the platform-agnostic core of Floating UI, exposing the main
-`computePosition` function but no platform interface logic.
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs
deleted file mode 100644
index 5dcb33a..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs
+++ /dev/null
@@ -1 +0,0 @@
-const t=["top","right","bottom","left"],e=["start","end"],n=t.reduce(((t,n)=>t.concat(n,n+"-"+e[0],n+"-"+e[1])),[]),i=Math.min,r=Math.max,o={left:"right",right:"left",bottom:"top",top:"bottom"},a={start:"end",end:"start"};function l(t,e,n){return r(t,i(e,n))}function s(t,e){return"function"==typeof t?t(e):t}function c(t){return t.split("-")[0]}function f(t){return t.split("-")[1]}function m(t){return"x"===t?"y":"x"}function u(t){return"y"===t?"height":"width"}function d(t){return["top","bottom"].includes(c(t))?"y":"x"}function g(t){return m(d(t))}function p(t,e,n){void 0===n&&(n=!1);const i=f(t),r=g(t),o=u(r);let a="x"===r?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return e.reference[o]>e.floating[o]&&(a=y(a)),[a,y(a)]}function h(t){return t.replace(/start|end/g,(t=>a[t]))}function y(t){return t.replace(/left|right|bottom|top/g,(t=>o[t]))}function w(t){return"number"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function x(t){const{x:e,y:n,width:i,height:r}=t;return{width:i,height:r,top:n,left:e,right:e+i,bottom:n+r,x:e,y:n}}function v(t,e,n){let{reference:i,floating:r}=t;const o=d(e),a=g(e),l=u(a),s=c(e),m="y"===o,p=i.x+i.width/2-r.width/2,h=i.y+i.height/2-r.height/2,y=i[l]/2-r[l]/2;let w;switch(s){case"top":w={x:p,y:i.y-r.height};break;case"bottom":w={x:p,y:i.y+i.height};break;case"right":w={x:i.x+i.width,y:h};break;case"left":w={x:i.x-r.width,y:h};break;default:w={x:i.x,y:i.y}}switch(f(e)){case"start":w[a]-=y*(n&&m?-1:1);break;case"end":w[a]+=y*(n&&m?-1:1)}return w}const b=async(t,e,n)=>{const{placement:i="bottom",strategy:r="absolute",middleware:o=[],platform:a}=n,l=o.filter(Boolean),s=await(null==a.isRTL?void 0:a.isRTL(e));let c=await a.getElementRects({reference:t,floating:e,strategy:r}),{x:f,y:m}=v(c,i,s),u=i,d={},g=0;for(let n=0;n({name:"arrow",options:t,async fn(e){const{x:n,y:r,placement:o,rects:a,platform:c,elements:m,middlewareData:d}=e,{element:p,padding:h=0}=s(t,e)||{};if(null==p)return{};const y=w(h),x={x:n,y:r},v=g(o),b=u(v),A=await c.getDimensions(p),R="y"===v,D=R?"top":"left",P=R?"bottom":"right",E=R?"clientHeight":"clientWidth",O=a.reference[b]+a.reference[v]-x[v]-a.floating[b],T=x[v]-a.reference[v],L=await(null==c.getOffsetParent?void 0:c.getOffsetParent(p));let k=L?L[E]:0;k&&await(null==c.isElement?void 0:c.isElement(L))||(k=m.floating[E]||a.floating[b]);const B=O/2-T/2,C=k/2-A[b]/2-1,H=i(y[D],C),S=i(y[P],C),F=H,M=k-A[b]-S,V=k/2-A[b]/2+B,W=l(F,V,M),j=!d.arrow&&null!=f(o)&&V!==W&&a.reference[b]/2-(Vf(e)===t)),...n.filter((e=>f(e)!==t))]:n.filter((t=>c(t)===t))).filter((n=>!t||f(n)===t||!!e&&h(n)!==n))}(y||null,x,w):w,R=await A(e,v),D=(null==(i=l.autoPlacement)?void 0:i.index)||0,P=b[D];if(null==P)return{};const E=p(P,a,await(null==u.isRTL?void 0:u.isRTL(d.floating)));if(m!==P)return{reset:{placement:b[0]}};const O=[R[c(P)],R[E[0]],R[E[1]]],T=[...(null==(r=l.autoPlacement)?void 0:r.overflows)||[],{placement:P,overflows:O}],L=b[D+1];if(L)return{data:{index:D+1,overflows:T},reset:{placement:L}};const k=T.map((t=>{const e=f(t.placement);return[t.placement,e&&g?t.overflows.slice(0,2).reduce(((t,e)=>t+e),0):t.overflows[0],t.overflows]})).sort(((t,e)=>t[1]-e[1])),B=(null==(o=k.filter((t=>t[2].slice(0,f(t[0])?2:3).every((t=>t<=0))))[0])?void 0:o[0])||k[0][0];return B!==m?{data:{index:D+1,overflows:T},reset:{placement:B}}:{}}}},P=function(t){return void 0===t&&(t={}),{name:"flip",options:t,async fn(e){var n,i;const{placement:r,middlewareData:o,rects:a,initialPlacement:l,platform:m,elements:u}=e,{mainAxis:g=!0,crossAxis:w=!0,fallbackPlacements:x,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:b="none",flipAlignment:R=!0,...D}=s(t,e);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const P=c(r),E=d(l),O=c(l)===l,T=await(null==m.isRTL?void 0:m.isRTL(u.floating)),L=x||(O||!R?[y(l)]:function(t){const e=y(t);return[h(t),e,h(e)]}(l)),k="none"!==b;!x&&k&&L.push(...function(t,e,n,i){const r=f(t);let o=function(t,e,n){const i=["left","right"],r=["right","left"],o=["top","bottom"],a=["bottom","top"];switch(t){case"top":case"bottom":return n?e?r:i:e?i:r;case"left":case"right":return e?o:a;default:return[]}}(c(t),"start"===n,i);return r&&(o=o.map((t=>t+"-"+r)),e&&(o=o.concat(o.map(h)))),o}(l,R,b,T));const B=[l,...L],C=await A(e,D),H=[];let S=(null==(i=o.flip)?void 0:i.overflows)||[];if(g&&H.push(C[P]),w){const t=p(r,a,T);H.push(C[t[0]],C[t[1]])}if(S=[...S,{placement:r,overflows:H}],!H.every((t=>t<=0))){var F,M;const t=((null==(F=o.flip)?void 0:F.index)||0)+1,e=B[t];if(e)return{data:{index:t,overflows:S},reset:{placement:e}};let n=null==(M=S.filter((t=>t.overflows[0]<=0)).sort(((t,e)=>t.overflows[1]-e.overflows[1]))[0])?void 0:M.placement;if(!n)switch(v){case"bestFit":{var V;const t=null==(V=S.filter((t=>{if(k){const e=d(t.placement);return e===E||"y"===e}return!0})).map((t=>[t.placement,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:V[0];t&&(n=t);break}case"initialPlacement":n=l}if(r!==n)return{reset:{placement:n}}}return{}}}};function E(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function O(e){return t.some((t=>e[t]>=0))}const T=function(t){return void 0===t&&(t={}),{name:"hide",options:t,async fn(e){const{rects:n}=e,{strategy:i="referenceHidden",...r}=s(t,e);switch(i){case"referenceHidden":{const t=E(await A(e,{...r,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:O(t)}}}case"escaped":{const t=E(await A(e,{...r,altBoundary:!0}),n.floating);return{data:{escapedOffsets:t,escaped:O(t)}}}default:return{}}}}};function L(t){const e=i(...t.map((t=>t.left))),n=i(...t.map((t=>t.top)));return{x:e,y:n,width:r(...t.map((t=>t.right)))-e,height:r(...t.map((t=>t.bottom)))-n}}const k=function(t){return void 0===t&&(t={}),{name:"inline",options:t,async fn(e){const{placement:n,elements:o,rects:a,platform:l,strategy:f}=e,{padding:m=2,x:u,y:g}=s(t,e),p=Array.from(await(null==l.getClientRects?void 0:l.getClientRects(o.reference))||[]),h=function(t){const e=t.slice().sort(((t,e)=>t.y-e.y)),n=[];let i=null;for(let t=0;ti.height/2?n.push([r]):n[n.length-1].push(r),i=r}return n.map((t=>x(L(t))))}(p),y=x(L(p)),v=w(m);const b=await l.getElementRects({reference:{getBoundingClientRect:function(){if(2===h.length&&h[0].left>h[1].right&&null!=u&&null!=g)return h.find((t=>u>t.left-v.left&&ut.top-v.top&&g=2){if("y"===d(n)){const t=h[0],e=h[h.length-1],i="top"===c(n),r=t.top,o=e.bottom,a=i?t.left:e.left,l=i?t.right:e.right;return{top:r,bottom:o,left:a,right:l,width:l-a,height:o-r,x:a,y:r}}const t="left"===c(n),e=r(...h.map((t=>t.right))),o=i(...h.map((t=>t.left))),a=h.filter((n=>t?n.left===o:n.right===e)),l=a[0].top,s=a[a.length-1].bottom;return{top:l,bottom:s,left:o,right:e,width:e-o,height:s-l,x:o,y:l}}return y}},floating:o.floating,strategy:f});return a.reference.x!==b.reference.x||a.reference.y!==b.reference.y||a.reference.width!==b.reference.width||a.reference.height!==b.reference.height?{reset:{rects:b}}:{}}}};const B=function(t){return void 0===t&&(t=0),{name:"offset",options:t,async fn(e){var n,i;const{x:r,y:o,placement:a,middlewareData:l}=e,m=await async function(t,e){const{placement:n,platform:i,elements:r}=t,o=await(null==i.isRTL?void 0:i.isRTL(r.floating)),a=c(n),l=f(n),m="y"===d(n),u=["left","top"].includes(a)?-1:1,g=o&&m?-1:1,p=s(e,t);let{mainAxis:h,crossAxis:y,alignmentAxis:w}="number"==typeof p?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return l&&"number"==typeof w&&(y="end"===l?-1*w:w),m?{x:y*g,y:h*u}:{x:h*u,y:y*g}}(e,t);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(i=l.arrow)&&i.alignmentOffset?{}:{x:r+m.x,y:o+m.y,data:{...m,placement:a}}}}},C=function(t){return void 0===t&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:i,placement:r}=e,{mainAxis:o=!0,crossAxis:a=!1,limiter:f={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...u}=s(t,e),g={x:n,y:i},p=await A(e,u),h=d(c(r)),y=m(h);let w=g[y],x=g[h];if(o){const t="y"===y?"bottom":"right";w=l(w+p["y"===y?"top":"left"],w,w-p[t])}if(a){const t="y"===h?"bottom":"right";x=l(x+p["y"===h?"top":"left"],x,x-p[t])}const v=f.fn({...e,[y]:w,[h]:x});return{...v,data:{x:v.x-n,y:v.y-i,enabled:{[y]:o,[h]:a}}}}}},H=function(t){return void 0===t&&(t={}),{options:t,fn(e){const{x:n,y:i,placement:r,rects:o,middlewareData:a}=e,{offset:l=0,mainAxis:f=!0,crossAxis:u=!0}=s(t,e),g={x:n,y:i},p=d(r),h=m(p);let y=g[h],w=g[p];const x=s(l,e),v="number"==typeof x?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(f){const t="y"===h?"height":"width",e=o.reference[h]-o.floating[t]+v.mainAxis,n=o.reference[h]+o.reference[t]-v.mainAxis;yn&&(y=n)}if(u){var b,A;const t="y"===h?"width":"height",e=["top","left"].includes(c(r)),n=o.reference[p]-o.floating[t]+(e&&(null==(b=a.offset)?void 0:b[p])||0)+(e?0:v.crossAxis),i=o.reference[p]+o.reference[t]+(e?0:(null==(A=a.offset)?void 0:A[p])||0)-(e?v.crossAxis:0);wi&&(w=i)}return{[h]:y,[p]:w}}}},S=function(t){return void 0===t&&(t={}),{name:"size",options:t,async fn(e){var n,o;const{placement:a,rects:l,platform:m,elements:u}=e,{apply:g=(()=>{}),...p}=s(t,e),h=await A(e,p),y=c(a),w=f(a),x="y"===d(a),{width:v,height:b}=l.floating;let R,D;"top"===y||"bottom"===y?(R=y,D=w===(await(null==m.isRTL?void 0:m.isRTL(u.floating))?"start":"end")?"left":"right"):(D=y,R="end"===w?"top":"bottom");const P=b-h.top-h.bottom,E=v-h.left-h.right,O=i(b-h[R],P),T=i(v-h[D],E),L=!e.middlewareData.shift;let k=O,B=T;if(null!=(n=e.middlewareData.shift)&&n.enabled.x&&(B=E),null!=(o=e.middlewareData.shift)&&o.enabled.y&&(k=P),L&&!w){const t=r(h.left,0),e=r(h.right,0),n=r(h.top,0),i=r(h.bottom,0);x?B=v-2*(0!==t||0!==e?t+e:r(h.left,h.right)):k=b-2*(0!==n||0!==i?n+i:r(h.top,h.bottom))}await g({...e,availableWidth:B,availableHeight:k});const C=await m.getDimensions(u.floating);return v!==C.width||b!==C.height?{reset:{rects:!0}}:{}}}};export{R as arrow,D as autoPlacement,b as computePosition,A as detectOverflow,P as flip,T as hide,k as inline,H as limitShift,B as offset,x as rectToClientRect,C as shift,S as size};
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs
deleted file mode 100644
index d9f222a..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs
+++ /dev/null
@@ -1,1169 +0,0 @@
-/**
- * Custom positioning reference element.
- * @see https://floating-ui.com/docs/virtual-elements
- */
-
-const sides = ['top', 'right', 'bottom', 'left'];
-const alignments = ['start', 'end'];
-const placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
-const min = Math.min;
-const max = Math.max;
-const oppositeSideMap = {
- left: 'right',
- right: 'left',
- bottom: 'top',
- top: 'bottom'
-};
-const oppositeAlignmentMap = {
- start: 'end',
- end: 'start'
-};
-function clamp(start, value, end) {
- return max(start, min(value, end));
-}
-function evaluate(value, param) {
- return typeof value === 'function' ? value(param) : value;
-}
-function getSide(placement) {
- return placement.split('-')[0];
-}
-function getAlignment(placement) {
- return placement.split('-')[1];
-}
-function getOppositeAxis(axis) {
- return axis === 'x' ? 'y' : 'x';
-}
-function getAxisLength(axis) {
- return axis === 'y' ? 'height' : 'width';
-}
-function getSideAxis(placement) {
- return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';
-}
-function getAlignmentAxis(placement) {
- return getOppositeAxis(getSideAxis(placement));
-}
-function getAlignmentSides(placement, rects, rtl) {
- if (rtl === void 0) {
- rtl = false;
- }
- const alignment = getAlignment(placement);
- const alignmentAxis = getAlignmentAxis(placement);
- const length = getAxisLength(alignmentAxis);
- let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
- if (rects.reference[length] > rects.floating[length]) {
- mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
- }
- return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
-}
-function getExpandedPlacements(placement) {
- const oppositePlacement = getOppositePlacement(placement);
- return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
-}
-function getOppositeAlignmentPlacement(placement) {
- return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
-}
-function getSideList(side, isStart, rtl) {
- const lr = ['left', 'right'];
- const rl = ['right', 'left'];
- const tb = ['top', 'bottom'];
- const bt = ['bottom', 'top'];
- switch (side) {
- case 'top':
- case 'bottom':
- if (rtl) return isStart ? rl : lr;
- return isStart ? lr : rl;
- case 'left':
- case 'right':
- return isStart ? tb : bt;
- default:
- return [];
- }
-}
-function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
- const alignment = getAlignment(placement);
- let list = getSideList(getSide(placement), direction === 'start', rtl);
- if (alignment) {
- list = list.map(side => side + "-" + alignment);
- if (flipAlignment) {
- list = list.concat(list.map(getOppositeAlignmentPlacement));
- }
- }
- return list;
-}
-function getOppositePlacement(placement) {
- return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
-}
-function expandPaddingObject(padding) {
- return {
- top: 0,
- right: 0,
- bottom: 0,
- left: 0,
- ...padding
- };
-}
-function getPaddingObject(padding) {
- return typeof padding !== 'number' ? expandPaddingObject(padding) : {
- top: padding,
- right: padding,
- bottom: padding,
- left: padding
- };
-}
-function rectToClientRect(rect) {
- const {
- x,
- y,
- width,
- height
- } = rect;
- return {
- width,
- height,
- top: y,
- left: x,
- right: x + width,
- bottom: y + height,
- x,
- y
- };
-}
-
-function computeCoordsFromPlacement(_ref, placement, rtl) {
- let {
- reference,
- floating
- } = _ref;
- const sideAxis = getSideAxis(placement);
- const alignmentAxis = getAlignmentAxis(placement);
- const alignLength = getAxisLength(alignmentAxis);
- const side = getSide(placement);
- const isVertical = sideAxis === 'y';
- const commonX = reference.x + reference.width / 2 - floating.width / 2;
- const commonY = reference.y + reference.height / 2 - floating.height / 2;
- const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
- let coords;
- switch (side) {
- case 'top':
- coords = {
- x: commonX,
- y: reference.y - floating.height
- };
- break;
- case 'bottom':
- coords = {
- x: commonX,
- y: reference.y + reference.height
- };
- break;
- case 'right':
- coords = {
- x: reference.x + reference.width,
- y: commonY
- };
- break;
- case 'left':
- coords = {
- x: reference.x - floating.width,
- y: commonY
- };
- break;
- default:
- coords = {
- x: reference.x,
- y: reference.y
- };
- }
- switch (getAlignment(placement)) {
- case 'start':
- coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- case 'end':
- coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- }
- return coords;
-}
-
-/**
- * Computes the `x` and `y` coordinates that will place the floating element
- * next to a given reference element.
- *
- * This export does not have any `platform` interface logic. You will need to
- * write one for the platform you are using Floating UI with.
- */
-const computePosition = async (reference, floating, config) => {
- const {
- placement = 'bottom',
- strategy = 'absolute',
- middleware = [],
- platform
- } = config;
- const validMiddleware = middleware.filter(Boolean);
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
- let rects = await platform.getElementRects({
- reference,
- floating,
- strategy
- });
- let {
- x,
- y
- } = computeCoordsFromPlacement(rects, placement, rtl);
- let statefulPlacement = placement;
- let middlewareData = {};
- let resetCount = 0;
- for (let i = 0; i < validMiddleware.length; i++) {
- const {
- name,
- fn
- } = validMiddleware[i];
- const {
- x: nextX,
- y: nextY,
- data,
- reset
- } = await fn({
- x,
- y,
- initialPlacement: placement,
- placement: statefulPlacement,
- strategy,
- middlewareData,
- rects,
- platform,
- elements: {
- reference,
- floating
- }
- });
- x = nextX != null ? nextX : x;
- y = nextY != null ? nextY : y;
- middlewareData = {
- ...middlewareData,
- [name]: {
- ...middlewareData[name],
- ...data
- }
- };
- if (reset && resetCount <= 50) {
- resetCount++;
- if (typeof reset === 'object') {
- if (reset.placement) {
- statefulPlacement = reset.placement;
- }
- if (reset.rects) {
- rects = reset.rects === true ? await platform.getElementRects({
- reference,
- floating,
- strategy
- }) : reset.rects;
- }
- ({
- x,
- y
- } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
- }
- i = -1;
- }
- }
- return {
- x,
- y,
- placement: statefulPlacement,
- strategy,
- middlewareData
- };
-};
-
-/**
- * Resolves with an object of overflow side offsets that determine how much the
- * element is overflowing a given clipping boundary on each side.
- * - positive = overflowing the boundary by that number of pixels
- * - negative = how many pixels left before it will overflow
- * - 0 = lies flush with the boundary
- * @see https://floating-ui.com/docs/detectOverflow
- */
-async function detectOverflow(state, options) {
- var _await$platform$isEle;
- if (options === void 0) {
- options = {};
- }
- const {
- x,
- y,
- platform,
- rects,
- elements,
- strategy
- } = state;
- const {
- boundary = 'clippingAncestors',
- rootBoundary = 'viewport',
- elementContext = 'floating',
- altBoundary = false,
- padding = 0
- } = evaluate(options, state);
- const paddingObject = getPaddingObject(padding);
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
- const element = elements[altBoundary ? altContext : elementContext];
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
- element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
- boundary,
- rootBoundary,
- strategy
- }));
- const rect = elementContext === 'floating' ? {
- x,
- y,
- width: rects.floating.width,
- height: rects.floating.height
- } : rects.reference;
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
- x: 1,
- y: 1
- } : {
- x: 1,
- y: 1
- };
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
- elements,
- rect,
- offsetParent,
- strategy
- }) : rect);
- return {
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
- };
-}
-
-/**
- * Provides data to position an inner element of the floating element so that it
- * appears centered to the reference element.
- * @see https://floating-ui.com/docs/arrow
- */
-const arrow = options => ({
- name: 'arrow',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- platform,
- elements,
- middlewareData
- } = state;
- // Since `element` is required, we don't Partial<> the type.
- const {
- element,
- padding = 0
- } = evaluate(options, state) || {};
- if (element == null) {
- return {};
- }
- const paddingObject = getPaddingObject(padding);
- const coords = {
- x,
- y
- };
- const axis = getAlignmentAxis(placement);
- const length = getAxisLength(axis);
- const arrowDimensions = await platform.getDimensions(element);
- const isYAxis = axis === 'y';
- const minProp = isYAxis ? 'top' : 'left';
- const maxProp = isYAxis ? 'bottom' : 'right';
- const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
- const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
- const startDiff = coords[axis] - rects.reference[axis];
- const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
- let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
-
- // DOM platform can return `window` as the `offsetParent`.
- if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
- clientSize = elements.floating[clientProp] || rects.floating[length];
- }
- const centerToReference = endDiff / 2 - startDiff / 2;
-
- // If the padding is large enough that it causes the arrow to no longer be
- // centered, modify the padding so that it is centered.
- const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
- const minPadding = min(paddingObject[minProp], largestPossiblePadding);
- const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
-
- // Make sure the arrow doesn't overflow the floating element if the center
- // point is outside the floating element's bounds.
- const min$1 = minPadding;
- const max = clientSize - arrowDimensions[length] - maxPadding;
- const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
- const offset = clamp(min$1, center, max);
-
- // If the reference is small enough that the arrow's padding causes it to
- // to point to nothing for an aligned placement, adjust the offset of the
- // floating element itself. To ensure `shift()` continues to take action,
- // a single reset is performed when this is true.
- const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
- const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
- return {
- [axis]: coords[axis] + alignmentOffset,
- data: {
- [axis]: offset,
- centerOffset: center - offset - alignmentOffset,
- ...(shouldAddOffset && {
- alignmentOffset
- })
- },
- reset: shouldAddOffset
- };
- }
-});
-
-function getPlacementList(alignment, autoAlignment, allowedPlacements) {
- const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
- return allowedPlacementsSortedByAlignment.filter(placement => {
- if (alignment) {
- return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
- }
- return true;
- });
-}
-/**
- * Optimizes the visibility of the floating element by choosing the placement
- * that has the most space available automatically, without needing to specify a
- * preferred placement. Alternative to `flip`.
- * @see https://floating-ui.com/docs/autoPlacement
- */
-const autoPlacement = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'autoPlacement',
- options,
- async fn(state) {
- var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;
- const {
- rects,
- middlewareData,
- placement,
- platform,
- elements
- } = state;
- const {
- crossAxis = false,
- alignment,
- allowedPlacements = placements,
- autoAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
- const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
- const currentPlacement = placements$1[currentIndex];
- if (currentPlacement == null) {
- return {};
- }
- const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
-
- // Make `computeCoords` start from the right place.
- if (placement !== currentPlacement) {
- return {
- reset: {
- placement: placements$1[0]
- }
- };
- }
- const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];
- const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {
- placement: currentPlacement,
- overflows: currentOverflows
- }];
- const nextPlacement = placements$1[currentIndex + 1];
-
- // There are more placements to check.
- if (nextPlacement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
- const placementsSortedByMostSpace = allOverflows.map(d => {
- const alignment = getAlignment(d.placement);
- return [d.placement, alignment && crossAxis ?
- // Check along the mainAxis and main crossAxis side.
- d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :
- // Check only the mainAxis.
- d.overflows[0], d.overflows];
- }).sort((a, b) => a[1] - b[1]);
- const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,
- // Aligned placements should not check their opposite crossAxis
- // side.
- getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));
- const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];
- if (resetPlacement !== placement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: resetPlacement
- }
- };
- }
- return {};
- }
- };
-};
-
-/**
- * Optimizes the visibility of the floating element by flipping the `placement`
- * in order to keep it in view when the preferred placement(s) will overflow the
- * clipping boundary. Alternative to `autoPlacement`.
- * @see https://floating-ui.com/docs/flip
- */
-const flip = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'flip',
- options,
- async fn(state) {
- var _middlewareData$arrow, _middlewareData$flip;
- const {
- placement,
- middlewareData,
- rects,
- initialPlacement,
- platform,
- elements
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true,
- fallbackPlacements: specifiedFallbackPlacements,
- fallbackStrategy = 'bestFit',
- fallbackAxisSideDirection = 'none',
- flipAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
-
- // If a reset by the arrow was caused due to an alignment offset being
- // added, we should skip any logic now since `flip()` has already done its
- // work.
- // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643
- if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- const side = getSide(placement);
- const initialSideAxis = getSideAxis(initialPlacement);
- const isBasePlacement = getSide(initialPlacement) === initialPlacement;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
- const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';
- if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
- fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
- }
- const placements = [initialPlacement, ...fallbackPlacements];
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const overflows = [];
- let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
- if (checkMainAxis) {
- overflows.push(overflow[side]);
- }
- if (checkCrossAxis) {
- const sides = getAlignmentSides(placement, rects, rtl);
- overflows.push(overflow[sides[0]], overflow[sides[1]]);
- }
- overflowsData = [...overflowsData, {
- placement,
- overflows
- }];
-
- // One or more sides is overflowing.
- if (!overflows.every(side => side <= 0)) {
- var _middlewareData$flip2, _overflowsData$filter;
- const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
- const nextPlacement = placements[nextIndex];
- if (nextPlacement) {
- // Try next placement and re-run the lifecycle.
- return {
- data: {
- index: nextIndex,
- overflows: overflowsData
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
-
- // First, find the candidates that fit on the mainAxis side of overflow,
- // then find the placement that fits the best on the main crossAxis side.
- let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
-
- // Otherwise fallback.
- if (!resetPlacement) {
- switch (fallbackStrategy) {
- case 'bestFit':
- {
- var _overflowsData$filter2;
- const placement = (_overflowsData$filter2 = overflowsData.filter(d => {
- if (hasFallbackAxisSideDirection) {
- const currentSideAxis = getSideAxis(d.placement);
- return currentSideAxis === initialSideAxis ||
- // Create a bias to the `y` side axis due to horizontal
- // reading directions favoring greater width.
- currentSideAxis === 'y';
- }
- return true;
- }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
- if (placement) {
- resetPlacement = placement;
- }
- break;
- }
- case 'initialPlacement':
- resetPlacement = initialPlacement;
- break;
- }
- }
- if (placement !== resetPlacement) {
- return {
- reset: {
- placement: resetPlacement
- }
- };
- }
- }
- return {};
- }
- };
-};
-
-function getSideOffsets(overflow, rect) {
- return {
- top: overflow.top - rect.height,
- right: overflow.right - rect.width,
- bottom: overflow.bottom - rect.height,
- left: overflow.left - rect.width
- };
-}
-function isAnySideFullyClipped(overflow) {
- return sides.some(side => overflow[side] >= 0);
-}
-/**
- * Provides data to hide the floating element in applicable situations, such as
- * when it is not in the same clipping context as the reference element.
- * @see https://floating-ui.com/docs/hide
- */
-const hide = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'hide',
- options,
- async fn(state) {
- const {
- rects
- } = state;
- const {
- strategy = 'referenceHidden',
- ...detectOverflowOptions
- } = evaluate(options, state);
- switch (strategy) {
- case 'referenceHidden':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- elementContext: 'reference'
- });
- const offsets = getSideOffsets(overflow, rects.reference);
- return {
- data: {
- referenceHiddenOffsets: offsets,
- referenceHidden: isAnySideFullyClipped(offsets)
- }
- };
- }
- case 'escaped':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- altBoundary: true
- });
- const offsets = getSideOffsets(overflow, rects.floating);
- return {
- data: {
- escapedOffsets: offsets,
- escaped: isAnySideFullyClipped(offsets)
- }
- };
- }
- default:
- {
- return {};
- }
- }
- }
- };
-};
-
-function getBoundingRect(rects) {
- const minX = min(...rects.map(rect => rect.left));
- const minY = min(...rects.map(rect => rect.top));
- const maxX = max(...rects.map(rect => rect.right));
- const maxY = max(...rects.map(rect => rect.bottom));
- return {
- x: minX,
- y: minY,
- width: maxX - minX,
- height: maxY - minY
- };
-}
-function getRectsByLine(rects) {
- const sortedRects = rects.slice().sort((a, b) => a.y - b.y);
- const groups = [];
- let prevRect = null;
- for (let i = 0; i < sortedRects.length; i++) {
- const rect = sortedRects[i];
- if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {
- groups.push([rect]);
- } else {
- groups[groups.length - 1].push(rect);
- }
- prevRect = rect;
- }
- return groups.map(rect => rectToClientRect(getBoundingRect(rect)));
-}
-/**
- * Provides improved positioning for inline reference elements that can span
- * over multiple lines, such as hyperlinks or range selections.
- * @see https://floating-ui.com/docs/inline
- */
-const inline = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'inline',
- options,
- async fn(state) {
- const {
- placement,
- elements,
- rects,
- platform,
- strategy
- } = state;
- // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a
- // ClientRect's bounds, despite the event listener being triggered. A
- // padding of 2 seems to handle this issue.
- const {
- padding = 2,
- x,
- y
- } = evaluate(options, state);
- const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);
- const clientRects = getRectsByLine(nativeClientRects);
- const fallback = rectToClientRect(getBoundingRect(nativeClientRects));
- const paddingObject = getPaddingObject(padding);
- function getBoundingClientRect() {
- // There are two rects and they are disjoined.
- if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
- // Find the first rect in which the point is fully inside.
- return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;
- }
-
- // There are 2 or more connected rects.
- if (clientRects.length >= 2) {
- if (getSideAxis(placement) === 'y') {
- const firstRect = clientRects[0];
- const lastRect = clientRects[clientRects.length - 1];
- const isTop = getSide(placement) === 'top';
- const top = firstRect.top;
- const bottom = lastRect.bottom;
- const left = isTop ? firstRect.left : lastRect.left;
- const right = isTop ? firstRect.right : lastRect.right;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- const isLeftSide = getSide(placement) === 'left';
- const maxRight = max(...clientRects.map(rect => rect.right));
- const minLeft = min(...clientRects.map(rect => rect.left));
- const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
- const top = measureRects[0].top;
- const bottom = measureRects[measureRects.length - 1].bottom;
- const left = minLeft;
- const right = maxRight;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- return fallback;
- }
- const resetRects = await platform.getElementRects({
- reference: {
- getBoundingClientRect
- },
- floating: elements.floating,
- strategy
- });
- if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {
- return {
- reset: {
- rects: resetRects
- }
- };
- }
- return {};
- }
- };
-};
-
-// For type backwards-compatibility, the `OffsetOptions` type was also
-// Derivable.
-
-async function convertValueToCoords(state, options) {
- const {
- placement,
- platform,
- elements
- } = state;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isVertical = getSideAxis(placement) === 'y';
- const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
- const crossAxisMulti = rtl && isVertical ? -1 : 1;
- const rawValue = evaluate(options, state);
-
- // eslint-disable-next-line prefer-const
- let {
- mainAxis,
- crossAxis,
- alignmentAxis
- } = typeof rawValue === 'number' ? {
- mainAxis: rawValue,
- crossAxis: 0,
- alignmentAxis: null
- } : {
- mainAxis: rawValue.mainAxis || 0,
- crossAxis: rawValue.crossAxis || 0,
- alignmentAxis: rawValue.alignmentAxis
- };
- if (alignment && typeof alignmentAxis === 'number') {
- crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
- }
- return isVertical ? {
- x: crossAxis * crossAxisMulti,
- y: mainAxis * mainAxisMulti
- } : {
- x: mainAxis * mainAxisMulti,
- y: crossAxis * crossAxisMulti
- };
-}
-
-/**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
-const offset = function (options) {
- if (options === void 0) {
- options = 0;
- }
- return {
- name: 'offset',
- options,
- async fn(state) {
- var _middlewareData$offse, _middlewareData$arrow;
- const {
- x,
- y,
- placement,
- middlewareData
- } = state;
- const diffCoords = await convertValueToCoords(state, options);
-
- // If the placement is the same and the arrow caused an alignment offset
- // then we don't need to change the positioning coordinates.
- if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- return {
- x: x + diffCoords.x,
- y: y + diffCoords.y,
- data: {
- ...diffCoords,
- placement
- }
- };
- }
- };
-};
-
-/**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
-const shift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'shift',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = false,
- limiter = {
- fn: _ref => {
- let {
- x,
- y
- } = _ref;
- return {
- x,
- y
- };
- }
- },
- ...detectOverflowOptions
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const crossAxis = getSideAxis(getSide(placement));
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- if (checkMainAxis) {
- const minSide = mainAxis === 'y' ? 'top' : 'left';
- const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
- const min = mainAxisCoord + overflow[minSide];
- const max = mainAxisCoord - overflow[maxSide];
- mainAxisCoord = clamp(min, mainAxisCoord, max);
- }
- if (checkCrossAxis) {
- const minSide = crossAxis === 'y' ? 'top' : 'left';
- const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
- const min = crossAxisCoord + overflow[minSide];
- const max = crossAxisCoord - overflow[maxSide];
- crossAxisCoord = clamp(min, crossAxisCoord, max);
- }
- const limitedCoords = limiter.fn({
- ...state,
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- });
- return {
- ...limitedCoords,
- data: {
- x: limitedCoords.x - x,
- y: limitedCoords.y - y,
- enabled: {
- [mainAxis]: checkMainAxis,
- [crossAxis]: checkCrossAxis
- }
- }
- };
- }
- };
-};
-/**
- * Built-in `limiter` that will stop `shift()` at a certain point.
- */
-const limitShift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- options,
- fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- middlewareData
- } = state;
- const {
- offset = 0,
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const crossAxis = getSideAxis(placement);
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- const rawOffset = evaluate(offset, state);
- const computedOffset = typeof rawOffset === 'number' ? {
- mainAxis: rawOffset,
- crossAxis: 0
- } : {
- mainAxis: 0,
- crossAxis: 0,
- ...rawOffset
- };
- if (checkMainAxis) {
- const len = mainAxis === 'y' ? 'height' : 'width';
- const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
- const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
- if (mainAxisCoord < limitMin) {
- mainAxisCoord = limitMin;
- } else if (mainAxisCoord > limitMax) {
- mainAxisCoord = limitMax;
- }
- }
- if (checkCrossAxis) {
- var _middlewareData$offse, _middlewareData$offse2;
- const len = mainAxis === 'y' ? 'width' : 'height';
- const isOriginSide = ['top', 'left'].includes(getSide(placement));
- const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
- const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
- if (crossAxisCoord < limitMin) {
- crossAxisCoord = limitMin;
- } else if (crossAxisCoord > limitMax) {
- crossAxisCoord = limitMax;
- }
- }
- return {
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- };
- }
- };
-};
-
-/**
- * Provides data that allows you to change the size of the floating element —
- * for instance, prevent it from overflowing the clipping boundary or match the
- * width of the reference element.
- * @see https://floating-ui.com/docs/size
- */
-const size = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'size',
- options,
- async fn(state) {
- var _state$middlewareData, _state$middlewareData2;
- const {
- placement,
- rects,
- platform,
- elements
- } = state;
- const {
- apply = () => {},
- ...detectOverflowOptions
- } = evaluate(options, state);
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isYAxis = getSideAxis(placement) === 'y';
- const {
- width,
- height
- } = rects.floating;
- let heightSide;
- let widthSide;
- if (side === 'top' || side === 'bottom') {
- heightSide = side;
- widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';
- } else {
- widthSide = side;
- heightSide = alignment === 'end' ? 'top' : 'bottom';
- }
- const maximumClippingHeight = height - overflow.top - overflow.bottom;
- const maximumClippingWidth = width - overflow.left - overflow.right;
- const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
- const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
- const noShift = !state.middlewareData.shift;
- let availableHeight = overflowAvailableHeight;
- let availableWidth = overflowAvailableWidth;
- if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
- availableWidth = maximumClippingWidth;
- }
- if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
- availableHeight = maximumClippingHeight;
- }
- if (noShift && !alignment) {
- const xMin = max(overflow.left, 0);
- const xMax = max(overflow.right, 0);
- const yMin = max(overflow.top, 0);
- const yMax = max(overflow.bottom, 0);
- if (isYAxis) {
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
- } else {
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
- }
- }
- await apply({
- ...state,
- availableWidth,
- availableHeight
- });
- const nextDimensions = await platform.getDimensions(elements.floating);
- if (width !== nextDimensions.width || height !== nextDimensions.height) {
- return {
- reset: {
- rects: true
- }
- };
- }
- return {};
- }
- };
-};
-
-export { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts
deleted file mode 100644
index 3456ec7..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts
+++ /dev/null
@@ -1,525 +0,0 @@
-import { AlignedPlacement } from '@floating-ui/utils';
-import { Alignment } from '@floating-ui/utils';
-import { Axis } from '@floating-ui/utils';
-import { ClientRectObject } from '@floating-ui/utils';
-import { Coords } from '@floating-ui/utils';
-import { Dimensions } from '@floating-ui/utils';
-import { ElementRects } from '@floating-ui/utils';
-import { Length } from '@floating-ui/utils';
-import { Padding } from '@floating-ui/utils';
-import { Placement } from '@floating-ui/utils';
-import { Rect } from '@floating-ui/utils';
-import { rectToClientRect } from '@floating-ui/utils';
-import { Side } from '@floating-ui/utils';
-import { SideObject } from '@floating-ui/utils';
-import { Strategy } from '@floating-ui/utils';
-import { VirtualElement } from '@floating-ui/utils';
-
-export { AlignedPlacement }
-
-export { Alignment }
-
-/**
- * Provides data to position an inner element of the floating element so that it
- * appears centered to the reference element.
- * @see https://floating-ui.com/docs/arrow
- */
-export declare const arrow: (options: ArrowOptions | Derivable) => Middleware;
-
-export declare interface ArrowOptions {
- /**
- * The arrow element to be positioned.
- * @default undefined
- */
- element: any;
- /**
- * The padding between the arrow element and the floating element edges.
- * Useful when the floating element has rounded corners.
- * @default 0
- */
- padding?: Padding;
-}
-
-/**
- * Optimizes the visibility of the floating element by choosing the placement
- * that has the most space available automatically, without needing to specify a
- * preferred placement. Alternative to `flip`.
- * @see https://floating-ui.com/docs/autoPlacement
- */
-export declare const autoPlacement: (options?: AutoPlacementOptions | Derivable) => Middleware;
-
-export declare interface AutoPlacementOptions extends DetectOverflowOptions {
- /**
- * The axis that runs along the alignment of the floating element. Determines
- * whether to check for most space along this axis.
- * @default false
- */
- crossAxis?: boolean;
- /**
- * Choose placements with a particular alignment.
- * @default undefined
- */
- alignment?: Alignment | null;
- /**
- * Whether to choose placements with the opposite alignment if the preferred
- * alignment does not fit.
- * @default true
- */
- autoAlignment?: boolean;
- /**
- * Which placements are allowed to be chosen. Placements must be within the
- * `alignment` option if explicitly set.
- * @default allPlacements (variable)
- */
- allowedPlacements?: Array;
-}
-
-export { Axis }
-
-export declare type Boundary = any;
-
-export { ClientRectObject }
-
-export declare type ComputePosition = (reference: unknown, floating: unknown, config: ComputePositionConfig) => Promise;
-
-/**
- * Computes the `x` and `y` coordinates that will place the floating element
- * next to a given reference element.
- *
- * This export does not have any `platform` interface logic. You will need to
- * write one for the platform you are using Floating UI with.
- */
-export declare const computePosition: ComputePosition;
-
-export declare interface ComputePositionConfig {
- /**
- * Object to interface with the current platform.
- */
- platform: Platform;
- /**
- * Where to place the floating element relative to the reference element.
- */
- placement?: Placement;
- /**
- * The strategy to use when positioning the floating element.
- */
- strategy?: Strategy;
- /**
- * Array of middleware objects to modify the positioning or provide data for
- * rendering.
- */
- middleware?: Array;
-}
-
-export declare interface ComputePositionReturn extends Coords {
- /**
- * The final chosen placement of the floating element.
- */
- placement: Placement;
- /**
- * The strategy used to position the floating element.
- */
- strategy: Strategy;
- /**
- * Object containing data returned from all middleware, keyed by their name.
- */
- middlewareData: MiddlewareData;
-}
-
-export { Coords }
-
-/**
- * Function option to derive middleware options from state.
- */
-export declare type Derivable = (state: MiddlewareState) => T;
-
-/**
- * Resolves with an object of overflow side offsets that determine how much the
- * element is overflowing a given clipping boundary on each side.
- * - positive = overflowing the boundary by that number of pixels
- * - negative = how many pixels left before it will overflow
- * - 0 = lies flush with the boundary
- * @see https://floating-ui.com/docs/detectOverflow
- */
-export declare function detectOverflow(state: MiddlewareState, options?: DetectOverflowOptions | Derivable): Promise;
-
-export declare interface DetectOverflowOptions {
- /**
- * The clipping element(s) or area in which overflow will be checked.
- * @default 'clippingAncestors'
- */
- boundary?: Boundary;
- /**
- * The root clipping area in which overflow will be checked.
- * @default 'viewport'
- */
- rootBoundary?: RootBoundary;
- /**
- * The element in which overflow is being checked relative to a boundary.
- * @default 'floating'
- */
- elementContext?: ElementContext;
- /**
- * Whether to check for overflow using the alternate element's boundary
- * (`clippingAncestors` boundary only).
- * @default false
- */
- altBoundary?: boolean;
- /**
- * Virtual padding for the resolved overflow detection offsets.
- * @default 0
- */
- padding?: Padding;
-}
-
-export { Dimensions }
-
-export declare type ElementContext = 'reference' | 'floating';
-
-export { ElementRects }
-
-export declare interface Elements {
- reference: ReferenceElement;
- floating: FloatingElement;
-}
-
-/**
- * Optimizes the visibility of the floating element by flipping the `placement`
- * in order to keep it in view when the preferred placement(s) will overflow the
- * clipping boundary. Alternative to `autoPlacement`.
- * @see https://floating-ui.com/docs/flip
- */
-export declare const flip: (options?: FlipOptions | Derivable) => Middleware;
-
-export declare interface FlipOptions extends DetectOverflowOptions {
- /**
- * The axis that runs along the side of the floating element. Determines
- * whether overflow along this axis is checked to perform a flip.
- * @default true
- */
- mainAxis?: boolean;
- /**
- * The axis that runs along the alignment of the floating element. Determines
- * whether overflow along this axis is checked to perform a flip.
- * @default true
- */
- crossAxis?: boolean;
- /**
- * Placements to try sequentially if the preferred `placement` does not fit.
- * @default [oppositePlacement] (computed)
- */
- fallbackPlacements?: Array;
- /**
- * What strategy to use when no placements fit.
- * @default 'bestFit'
- */
- fallbackStrategy?: 'bestFit' | 'initialPlacement';
- /**
- * Whether to allow fallback to the perpendicular axis of the preferred
- * placement, and if so, which side direction along the axis to prefer.
- * @default 'none' (disallow fallback)
- */
- fallbackAxisSideDirection?: 'none' | 'start' | 'end';
- /**
- * Whether to flip to placements with the opposite alignment if they fit
- * better.
- * @default true
- */
- flipAlignment?: boolean;
-}
-
-export declare type FloatingElement = any;
-
-/**
- * Provides data to hide the floating element in applicable situations, such as
- * when it is not in the same clipping context as the reference element.
- * @see https://floating-ui.com/docs/hide
- */
-export declare const hide: (options?: HideOptions | Derivable) => Middleware;
-
-export declare interface HideOptions extends DetectOverflowOptions {
- /**
- * The strategy used to determine when to hide the floating element.
- */
- strategy?: 'referenceHidden' | 'escaped';
-}
-
-/**
- * Provides improved positioning for inline reference elements that can span
- * over multiple lines, such as hyperlinks or range selections.
- * @see https://floating-ui.com/docs/inline
- */
-export declare const inline: (options?: InlineOptions | Derivable) => Middleware;
-
-export declare interface InlineOptions {
- /**
- * Viewport-relative `x` coordinate to choose a `ClientRect`.
- * @default undefined
- */
- x?: number;
- /**
- * Viewport-relative `y` coordinate to choose a `ClientRect`.
- * @default undefined
- */
- y?: number;
- /**
- * Represents the padding around a disjoined rect when choosing it.
- * @default 2
- */
- padding?: Padding;
-}
-
-export { Length }
-
-/**
- * Built-in `limiter` that will stop `shift()` at a certain point.
- */
-export declare const limitShift: (options?: LimitShiftOptions | Derivable) => {
- options: any;
- fn: (state: MiddlewareState) => Coords;
-};
-
-declare type LimitShiftOffset = number | {
- /**
- * Offset the limiting of the axis that runs along the alignment of the
- * floating element.
- */
- mainAxis?: number;
- /**
- * Offset the limiting of the axis that runs along the side of the
- * floating element.
- */
- crossAxis?: number;
-};
-
-export declare interface LimitShiftOptions {
- /**
- * Offset when limiting starts. `0` will limit when the opposite edges of the
- * reference and floating elements are aligned.
- * - positive = start limiting earlier
- * - negative = start limiting later
- */
- offset?: LimitShiftOffset | Derivable;
- /**
- * Whether to limit the axis that runs along the alignment of the floating
- * element.
- */
- mainAxis?: boolean;
- /**
- * Whether to limit the axis that runs along the side of the floating element.
- */
- crossAxis?: boolean;
-}
-
-export declare type Middleware = {
- name: string;
- options?: any;
- fn: (state: MiddlewareState) => Promisable;
-};
-
-/**
- * @deprecated use `MiddlewareState` instead.
- */
-export declare type MiddlewareArguments = MiddlewareState;
-
-export declare interface MiddlewareData {
- [key: string]: any;
- arrow?: Partial & {
- centerOffset: number;
- alignmentOffset?: number;
- };
- autoPlacement?: {
- index?: number;
- overflows: Array<{
- placement: Placement;
- overflows: Array;
- }>;
- };
- flip?: {
- index?: number;
- overflows: Array<{
- placement: Placement;
- overflows: Array;
- }>;
- };
- hide?: {
- referenceHidden?: boolean;
- escaped?: boolean;
- referenceHiddenOffsets?: SideObject;
- escapedOffsets?: SideObject;
- };
- offset?: Coords & {
- placement: Placement;
- };
- shift?: Coords & {
- enabled: {
- [key in Axis]: boolean;
- };
- };
-}
-
-export declare interface MiddlewareReturn extends Partial {
- data?: {
- [key: string]: any;
- };
- reset?: boolean | {
- placement?: Placement;
- rects?: boolean | ElementRects;
- };
-}
-
-export declare interface MiddlewareState extends Coords {
- initialPlacement: Placement;
- placement: Placement;
- strategy: Strategy;
- middlewareData: MiddlewareData;
- elements: Elements;
- rects: ElementRects;
- platform: Platform;
-}
-
-/**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
-export declare const offset: (options?: OffsetOptions) => Middleware;
-
-export declare type OffsetOptions = OffsetValue | Derivable;
-
-declare type OffsetValue = number | {
- /**
- * The axis that runs along the side of the floating element. Represents
- * the distance (gutter or margin) between the reference and floating
- * element.
- * @default 0
- */
- mainAxis?: number;
- /**
- * The axis that runs along the alignment of the floating element.
- * Represents the skidding between the reference and floating element.
- * @default 0
- */
- crossAxis?: number;
- /**
- * The same axis as `crossAxis` but applies only to aligned placements
- * and inverts the `end` alignment. When set to a number, it overrides the
- * `crossAxis` value.
- *
- * A positive number will move the floating element in the direction of
- * the opposite edge to the one that is aligned, while a negative number
- * the reverse.
- * @default null
- */
- alignmentAxis?: number | null;
-};
-
-export { Padding }
-
-export { Placement }
-
-/**
- * Platform interface methods to work with the current platform.
- * @see https://floating-ui.com/docs/platform
- */
-export declare interface Platform {
- getElementRects: (args: {
- reference: ReferenceElement;
- floating: FloatingElement;
- strategy: Strategy;
- }) => Promisable;
- getClippingRect: (args: {
- element: any;
- boundary: Boundary;
- rootBoundary: RootBoundary;
- strategy: Strategy;
- }) => Promisable;
- getDimensions: (element: any) => Promisable;
- convertOffsetParentRelativeRectToViewportRelativeRect?: (args: {
- elements?: Elements;
- rect: Rect;
- offsetParent: any;
- strategy: Strategy;
- }) => Promisable;
- getOffsetParent?: (element: any) => Promisable;
- isElement?: (value: any) => Promisable;
- getDocumentElement?: (element: any) => Promisable;
- getClientRects?: (element: any) => Promisable>;
- isRTL?: (element: any) => Promisable;
- getScale?: (element: any) => Promisable<{
- x: number;
- y: number;
- }>;
-}
-
-declare type Promisable = T | Promise;
-
-export { Rect }
-
-export { rectToClientRect }
-
-export declare type ReferenceElement = any;
-
-export declare type RootBoundary = 'viewport' | 'document' | Rect;
-
-/**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
-export declare const shift: (options?: ShiftOptions | Derivable) => Middleware;
-
-export declare interface ShiftOptions extends DetectOverflowOptions {
- /**
- * The axis that runs along the alignment of the floating element. Determines
- * whether overflow along this axis is checked to perform shifting.
- * @default true
- */
- mainAxis?: boolean;
- /**
- * The axis that runs along the side of the floating element. Determines
- * whether overflow along this axis is checked to perform shifting.
- * @default false
- */
- crossAxis?: boolean;
- /**
- * Accepts a function that limits the shifting done in order to prevent
- * detachment.
- */
- limiter?: {
- fn: (state: MiddlewareState) => Coords;
- options?: any;
- };
-}
-
-export { Side }
-
-export { SideObject }
-
-/**
- * Provides data that allows you to change the size of the floating element —
- * for instance, prevent it from overflowing the clipping boundary or match the
- * width of the reference element.
- * @see https://floating-ui.com/docs/size
- */
-export declare const size: (options?: SizeOptions | Derivable) => Middleware;
-
-export declare interface SizeOptions extends DetectOverflowOptions {
- /**
- * Function that is called to perform style mutations to the floating element
- * to change its size.
- * @default undefined
- */
- apply?(args: MiddlewareState & {
- availableWidth: number;
- availableHeight: number;
- }): void | Promise;
-}
-
-export { Strategy }
-
-export { VirtualElement }
-
-export { }
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.d.ts b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.d.ts
deleted file mode 100644
index 3456ec7..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.d.ts
+++ /dev/null
@@ -1,525 +0,0 @@
-import { AlignedPlacement } from '@floating-ui/utils';
-import { Alignment } from '@floating-ui/utils';
-import { Axis } from '@floating-ui/utils';
-import { ClientRectObject } from '@floating-ui/utils';
-import { Coords } from '@floating-ui/utils';
-import { Dimensions } from '@floating-ui/utils';
-import { ElementRects } from '@floating-ui/utils';
-import { Length } from '@floating-ui/utils';
-import { Padding } from '@floating-ui/utils';
-import { Placement } from '@floating-ui/utils';
-import { Rect } from '@floating-ui/utils';
-import { rectToClientRect } from '@floating-ui/utils';
-import { Side } from '@floating-ui/utils';
-import { SideObject } from '@floating-ui/utils';
-import { Strategy } from '@floating-ui/utils';
-import { VirtualElement } from '@floating-ui/utils';
-
-export { AlignedPlacement }
-
-export { Alignment }
-
-/**
- * Provides data to position an inner element of the floating element so that it
- * appears centered to the reference element.
- * @see https://floating-ui.com/docs/arrow
- */
-export declare const arrow: (options: ArrowOptions | Derivable) => Middleware;
-
-export declare interface ArrowOptions {
- /**
- * The arrow element to be positioned.
- * @default undefined
- */
- element: any;
- /**
- * The padding between the arrow element and the floating element edges.
- * Useful when the floating element has rounded corners.
- * @default 0
- */
- padding?: Padding;
-}
-
-/**
- * Optimizes the visibility of the floating element by choosing the placement
- * that has the most space available automatically, without needing to specify a
- * preferred placement. Alternative to `flip`.
- * @see https://floating-ui.com/docs/autoPlacement
- */
-export declare const autoPlacement: (options?: AutoPlacementOptions | Derivable) => Middleware;
-
-export declare interface AutoPlacementOptions extends DetectOverflowOptions {
- /**
- * The axis that runs along the alignment of the floating element. Determines
- * whether to check for most space along this axis.
- * @default false
- */
- crossAxis?: boolean;
- /**
- * Choose placements with a particular alignment.
- * @default undefined
- */
- alignment?: Alignment | null;
- /**
- * Whether to choose placements with the opposite alignment if the preferred
- * alignment does not fit.
- * @default true
- */
- autoAlignment?: boolean;
- /**
- * Which placements are allowed to be chosen. Placements must be within the
- * `alignment` option if explicitly set.
- * @default allPlacements (variable)
- */
- allowedPlacements?: Array;
-}
-
-export { Axis }
-
-export declare type Boundary = any;
-
-export { ClientRectObject }
-
-export declare type ComputePosition = (reference: unknown, floating: unknown, config: ComputePositionConfig) => Promise;
-
-/**
- * Computes the `x` and `y` coordinates that will place the floating element
- * next to a given reference element.
- *
- * This export does not have any `platform` interface logic. You will need to
- * write one for the platform you are using Floating UI with.
- */
-export declare const computePosition: ComputePosition;
-
-export declare interface ComputePositionConfig {
- /**
- * Object to interface with the current platform.
- */
- platform: Platform;
- /**
- * Where to place the floating element relative to the reference element.
- */
- placement?: Placement;
- /**
- * The strategy to use when positioning the floating element.
- */
- strategy?: Strategy;
- /**
- * Array of middleware objects to modify the positioning or provide data for
- * rendering.
- */
- middleware?: Array;
-}
-
-export declare interface ComputePositionReturn extends Coords {
- /**
- * The final chosen placement of the floating element.
- */
- placement: Placement;
- /**
- * The strategy used to position the floating element.
- */
- strategy: Strategy;
- /**
- * Object containing data returned from all middleware, keyed by their name.
- */
- middlewareData: MiddlewareData;
-}
-
-export { Coords }
-
-/**
- * Function option to derive middleware options from state.
- */
-export declare type Derivable = (state: MiddlewareState) => T;
-
-/**
- * Resolves with an object of overflow side offsets that determine how much the
- * element is overflowing a given clipping boundary on each side.
- * - positive = overflowing the boundary by that number of pixels
- * - negative = how many pixels left before it will overflow
- * - 0 = lies flush with the boundary
- * @see https://floating-ui.com/docs/detectOverflow
- */
-export declare function detectOverflow(state: MiddlewareState, options?: DetectOverflowOptions | Derivable): Promise;
-
-export declare interface DetectOverflowOptions {
- /**
- * The clipping element(s) or area in which overflow will be checked.
- * @default 'clippingAncestors'
- */
- boundary?: Boundary;
- /**
- * The root clipping area in which overflow will be checked.
- * @default 'viewport'
- */
- rootBoundary?: RootBoundary;
- /**
- * The element in which overflow is being checked relative to a boundary.
- * @default 'floating'
- */
- elementContext?: ElementContext;
- /**
- * Whether to check for overflow using the alternate element's boundary
- * (`clippingAncestors` boundary only).
- * @default false
- */
- altBoundary?: boolean;
- /**
- * Virtual padding for the resolved overflow detection offsets.
- * @default 0
- */
- padding?: Padding;
-}
-
-export { Dimensions }
-
-export declare type ElementContext = 'reference' | 'floating';
-
-export { ElementRects }
-
-export declare interface Elements {
- reference: ReferenceElement;
- floating: FloatingElement;
-}
-
-/**
- * Optimizes the visibility of the floating element by flipping the `placement`
- * in order to keep it in view when the preferred placement(s) will overflow the
- * clipping boundary. Alternative to `autoPlacement`.
- * @see https://floating-ui.com/docs/flip
- */
-export declare const flip: (options?: FlipOptions | Derivable) => Middleware;
-
-export declare interface FlipOptions extends DetectOverflowOptions {
- /**
- * The axis that runs along the side of the floating element. Determines
- * whether overflow along this axis is checked to perform a flip.
- * @default true
- */
- mainAxis?: boolean;
- /**
- * The axis that runs along the alignment of the floating element. Determines
- * whether overflow along this axis is checked to perform a flip.
- * @default true
- */
- crossAxis?: boolean;
- /**
- * Placements to try sequentially if the preferred `placement` does not fit.
- * @default [oppositePlacement] (computed)
- */
- fallbackPlacements?: Array;
- /**
- * What strategy to use when no placements fit.
- * @default 'bestFit'
- */
- fallbackStrategy?: 'bestFit' | 'initialPlacement';
- /**
- * Whether to allow fallback to the perpendicular axis of the preferred
- * placement, and if so, which side direction along the axis to prefer.
- * @default 'none' (disallow fallback)
- */
- fallbackAxisSideDirection?: 'none' | 'start' | 'end';
- /**
- * Whether to flip to placements with the opposite alignment if they fit
- * better.
- * @default true
- */
- flipAlignment?: boolean;
-}
-
-export declare type FloatingElement = any;
-
-/**
- * Provides data to hide the floating element in applicable situations, such as
- * when it is not in the same clipping context as the reference element.
- * @see https://floating-ui.com/docs/hide
- */
-export declare const hide: (options?: HideOptions | Derivable) => Middleware;
-
-export declare interface HideOptions extends DetectOverflowOptions {
- /**
- * The strategy used to determine when to hide the floating element.
- */
- strategy?: 'referenceHidden' | 'escaped';
-}
-
-/**
- * Provides improved positioning for inline reference elements that can span
- * over multiple lines, such as hyperlinks or range selections.
- * @see https://floating-ui.com/docs/inline
- */
-export declare const inline: (options?: InlineOptions | Derivable) => Middleware;
-
-export declare interface InlineOptions {
- /**
- * Viewport-relative `x` coordinate to choose a `ClientRect`.
- * @default undefined
- */
- x?: number;
- /**
- * Viewport-relative `y` coordinate to choose a `ClientRect`.
- * @default undefined
- */
- y?: number;
- /**
- * Represents the padding around a disjoined rect when choosing it.
- * @default 2
- */
- padding?: Padding;
-}
-
-export { Length }
-
-/**
- * Built-in `limiter` that will stop `shift()` at a certain point.
- */
-export declare const limitShift: (options?: LimitShiftOptions | Derivable) => {
- options: any;
- fn: (state: MiddlewareState) => Coords;
-};
-
-declare type LimitShiftOffset = number | {
- /**
- * Offset the limiting of the axis that runs along the alignment of the
- * floating element.
- */
- mainAxis?: number;
- /**
- * Offset the limiting of the axis that runs along the side of the
- * floating element.
- */
- crossAxis?: number;
-};
-
-export declare interface LimitShiftOptions {
- /**
- * Offset when limiting starts. `0` will limit when the opposite edges of the
- * reference and floating elements are aligned.
- * - positive = start limiting earlier
- * - negative = start limiting later
- */
- offset?: LimitShiftOffset | Derivable;
- /**
- * Whether to limit the axis that runs along the alignment of the floating
- * element.
- */
- mainAxis?: boolean;
- /**
- * Whether to limit the axis that runs along the side of the floating element.
- */
- crossAxis?: boolean;
-}
-
-export declare type Middleware = {
- name: string;
- options?: any;
- fn: (state: MiddlewareState) => Promisable;
-};
-
-/**
- * @deprecated use `MiddlewareState` instead.
- */
-export declare type MiddlewareArguments = MiddlewareState;
-
-export declare interface MiddlewareData {
- [key: string]: any;
- arrow?: Partial & {
- centerOffset: number;
- alignmentOffset?: number;
- };
- autoPlacement?: {
- index?: number;
- overflows: Array<{
- placement: Placement;
- overflows: Array;
- }>;
- };
- flip?: {
- index?: number;
- overflows: Array<{
- placement: Placement;
- overflows: Array;
- }>;
- };
- hide?: {
- referenceHidden?: boolean;
- escaped?: boolean;
- referenceHiddenOffsets?: SideObject;
- escapedOffsets?: SideObject;
- };
- offset?: Coords & {
- placement: Placement;
- };
- shift?: Coords & {
- enabled: {
- [key in Axis]: boolean;
- };
- };
-}
-
-export declare interface MiddlewareReturn extends Partial {
- data?: {
- [key: string]: any;
- };
- reset?: boolean | {
- placement?: Placement;
- rects?: boolean | ElementRects;
- };
-}
-
-export declare interface MiddlewareState extends Coords {
- initialPlacement: Placement;
- placement: Placement;
- strategy: Strategy;
- middlewareData: MiddlewareData;
- elements: Elements;
- rects: ElementRects;
- platform: Platform;
-}
-
-/**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
-export declare const offset: (options?: OffsetOptions) => Middleware;
-
-export declare type OffsetOptions = OffsetValue | Derivable;
-
-declare type OffsetValue = number | {
- /**
- * The axis that runs along the side of the floating element. Represents
- * the distance (gutter or margin) between the reference and floating
- * element.
- * @default 0
- */
- mainAxis?: number;
- /**
- * The axis that runs along the alignment of the floating element.
- * Represents the skidding between the reference and floating element.
- * @default 0
- */
- crossAxis?: number;
- /**
- * The same axis as `crossAxis` but applies only to aligned placements
- * and inverts the `end` alignment. When set to a number, it overrides the
- * `crossAxis` value.
- *
- * A positive number will move the floating element in the direction of
- * the opposite edge to the one that is aligned, while a negative number
- * the reverse.
- * @default null
- */
- alignmentAxis?: number | null;
-};
-
-export { Padding }
-
-export { Placement }
-
-/**
- * Platform interface methods to work with the current platform.
- * @see https://floating-ui.com/docs/platform
- */
-export declare interface Platform {
- getElementRects: (args: {
- reference: ReferenceElement;
- floating: FloatingElement;
- strategy: Strategy;
- }) => Promisable;
- getClippingRect: (args: {
- element: any;
- boundary: Boundary;
- rootBoundary: RootBoundary;
- strategy: Strategy;
- }) => Promisable;
- getDimensions: (element: any) => Promisable;
- convertOffsetParentRelativeRectToViewportRelativeRect?: (args: {
- elements?: Elements;
- rect: Rect;
- offsetParent: any;
- strategy: Strategy;
- }) => Promisable;
- getOffsetParent?: (element: any) => Promisable;
- isElement?: (value: any) => Promisable;
- getDocumentElement?: (element: any) => Promisable;
- getClientRects?: (element: any) => Promisable>;
- isRTL?: (element: any) => Promisable;
- getScale?: (element: any) => Promisable<{
- x: number;
- y: number;
- }>;
-}
-
-declare type Promisable = T | Promise;
-
-export { Rect }
-
-export { rectToClientRect }
-
-export declare type ReferenceElement = any;
-
-export declare type RootBoundary = 'viewport' | 'document' | Rect;
-
-/**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
-export declare const shift: (options?: ShiftOptions | Derivable) => Middleware;
-
-export declare interface ShiftOptions extends DetectOverflowOptions {
- /**
- * The axis that runs along the alignment of the floating element. Determines
- * whether overflow along this axis is checked to perform shifting.
- * @default true
- */
- mainAxis?: boolean;
- /**
- * The axis that runs along the side of the floating element. Determines
- * whether overflow along this axis is checked to perform shifting.
- * @default false
- */
- crossAxis?: boolean;
- /**
- * Accepts a function that limits the shifting done in order to prevent
- * detachment.
- */
- limiter?: {
- fn: (state: MiddlewareState) => Coords;
- options?: any;
- };
-}
-
-export { Side }
-
-export { SideObject }
-
-/**
- * Provides data that allows you to change the size of the floating element —
- * for instance, prevent it from overflowing the clipping boundary or match the
- * width of the reference element.
- * @see https://floating-ui.com/docs/size
- */
-export declare const size: (options?: SizeOptions | Derivable) => Middleware;
-
-export declare interface SizeOptions extends DetectOverflowOptions {
- /**
- * Function that is called to perform style mutations to the floating element
- * to change its size.
- * @default undefined
- */
- apply?(args: MiddlewareState & {
- availableWidth: number;
- availableHeight: number;
- }): void | Promise;
-}
-
-export { Strategy }
-
-export { VirtualElement }
-
-export { }
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js
deleted file mode 100644
index 5f05cd8..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js
+++ /dev/null
@@ -1,1041 +0,0 @@
-import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';
-export { rectToClientRect } from '@floating-ui/utils';
-
-function computeCoordsFromPlacement(_ref, placement, rtl) {
- let {
- reference,
- floating
- } = _ref;
- const sideAxis = getSideAxis(placement);
- const alignmentAxis = getAlignmentAxis(placement);
- const alignLength = getAxisLength(alignmentAxis);
- const side = getSide(placement);
- const isVertical = sideAxis === 'y';
- const commonX = reference.x + reference.width / 2 - floating.width / 2;
- const commonY = reference.y + reference.height / 2 - floating.height / 2;
- const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
- let coords;
- switch (side) {
- case 'top':
- coords = {
- x: commonX,
- y: reference.y - floating.height
- };
- break;
- case 'bottom':
- coords = {
- x: commonX,
- y: reference.y + reference.height
- };
- break;
- case 'right':
- coords = {
- x: reference.x + reference.width,
- y: commonY
- };
- break;
- case 'left':
- coords = {
- x: reference.x - floating.width,
- y: commonY
- };
- break;
- default:
- coords = {
- x: reference.x,
- y: reference.y
- };
- }
- switch (getAlignment(placement)) {
- case 'start':
- coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- case 'end':
- coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- }
- return coords;
-}
-
-/**
- * Computes the `x` and `y` coordinates that will place the floating element
- * next to a given reference element.
- *
- * This export does not have any `platform` interface logic. You will need to
- * write one for the platform you are using Floating UI with.
- */
-const computePosition = async (reference, floating, config) => {
- const {
- placement = 'bottom',
- strategy = 'absolute',
- middleware = [],
- platform
- } = config;
- const validMiddleware = middleware.filter(Boolean);
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
- let rects = await platform.getElementRects({
- reference,
- floating,
- strategy
- });
- let {
- x,
- y
- } = computeCoordsFromPlacement(rects, placement, rtl);
- let statefulPlacement = placement;
- let middlewareData = {};
- let resetCount = 0;
- for (let i = 0; i < validMiddleware.length; i++) {
- const {
- name,
- fn
- } = validMiddleware[i];
- const {
- x: nextX,
- y: nextY,
- data,
- reset
- } = await fn({
- x,
- y,
- initialPlacement: placement,
- placement: statefulPlacement,
- strategy,
- middlewareData,
- rects,
- platform,
- elements: {
- reference,
- floating
- }
- });
- x = nextX != null ? nextX : x;
- y = nextY != null ? nextY : y;
- middlewareData = {
- ...middlewareData,
- [name]: {
- ...middlewareData[name],
- ...data
- }
- };
- if (reset && resetCount <= 50) {
- resetCount++;
- if (typeof reset === 'object') {
- if (reset.placement) {
- statefulPlacement = reset.placement;
- }
- if (reset.rects) {
- rects = reset.rects === true ? await platform.getElementRects({
- reference,
- floating,
- strategy
- }) : reset.rects;
- }
- ({
- x,
- y
- } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
- }
- i = -1;
- }
- }
- return {
- x,
- y,
- placement: statefulPlacement,
- strategy,
- middlewareData
- };
-};
-
-/**
- * Resolves with an object of overflow side offsets that determine how much the
- * element is overflowing a given clipping boundary on each side.
- * - positive = overflowing the boundary by that number of pixels
- * - negative = how many pixels left before it will overflow
- * - 0 = lies flush with the boundary
- * @see https://floating-ui.com/docs/detectOverflow
- */
-async function detectOverflow(state, options) {
- var _await$platform$isEle;
- if (options === void 0) {
- options = {};
- }
- const {
- x,
- y,
- platform,
- rects,
- elements,
- strategy
- } = state;
- const {
- boundary = 'clippingAncestors',
- rootBoundary = 'viewport',
- elementContext = 'floating',
- altBoundary = false,
- padding = 0
- } = evaluate(options, state);
- const paddingObject = getPaddingObject(padding);
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
- const element = elements[altBoundary ? altContext : elementContext];
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
- element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
- boundary,
- rootBoundary,
- strategy
- }));
- const rect = elementContext === 'floating' ? {
- x,
- y,
- width: rects.floating.width,
- height: rects.floating.height
- } : rects.reference;
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
- x: 1,
- y: 1
- } : {
- x: 1,
- y: 1
- };
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
- elements,
- rect,
- offsetParent,
- strategy
- }) : rect);
- return {
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
- };
-}
-
-/**
- * Provides data to position an inner element of the floating element so that it
- * appears centered to the reference element.
- * @see https://floating-ui.com/docs/arrow
- */
-const arrow = options => ({
- name: 'arrow',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- platform,
- elements,
- middlewareData
- } = state;
- // Since `element` is required, we don't Partial<> the type.
- const {
- element,
- padding = 0
- } = evaluate(options, state) || {};
- if (element == null) {
- return {};
- }
- const paddingObject = getPaddingObject(padding);
- const coords = {
- x,
- y
- };
- const axis = getAlignmentAxis(placement);
- const length = getAxisLength(axis);
- const arrowDimensions = await platform.getDimensions(element);
- const isYAxis = axis === 'y';
- const minProp = isYAxis ? 'top' : 'left';
- const maxProp = isYAxis ? 'bottom' : 'right';
- const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
- const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
- const startDiff = coords[axis] - rects.reference[axis];
- const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
- let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
-
- // DOM platform can return `window` as the `offsetParent`.
- if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
- clientSize = elements.floating[clientProp] || rects.floating[length];
- }
- const centerToReference = endDiff / 2 - startDiff / 2;
-
- // If the padding is large enough that it causes the arrow to no longer be
- // centered, modify the padding so that it is centered.
- const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
- const minPadding = min(paddingObject[minProp], largestPossiblePadding);
- const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
-
- // Make sure the arrow doesn't overflow the floating element if the center
- // point is outside the floating element's bounds.
- const min$1 = minPadding;
- const max = clientSize - arrowDimensions[length] - maxPadding;
- const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
- const offset = clamp(min$1, center, max);
-
- // If the reference is small enough that the arrow's padding causes it to
- // to point to nothing for an aligned placement, adjust the offset of the
- // floating element itself. To ensure `shift()` continues to take action,
- // a single reset is performed when this is true.
- const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
- const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
- return {
- [axis]: coords[axis] + alignmentOffset,
- data: {
- [axis]: offset,
- centerOffset: center - offset - alignmentOffset,
- ...(shouldAddOffset && {
- alignmentOffset
- })
- },
- reset: shouldAddOffset
- };
- }
-});
-
-function getPlacementList(alignment, autoAlignment, allowedPlacements) {
- const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
- return allowedPlacementsSortedByAlignment.filter(placement => {
- if (alignment) {
- return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
- }
- return true;
- });
-}
-/**
- * Optimizes the visibility of the floating element by choosing the placement
- * that has the most space available automatically, without needing to specify a
- * preferred placement. Alternative to `flip`.
- * @see https://floating-ui.com/docs/autoPlacement
- */
-const autoPlacement = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'autoPlacement',
- options,
- async fn(state) {
- var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;
- const {
- rects,
- middlewareData,
- placement,
- platform,
- elements
- } = state;
- const {
- crossAxis = false,
- alignment,
- allowedPlacements = placements,
- autoAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
- const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
- const currentPlacement = placements$1[currentIndex];
- if (currentPlacement == null) {
- return {};
- }
- const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
-
- // Make `computeCoords` start from the right place.
- if (placement !== currentPlacement) {
- return {
- reset: {
- placement: placements$1[0]
- }
- };
- }
- const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];
- const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {
- placement: currentPlacement,
- overflows: currentOverflows
- }];
- const nextPlacement = placements$1[currentIndex + 1];
-
- // There are more placements to check.
- if (nextPlacement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
- const placementsSortedByMostSpace = allOverflows.map(d => {
- const alignment = getAlignment(d.placement);
- return [d.placement, alignment && crossAxis ?
- // Check along the mainAxis and main crossAxis side.
- d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :
- // Check only the mainAxis.
- d.overflows[0], d.overflows];
- }).sort((a, b) => a[1] - b[1]);
- const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,
- // Aligned placements should not check their opposite crossAxis
- // side.
- getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));
- const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];
- if (resetPlacement !== placement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: resetPlacement
- }
- };
- }
- return {};
- }
- };
-};
-
-/**
- * Optimizes the visibility of the floating element by flipping the `placement`
- * in order to keep it in view when the preferred placement(s) will overflow the
- * clipping boundary. Alternative to `autoPlacement`.
- * @see https://floating-ui.com/docs/flip
- */
-const flip = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'flip',
- options,
- async fn(state) {
- var _middlewareData$arrow, _middlewareData$flip;
- const {
- placement,
- middlewareData,
- rects,
- initialPlacement,
- platform,
- elements
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true,
- fallbackPlacements: specifiedFallbackPlacements,
- fallbackStrategy = 'bestFit',
- fallbackAxisSideDirection = 'none',
- flipAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
-
- // If a reset by the arrow was caused due to an alignment offset being
- // added, we should skip any logic now since `flip()` has already done its
- // work.
- // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643
- if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- const side = getSide(placement);
- const initialSideAxis = getSideAxis(initialPlacement);
- const isBasePlacement = getSide(initialPlacement) === initialPlacement;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
- const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';
- if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
- fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
- }
- const placements = [initialPlacement, ...fallbackPlacements];
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const overflows = [];
- let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
- if (checkMainAxis) {
- overflows.push(overflow[side]);
- }
- if (checkCrossAxis) {
- const sides = getAlignmentSides(placement, rects, rtl);
- overflows.push(overflow[sides[0]], overflow[sides[1]]);
- }
- overflowsData = [...overflowsData, {
- placement,
- overflows
- }];
-
- // One or more sides is overflowing.
- if (!overflows.every(side => side <= 0)) {
- var _middlewareData$flip2, _overflowsData$filter;
- const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
- const nextPlacement = placements[nextIndex];
- if (nextPlacement) {
- // Try next placement and re-run the lifecycle.
- return {
- data: {
- index: nextIndex,
- overflows: overflowsData
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
-
- // First, find the candidates that fit on the mainAxis side of overflow,
- // then find the placement that fits the best on the main crossAxis side.
- let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
-
- // Otherwise fallback.
- if (!resetPlacement) {
- switch (fallbackStrategy) {
- case 'bestFit':
- {
- var _overflowsData$filter2;
- const placement = (_overflowsData$filter2 = overflowsData.filter(d => {
- if (hasFallbackAxisSideDirection) {
- const currentSideAxis = getSideAxis(d.placement);
- return currentSideAxis === initialSideAxis ||
- // Create a bias to the `y` side axis due to horizontal
- // reading directions favoring greater width.
- currentSideAxis === 'y';
- }
- return true;
- }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
- if (placement) {
- resetPlacement = placement;
- }
- break;
- }
- case 'initialPlacement':
- resetPlacement = initialPlacement;
- break;
- }
- }
- if (placement !== resetPlacement) {
- return {
- reset: {
- placement: resetPlacement
- }
- };
- }
- }
- return {};
- }
- };
-};
-
-function getSideOffsets(overflow, rect) {
- return {
- top: overflow.top - rect.height,
- right: overflow.right - rect.width,
- bottom: overflow.bottom - rect.height,
- left: overflow.left - rect.width
- };
-}
-function isAnySideFullyClipped(overflow) {
- return sides.some(side => overflow[side] >= 0);
-}
-/**
- * Provides data to hide the floating element in applicable situations, such as
- * when it is not in the same clipping context as the reference element.
- * @see https://floating-ui.com/docs/hide
- */
-const hide = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'hide',
- options,
- async fn(state) {
- const {
- rects
- } = state;
- const {
- strategy = 'referenceHidden',
- ...detectOverflowOptions
- } = evaluate(options, state);
- switch (strategy) {
- case 'referenceHidden':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- elementContext: 'reference'
- });
- const offsets = getSideOffsets(overflow, rects.reference);
- return {
- data: {
- referenceHiddenOffsets: offsets,
- referenceHidden: isAnySideFullyClipped(offsets)
- }
- };
- }
- case 'escaped':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- altBoundary: true
- });
- const offsets = getSideOffsets(overflow, rects.floating);
- return {
- data: {
- escapedOffsets: offsets,
- escaped: isAnySideFullyClipped(offsets)
- }
- };
- }
- default:
- {
- return {};
- }
- }
- }
- };
-};
-
-function getBoundingRect(rects) {
- const minX = min(...rects.map(rect => rect.left));
- const minY = min(...rects.map(rect => rect.top));
- const maxX = max(...rects.map(rect => rect.right));
- const maxY = max(...rects.map(rect => rect.bottom));
- return {
- x: minX,
- y: minY,
- width: maxX - minX,
- height: maxY - minY
- };
-}
-function getRectsByLine(rects) {
- const sortedRects = rects.slice().sort((a, b) => a.y - b.y);
- const groups = [];
- let prevRect = null;
- for (let i = 0; i < sortedRects.length; i++) {
- const rect = sortedRects[i];
- if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {
- groups.push([rect]);
- } else {
- groups[groups.length - 1].push(rect);
- }
- prevRect = rect;
- }
- return groups.map(rect => rectToClientRect(getBoundingRect(rect)));
-}
-/**
- * Provides improved positioning for inline reference elements that can span
- * over multiple lines, such as hyperlinks or range selections.
- * @see https://floating-ui.com/docs/inline
- */
-const inline = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'inline',
- options,
- async fn(state) {
- const {
- placement,
- elements,
- rects,
- platform,
- strategy
- } = state;
- // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a
- // ClientRect's bounds, despite the event listener being triggered. A
- // padding of 2 seems to handle this issue.
- const {
- padding = 2,
- x,
- y
- } = evaluate(options, state);
- const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);
- const clientRects = getRectsByLine(nativeClientRects);
- const fallback = rectToClientRect(getBoundingRect(nativeClientRects));
- const paddingObject = getPaddingObject(padding);
- function getBoundingClientRect() {
- // There are two rects and they are disjoined.
- if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
- // Find the first rect in which the point is fully inside.
- return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;
- }
-
- // There are 2 or more connected rects.
- if (clientRects.length >= 2) {
- if (getSideAxis(placement) === 'y') {
- const firstRect = clientRects[0];
- const lastRect = clientRects[clientRects.length - 1];
- const isTop = getSide(placement) === 'top';
- const top = firstRect.top;
- const bottom = lastRect.bottom;
- const left = isTop ? firstRect.left : lastRect.left;
- const right = isTop ? firstRect.right : lastRect.right;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- const isLeftSide = getSide(placement) === 'left';
- const maxRight = max(...clientRects.map(rect => rect.right));
- const minLeft = min(...clientRects.map(rect => rect.left));
- const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
- const top = measureRects[0].top;
- const bottom = measureRects[measureRects.length - 1].bottom;
- const left = minLeft;
- const right = maxRight;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- return fallback;
- }
- const resetRects = await platform.getElementRects({
- reference: {
- getBoundingClientRect
- },
- floating: elements.floating,
- strategy
- });
- if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {
- return {
- reset: {
- rects: resetRects
- }
- };
- }
- return {};
- }
- };
-};
-
-// For type backwards-compatibility, the `OffsetOptions` type was also
-// Derivable.
-
-async function convertValueToCoords(state, options) {
- const {
- placement,
- platform,
- elements
- } = state;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isVertical = getSideAxis(placement) === 'y';
- const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
- const crossAxisMulti = rtl && isVertical ? -1 : 1;
- const rawValue = evaluate(options, state);
-
- // eslint-disable-next-line prefer-const
- let {
- mainAxis,
- crossAxis,
- alignmentAxis
- } = typeof rawValue === 'number' ? {
- mainAxis: rawValue,
- crossAxis: 0,
- alignmentAxis: null
- } : {
- mainAxis: rawValue.mainAxis || 0,
- crossAxis: rawValue.crossAxis || 0,
- alignmentAxis: rawValue.alignmentAxis
- };
- if (alignment && typeof alignmentAxis === 'number') {
- crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
- }
- return isVertical ? {
- x: crossAxis * crossAxisMulti,
- y: mainAxis * mainAxisMulti
- } : {
- x: mainAxis * mainAxisMulti,
- y: crossAxis * crossAxisMulti
- };
-}
-
-/**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
-const offset = function (options) {
- if (options === void 0) {
- options = 0;
- }
- return {
- name: 'offset',
- options,
- async fn(state) {
- var _middlewareData$offse, _middlewareData$arrow;
- const {
- x,
- y,
- placement,
- middlewareData
- } = state;
- const diffCoords = await convertValueToCoords(state, options);
-
- // If the placement is the same and the arrow caused an alignment offset
- // then we don't need to change the positioning coordinates.
- if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- return {
- x: x + diffCoords.x,
- y: y + diffCoords.y,
- data: {
- ...diffCoords,
- placement
- }
- };
- }
- };
-};
-
-/**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
-const shift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'shift',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = false,
- limiter = {
- fn: _ref => {
- let {
- x,
- y
- } = _ref;
- return {
- x,
- y
- };
- }
- },
- ...detectOverflowOptions
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const crossAxis = getSideAxis(getSide(placement));
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- if (checkMainAxis) {
- const minSide = mainAxis === 'y' ? 'top' : 'left';
- const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
- const min = mainAxisCoord + overflow[minSide];
- const max = mainAxisCoord - overflow[maxSide];
- mainAxisCoord = clamp(min, mainAxisCoord, max);
- }
- if (checkCrossAxis) {
- const minSide = crossAxis === 'y' ? 'top' : 'left';
- const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
- const min = crossAxisCoord + overflow[minSide];
- const max = crossAxisCoord - overflow[maxSide];
- crossAxisCoord = clamp(min, crossAxisCoord, max);
- }
- const limitedCoords = limiter.fn({
- ...state,
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- });
- return {
- ...limitedCoords,
- data: {
- x: limitedCoords.x - x,
- y: limitedCoords.y - y,
- enabled: {
- [mainAxis]: checkMainAxis,
- [crossAxis]: checkCrossAxis
- }
- }
- };
- }
- };
-};
-/**
- * Built-in `limiter` that will stop `shift()` at a certain point.
- */
-const limitShift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- options,
- fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- middlewareData
- } = state;
- const {
- offset = 0,
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const crossAxis = getSideAxis(placement);
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- const rawOffset = evaluate(offset, state);
- const computedOffset = typeof rawOffset === 'number' ? {
- mainAxis: rawOffset,
- crossAxis: 0
- } : {
- mainAxis: 0,
- crossAxis: 0,
- ...rawOffset
- };
- if (checkMainAxis) {
- const len = mainAxis === 'y' ? 'height' : 'width';
- const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
- const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
- if (mainAxisCoord < limitMin) {
- mainAxisCoord = limitMin;
- } else if (mainAxisCoord > limitMax) {
- mainAxisCoord = limitMax;
- }
- }
- if (checkCrossAxis) {
- var _middlewareData$offse, _middlewareData$offse2;
- const len = mainAxis === 'y' ? 'width' : 'height';
- const isOriginSide = ['top', 'left'].includes(getSide(placement));
- const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
- const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
- if (crossAxisCoord < limitMin) {
- crossAxisCoord = limitMin;
- } else if (crossAxisCoord > limitMax) {
- crossAxisCoord = limitMax;
- }
- }
- return {
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- };
- }
- };
-};
-
-/**
- * Provides data that allows you to change the size of the floating element —
- * for instance, prevent it from overflowing the clipping boundary or match the
- * width of the reference element.
- * @see https://floating-ui.com/docs/size
- */
-const size = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'size',
- options,
- async fn(state) {
- var _state$middlewareData, _state$middlewareData2;
- const {
- placement,
- rects,
- platform,
- elements
- } = state;
- const {
- apply = () => {},
- ...detectOverflowOptions
- } = evaluate(options, state);
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isYAxis = getSideAxis(placement) === 'y';
- const {
- width,
- height
- } = rects.floating;
- let heightSide;
- let widthSide;
- if (side === 'top' || side === 'bottom') {
- heightSide = side;
- widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';
- } else {
- widthSide = side;
- heightSide = alignment === 'end' ? 'top' : 'bottom';
- }
- const maximumClippingHeight = height - overflow.top - overflow.bottom;
- const maximumClippingWidth = width - overflow.left - overflow.right;
- const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
- const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
- const noShift = !state.middlewareData.shift;
- let availableHeight = overflowAvailableHeight;
- let availableWidth = overflowAvailableWidth;
- if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
- availableWidth = maximumClippingWidth;
- }
- if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
- availableHeight = maximumClippingHeight;
- }
- if (noShift && !alignment) {
- const xMin = max(overflow.left, 0);
- const xMax = max(overflow.right, 0);
- const yMin = max(overflow.top, 0);
- const yMax = max(overflow.bottom, 0);
- if (isYAxis) {
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
- } else {
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
- }
- }
- await apply({
- ...state,
- availableWidth,
- availableHeight
- });
- const nextDimensions = await platform.getDimensions(elements.floating);
- if (width !== nextDimensions.width || height !== nextDimensions.height) {
- return {
- reset: {
- rects: true
- }
- };
- }
- return {};
- }
- };
-};
-
-export { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.mjs b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.mjs
deleted file mode 100644
index 5f05cd8..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.mjs
+++ /dev/null
@@ -1,1041 +0,0 @@
-import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';
-export { rectToClientRect } from '@floating-ui/utils';
-
-function computeCoordsFromPlacement(_ref, placement, rtl) {
- let {
- reference,
- floating
- } = _ref;
- const sideAxis = getSideAxis(placement);
- const alignmentAxis = getAlignmentAxis(placement);
- const alignLength = getAxisLength(alignmentAxis);
- const side = getSide(placement);
- const isVertical = sideAxis === 'y';
- const commonX = reference.x + reference.width / 2 - floating.width / 2;
- const commonY = reference.y + reference.height / 2 - floating.height / 2;
- const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
- let coords;
- switch (side) {
- case 'top':
- coords = {
- x: commonX,
- y: reference.y - floating.height
- };
- break;
- case 'bottom':
- coords = {
- x: commonX,
- y: reference.y + reference.height
- };
- break;
- case 'right':
- coords = {
- x: reference.x + reference.width,
- y: commonY
- };
- break;
- case 'left':
- coords = {
- x: reference.x - floating.width,
- y: commonY
- };
- break;
- default:
- coords = {
- x: reference.x,
- y: reference.y
- };
- }
- switch (getAlignment(placement)) {
- case 'start':
- coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- case 'end':
- coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- }
- return coords;
-}
-
-/**
- * Computes the `x` and `y` coordinates that will place the floating element
- * next to a given reference element.
- *
- * This export does not have any `platform` interface logic. You will need to
- * write one for the platform you are using Floating UI with.
- */
-const computePosition = async (reference, floating, config) => {
- const {
- placement = 'bottom',
- strategy = 'absolute',
- middleware = [],
- platform
- } = config;
- const validMiddleware = middleware.filter(Boolean);
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
- let rects = await platform.getElementRects({
- reference,
- floating,
- strategy
- });
- let {
- x,
- y
- } = computeCoordsFromPlacement(rects, placement, rtl);
- let statefulPlacement = placement;
- let middlewareData = {};
- let resetCount = 0;
- for (let i = 0; i < validMiddleware.length; i++) {
- const {
- name,
- fn
- } = validMiddleware[i];
- const {
- x: nextX,
- y: nextY,
- data,
- reset
- } = await fn({
- x,
- y,
- initialPlacement: placement,
- placement: statefulPlacement,
- strategy,
- middlewareData,
- rects,
- platform,
- elements: {
- reference,
- floating
- }
- });
- x = nextX != null ? nextX : x;
- y = nextY != null ? nextY : y;
- middlewareData = {
- ...middlewareData,
- [name]: {
- ...middlewareData[name],
- ...data
- }
- };
- if (reset && resetCount <= 50) {
- resetCount++;
- if (typeof reset === 'object') {
- if (reset.placement) {
- statefulPlacement = reset.placement;
- }
- if (reset.rects) {
- rects = reset.rects === true ? await platform.getElementRects({
- reference,
- floating,
- strategy
- }) : reset.rects;
- }
- ({
- x,
- y
- } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
- }
- i = -1;
- }
- }
- return {
- x,
- y,
- placement: statefulPlacement,
- strategy,
- middlewareData
- };
-};
-
-/**
- * Resolves with an object of overflow side offsets that determine how much the
- * element is overflowing a given clipping boundary on each side.
- * - positive = overflowing the boundary by that number of pixels
- * - negative = how many pixels left before it will overflow
- * - 0 = lies flush with the boundary
- * @see https://floating-ui.com/docs/detectOverflow
- */
-async function detectOverflow(state, options) {
- var _await$platform$isEle;
- if (options === void 0) {
- options = {};
- }
- const {
- x,
- y,
- platform,
- rects,
- elements,
- strategy
- } = state;
- const {
- boundary = 'clippingAncestors',
- rootBoundary = 'viewport',
- elementContext = 'floating',
- altBoundary = false,
- padding = 0
- } = evaluate(options, state);
- const paddingObject = getPaddingObject(padding);
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
- const element = elements[altBoundary ? altContext : elementContext];
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
- element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
- boundary,
- rootBoundary,
- strategy
- }));
- const rect = elementContext === 'floating' ? {
- x,
- y,
- width: rects.floating.width,
- height: rects.floating.height
- } : rects.reference;
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
- x: 1,
- y: 1
- } : {
- x: 1,
- y: 1
- };
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
- elements,
- rect,
- offsetParent,
- strategy
- }) : rect);
- return {
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
- };
-}
-
-/**
- * Provides data to position an inner element of the floating element so that it
- * appears centered to the reference element.
- * @see https://floating-ui.com/docs/arrow
- */
-const arrow = options => ({
- name: 'arrow',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- platform,
- elements,
- middlewareData
- } = state;
- // Since `element` is required, we don't Partial<> the type.
- const {
- element,
- padding = 0
- } = evaluate(options, state) || {};
- if (element == null) {
- return {};
- }
- const paddingObject = getPaddingObject(padding);
- const coords = {
- x,
- y
- };
- const axis = getAlignmentAxis(placement);
- const length = getAxisLength(axis);
- const arrowDimensions = await platform.getDimensions(element);
- const isYAxis = axis === 'y';
- const minProp = isYAxis ? 'top' : 'left';
- const maxProp = isYAxis ? 'bottom' : 'right';
- const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
- const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
- const startDiff = coords[axis] - rects.reference[axis];
- const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
- let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
-
- // DOM platform can return `window` as the `offsetParent`.
- if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
- clientSize = elements.floating[clientProp] || rects.floating[length];
- }
- const centerToReference = endDiff / 2 - startDiff / 2;
-
- // If the padding is large enough that it causes the arrow to no longer be
- // centered, modify the padding so that it is centered.
- const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
- const minPadding = min(paddingObject[minProp], largestPossiblePadding);
- const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
-
- // Make sure the arrow doesn't overflow the floating element if the center
- // point is outside the floating element's bounds.
- const min$1 = minPadding;
- const max = clientSize - arrowDimensions[length] - maxPadding;
- const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
- const offset = clamp(min$1, center, max);
-
- // If the reference is small enough that the arrow's padding causes it to
- // to point to nothing for an aligned placement, adjust the offset of the
- // floating element itself. To ensure `shift()` continues to take action,
- // a single reset is performed when this is true.
- const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
- const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
- return {
- [axis]: coords[axis] + alignmentOffset,
- data: {
- [axis]: offset,
- centerOffset: center - offset - alignmentOffset,
- ...(shouldAddOffset && {
- alignmentOffset
- })
- },
- reset: shouldAddOffset
- };
- }
-});
-
-function getPlacementList(alignment, autoAlignment, allowedPlacements) {
- const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
- return allowedPlacementsSortedByAlignment.filter(placement => {
- if (alignment) {
- return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
- }
- return true;
- });
-}
-/**
- * Optimizes the visibility of the floating element by choosing the placement
- * that has the most space available automatically, without needing to specify a
- * preferred placement. Alternative to `flip`.
- * @see https://floating-ui.com/docs/autoPlacement
- */
-const autoPlacement = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'autoPlacement',
- options,
- async fn(state) {
- var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;
- const {
- rects,
- middlewareData,
- placement,
- platform,
- elements
- } = state;
- const {
- crossAxis = false,
- alignment,
- allowedPlacements = placements,
- autoAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
- const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
- const currentPlacement = placements$1[currentIndex];
- if (currentPlacement == null) {
- return {};
- }
- const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
-
- // Make `computeCoords` start from the right place.
- if (placement !== currentPlacement) {
- return {
- reset: {
- placement: placements$1[0]
- }
- };
- }
- const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];
- const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {
- placement: currentPlacement,
- overflows: currentOverflows
- }];
- const nextPlacement = placements$1[currentIndex + 1];
-
- // There are more placements to check.
- if (nextPlacement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
- const placementsSortedByMostSpace = allOverflows.map(d => {
- const alignment = getAlignment(d.placement);
- return [d.placement, alignment && crossAxis ?
- // Check along the mainAxis and main crossAxis side.
- d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :
- // Check only the mainAxis.
- d.overflows[0], d.overflows];
- }).sort((a, b) => a[1] - b[1]);
- const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,
- // Aligned placements should not check their opposite crossAxis
- // side.
- getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));
- const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];
- if (resetPlacement !== placement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: resetPlacement
- }
- };
- }
- return {};
- }
- };
-};
-
-/**
- * Optimizes the visibility of the floating element by flipping the `placement`
- * in order to keep it in view when the preferred placement(s) will overflow the
- * clipping boundary. Alternative to `autoPlacement`.
- * @see https://floating-ui.com/docs/flip
- */
-const flip = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'flip',
- options,
- async fn(state) {
- var _middlewareData$arrow, _middlewareData$flip;
- const {
- placement,
- middlewareData,
- rects,
- initialPlacement,
- platform,
- elements
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true,
- fallbackPlacements: specifiedFallbackPlacements,
- fallbackStrategy = 'bestFit',
- fallbackAxisSideDirection = 'none',
- flipAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
-
- // If a reset by the arrow was caused due to an alignment offset being
- // added, we should skip any logic now since `flip()` has already done its
- // work.
- // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643
- if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- const side = getSide(placement);
- const initialSideAxis = getSideAxis(initialPlacement);
- const isBasePlacement = getSide(initialPlacement) === initialPlacement;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
- const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';
- if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
- fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
- }
- const placements = [initialPlacement, ...fallbackPlacements];
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const overflows = [];
- let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
- if (checkMainAxis) {
- overflows.push(overflow[side]);
- }
- if (checkCrossAxis) {
- const sides = getAlignmentSides(placement, rects, rtl);
- overflows.push(overflow[sides[0]], overflow[sides[1]]);
- }
- overflowsData = [...overflowsData, {
- placement,
- overflows
- }];
-
- // One or more sides is overflowing.
- if (!overflows.every(side => side <= 0)) {
- var _middlewareData$flip2, _overflowsData$filter;
- const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
- const nextPlacement = placements[nextIndex];
- if (nextPlacement) {
- // Try next placement and re-run the lifecycle.
- return {
- data: {
- index: nextIndex,
- overflows: overflowsData
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
-
- // First, find the candidates that fit on the mainAxis side of overflow,
- // then find the placement that fits the best on the main crossAxis side.
- let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
-
- // Otherwise fallback.
- if (!resetPlacement) {
- switch (fallbackStrategy) {
- case 'bestFit':
- {
- var _overflowsData$filter2;
- const placement = (_overflowsData$filter2 = overflowsData.filter(d => {
- if (hasFallbackAxisSideDirection) {
- const currentSideAxis = getSideAxis(d.placement);
- return currentSideAxis === initialSideAxis ||
- // Create a bias to the `y` side axis due to horizontal
- // reading directions favoring greater width.
- currentSideAxis === 'y';
- }
- return true;
- }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
- if (placement) {
- resetPlacement = placement;
- }
- break;
- }
- case 'initialPlacement':
- resetPlacement = initialPlacement;
- break;
- }
- }
- if (placement !== resetPlacement) {
- return {
- reset: {
- placement: resetPlacement
- }
- };
- }
- }
- return {};
- }
- };
-};
-
-function getSideOffsets(overflow, rect) {
- return {
- top: overflow.top - rect.height,
- right: overflow.right - rect.width,
- bottom: overflow.bottom - rect.height,
- left: overflow.left - rect.width
- };
-}
-function isAnySideFullyClipped(overflow) {
- return sides.some(side => overflow[side] >= 0);
-}
-/**
- * Provides data to hide the floating element in applicable situations, such as
- * when it is not in the same clipping context as the reference element.
- * @see https://floating-ui.com/docs/hide
- */
-const hide = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'hide',
- options,
- async fn(state) {
- const {
- rects
- } = state;
- const {
- strategy = 'referenceHidden',
- ...detectOverflowOptions
- } = evaluate(options, state);
- switch (strategy) {
- case 'referenceHidden':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- elementContext: 'reference'
- });
- const offsets = getSideOffsets(overflow, rects.reference);
- return {
- data: {
- referenceHiddenOffsets: offsets,
- referenceHidden: isAnySideFullyClipped(offsets)
- }
- };
- }
- case 'escaped':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- altBoundary: true
- });
- const offsets = getSideOffsets(overflow, rects.floating);
- return {
- data: {
- escapedOffsets: offsets,
- escaped: isAnySideFullyClipped(offsets)
- }
- };
- }
- default:
- {
- return {};
- }
- }
- }
- };
-};
-
-function getBoundingRect(rects) {
- const minX = min(...rects.map(rect => rect.left));
- const minY = min(...rects.map(rect => rect.top));
- const maxX = max(...rects.map(rect => rect.right));
- const maxY = max(...rects.map(rect => rect.bottom));
- return {
- x: minX,
- y: minY,
- width: maxX - minX,
- height: maxY - minY
- };
-}
-function getRectsByLine(rects) {
- const sortedRects = rects.slice().sort((a, b) => a.y - b.y);
- const groups = [];
- let prevRect = null;
- for (let i = 0; i < sortedRects.length; i++) {
- const rect = sortedRects[i];
- if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {
- groups.push([rect]);
- } else {
- groups[groups.length - 1].push(rect);
- }
- prevRect = rect;
- }
- return groups.map(rect => rectToClientRect(getBoundingRect(rect)));
-}
-/**
- * Provides improved positioning for inline reference elements that can span
- * over multiple lines, such as hyperlinks or range selections.
- * @see https://floating-ui.com/docs/inline
- */
-const inline = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'inline',
- options,
- async fn(state) {
- const {
- placement,
- elements,
- rects,
- platform,
- strategy
- } = state;
- // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a
- // ClientRect's bounds, despite the event listener being triggered. A
- // padding of 2 seems to handle this issue.
- const {
- padding = 2,
- x,
- y
- } = evaluate(options, state);
- const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);
- const clientRects = getRectsByLine(nativeClientRects);
- const fallback = rectToClientRect(getBoundingRect(nativeClientRects));
- const paddingObject = getPaddingObject(padding);
- function getBoundingClientRect() {
- // There are two rects and they are disjoined.
- if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
- // Find the first rect in which the point is fully inside.
- return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;
- }
-
- // There are 2 or more connected rects.
- if (clientRects.length >= 2) {
- if (getSideAxis(placement) === 'y') {
- const firstRect = clientRects[0];
- const lastRect = clientRects[clientRects.length - 1];
- const isTop = getSide(placement) === 'top';
- const top = firstRect.top;
- const bottom = lastRect.bottom;
- const left = isTop ? firstRect.left : lastRect.left;
- const right = isTop ? firstRect.right : lastRect.right;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- const isLeftSide = getSide(placement) === 'left';
- const maxRight = max(...clientRects.map(rect => rect.right));
- const minLeft = min(...clientRects.map(rect => rect.left));
- const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
- const top = measureRects[0].top;
- const bottom = measureRects[measureRects.length - 1].bottom;
- const left = minLeft;
- const right = maxRight;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- return fallback;
- }
- const resetRects = await platform.getElementRects({
- reference: {
- getBoundingClientRect
- },
- floating: elements.floating,
- strategy
- });
- if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {
- return {
- reset: {
- rects: resetRects
- }
- };
- }
- return {};
- }
- };
-};
-
-// For type backwards-compatibility, the `OffsetOptions` type was also
-// Derivable.
-
-async function convertValueToCoords(state, options) {
- const {
- placement,
- platform,
- elements
- } = state;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isVertical = getSideAxis(placement) === 'y';
- const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
- const crossAxisMulti = rtl && isVertical ? -1 : 1;
- const rawValue = evaluate(options, state);
-
- // eslint-disable-next-line prefer-const
- let {
- mainAxis,
- crossAxis,
- alignmentAxis
- } = typeof rawValue === 'number' ? {
- mainAxis: rawValue,
- crossAxis: 0,
- alignmentAxis: null
- } : {
- mainAxis: rawValue.mainAxis || 0,
- crossAxis: rawValue.crossAxis || 0,
- alignmentAxis: rawValue.alignmentAxis
- };
- if (alignment && typeof alignmentAxis === 'number') {
- crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
- }
- return isVertical ? {
- x: crossAxis * crossAxisMulti,
- y: mainAxis * mainAxisMulti
- } : {
- x: mainAxis * mainAxisMulti,
- y: crossAxis * crossAxisMulti
- };
-}
-
-/**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
-const offset = function (options) {
- if (options === void 0) {
- options = 0;
- }
- return {
- name: 'offset',
- options,
- async fn(state) {
- var _middlewareData$offse, _middlewareData$arrow;
- const {
- x,
- y,
- placement,
- middlewareData
- } = state;
- const diffCoords = await convertValueToCoords(state, options);
-
- // If the placement is the same and the arrow caused an alignment offset
- // then we don't need to change the positioning coordinates.
- if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- return {
- x: x + diffCoords.x,
- y: y + diffCoords.y,
- data: {
- ...diffCoords,
- placement
- }
- };
- }
- };
-};
-
-/**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
-const shift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'shift',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = false,
- limiter = {
- fn: _ref => {
- let {
- x,
- y
- } = _ref;
- return {
- x,
- y
- };
- }
- },
- ...detectOverflowOptions
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const crossAxis = getSideAxis(getSide(placement));
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- if (checkMainAxis) {
- const minSide = mainAxis === 'y' ? 'top' : 'left';
- const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
- const min = mainAxisCoord + overflow[minSide];
- const max = mainAxisCoord - overflow[maxSide];
- mainAxisCoord = clamp(min, mainAxisCoord, max);
- }
- if (checkCrossAxis) {
- const minSide = crossAxis === 'y' ? 'top' : 'left';
- const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
- const min = crossAxisCoord + overflow[minSide];
- const max = crossAxisCoord - overflow[maxSide];
- crossAxisCoord = clamp(min, crossAxisCoord, max);
- }
- const limitedCoords = limiter.fn({
- ...state,
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- });
- return {
- ...limitedCoords,
- data: {
- x: limitedCoords.x - x,
- y: limitedCoords.y - y,
- enabled: {
- [mainAxis]: checkMainAxis,
- [crossAxis]: checkCrossAxis
- }
- }
- };
- }
- };
-};
-/**
- * Built-in `limiter` that will stop `shift()` at a certain point.
- */
-const limitShift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- options,
- fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- middlewareData
- } = state;
- const {
- offset = 0,
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const crossAxis = getSideAxis(placement);
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- const rawOffset = evaluate(offset, state);
- const computedOffset = typeof rawOffset === 'number' ? {
- mainAxis: rawOffset,
- crossAxis: 0
- } : {
- mainAxis: 0,
- crossAxis: 0,
- ...rawOffset
- };
- if (checkMainAxis) {
- const len = mainAxis === 'y' ? 'height' : 'width';
- const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
- const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
- if (mainAxisCoord < limitMin) {
- mainAxisCoord = limitMin;
- } else if (mainAxisCoord > limitMax) {
- mainAxisCoord = limitMax;
- }
- }
- if (checkCrossAxis) {
- var _middlewareData$offse, _middlewareData$offse2;
- const len = mainAxis === 'y' ? 'width' : 'height';
- const isOriginSide = ['top', 'left'].includes(getSide(placement));
- const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
- const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
- if (crossAxisCoord < limitMin) {
- crossAxisCoord = limitMin;
- } else if (crossAxisCoord > limitMax) {
- crossAxisCoord = limitMax;
- }
- }
- return {
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- };
- }
- };
-};
-
-/**
- * Provides data that allows you to change the size of the floating element —
- * for instance, prevent it from overflowing the clipping boundary or match the
- * width of the reference element.
- * @see https://floating-ui.com/docs/size
- */
-const size = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'size',
- options,
- async fn(state) {
- var _state$middlewareData, _state$middlewareData2;
- const {
- placement,
- rects,
- platform,
- elements
- } = state;
- const {
- apply = () => {},
- ...detectOverflowOptions
- } = evaluate(options, state);
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isYAxis = getSideAxis(placement) === 'y';
- const {
- width,
- height
- } = rects.floating;
- let heightSide;
- let widthSide;
- if (side === 'top' || side === 'bottom') {
- heightSide = side;
- widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';
- } else {
- widthSide = side;
- heightSide = alignment === 'end' ? 'top' : 'bottom';
- }
- const maximumClippingHeight = height - overflow.top - overflow.bottom;
- const maximumClippingWidth = width - overflow.left - overflow.right;
- const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
- const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
- const noShift = !state.middlewareData.shift;
- let availableHeight = overflowAvailableHeight;
- let availableWidth = overflowAvailableWidth;
- if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
- availableWidth = maximumClippingWidth;
- }
- if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
- availableHeight = maximumClippingHeight;
- }
- if (noShift && !alignment) {
- const xMin = max(overflow.left, 0);
- const xMax = max(overflow.right, 0);
- const yMin = max(overflow.top, 0);
- const yMax = max(overflow.bottom, 0);
- if (isYAxis) {
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
- } else {
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
- }
- }
- await apply({
- ...state,
- availableWidth,
- availableHeight
- });
- const nextDimensions = await platform.getDimensions(elements.floating);
- if (width !== nextDimensions.width || height !== nextDimensions.height) {
- return {
- reset: {
- rects: true
- }
- };
- }
- return {};
- }
- };
-};
-
-export { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.umd.js b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.umd.js
deleted file mode 100644
index fa97ab6..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.umd.js
+++ /dev/null
@@ -1,1188 +0,0 @@
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
- typeof define === 'function' && define.amd ? define(['exports'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.FloatingUICore = {}));
-})(this, (function (exports) { 'use strict';
-
- /**
- * Custom positioning reference element.
- * @see https://floating-ui.com/docs/virtual-elements
- */
-
- const sides = ['top', 'right', 'bottom', 'left'];
- const alignments = ['start', 'end'];
- const placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
- const min = Math.min;
- const max = Math.max;
- const oppositeSideMap = {
- left: 'right',
- right: 'left',
- bottom: 'top',
- top: 'bottom'
- };
- const oppositeAlignmentMap = {
- start: 'end',
- end: 'start'
- };
- function clamp(start, value, end) {
- return max(start, min(value, end));
- }
- function evaluate(value, param) {
- return typeof value === 'function' ? value(param) : value;
- }
- function getSide(placement) {
- return placement.split('-')[0];
- }
- function getAlignment(placement) {
- return placement.split('-')[1];
- }
- function getOppositeAxis(axis) {
- return axis === 'x' ? 'y' : 'x';
- }
- function getAxisLength(axis) {
- return axis === 'y' ? 'height' : 'width';
- }
- function getSideAxis(placement) {
- return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';
- }
- function getAlignmentAxis(placement) {
- return getOppositeAxis(getSideAxis(placement));
- }
- function getAlignmentSides(placement, rects, rtl) {
- if (rtl === void 0) {
- rtl = false;
- }
- const alignment = getAlignment(placement);
- const alignmentAxis = getAlignmentAxis(placement);
- const length = getAxisLength(alignmentAxis);
- let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
- if (rects.reference[length] > rects.floating[length]) {
- mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
- }
- return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
- }
- function getExpandedPlacements(placement) {
- const oppositePlacement = getOppositePlacement(placement);
- return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
- }
- function getOppositeAlignmentPlacement(placement) {
- return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
- }
- function getSideList(side, isStart, rtl) {
- const lr = ['left', 'right'];
- const rl = ['right', 'left'];
- const tb = ['top', 'bottom'];
- const bt = ['bottom', 'top'];
- switch (side) {
- case 'top':
- case 'bottom':
- if (rtl) return isStart ? rl : lr;
- return isStart ? lr : rl;
- case 'left':
- case 'right':
- return isStart ? tb : bt;
- default:
- return [];
- }
- }
- function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
- const alignment = getAlignment(placement);
- let list = getSideList(getSide(placement), direction === 'start', rtl);
- if (alignment) {
- list = list.map(side => side + "-" + alignment);
- if (flipAlignment) {
- list = list.concat(list.map(getOppositeAlignmentPlacement));
- }
- }
- return list;
- }
- function getOppositePlacement(placement) {
- return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
- }
- function expandPaddingObject(padding) {
- return {
- top: 0,
- right: 0,
- bottom: 0,
- left: 0,
- ...padding
- };
- }
- function getPaddingObject(padding) {
- return typeof padding !== 'number' ? expandPaddingObject(padding) : {
- top: padding,
- right: padding,
- bottom: padding,
- left: padding
- };
- }
- function rectToClientRect(rect) {
- const {
- x,
- y,
- width,
- height
- } = rect;
- return {
- width,
- height,
- top: y,
- left: x,
- right: x + width,
- bottom: y + height,
- x,
- y
- };
- }
-
- function computeCoordsFromPlacement(_ref, placement, rtl) {
- let {
- reference,
- floating
- } = _ref;
- const sideAxis = getSideAxis(placement);
- const alignmentAxis = getAlignmentAxis(placement);
- const alignLength = getAxisLength(alignmentAxis);
- const side = getSide(placement);
- const isVertical = sideAxis === 'y';
- const commonX = reference.x + reference.width / 2 - floating.width / 2;
- const commonY = reference.y + reference.height / 2 - floating.height / 2;
- const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
- let coords;
- switch (side) {
- case 'top':
- coords = {
- x: commonX,
- y: reference.y - floating.height
- };
- break;
- case 'bottom':
- coords = {
- x: commonX,
- y: reference.y + reference.height
- };
- break;
- case 'right':
- coords = {
- x: reference.x + reference.width,
- y: commonY
- };
- break;
- case 'left':
- coords = {
- x: reference.x - floating.width,
- y: commonY
- };
- break;
- default:
- coords = {
- x: reference.x,
- y: reference.y
- };
- }
- switch (getAlignment(placement)) {
- case 'start':
- coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- case 'end':
- coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
- break;
- }
- return coords;
- }
-
- /**
- * Computes the `x` and `y` coordinates that will place the floating element
- * next to a given reference element.
- *
- * This export does not have any `platform` interface logic. You will need to
- * write one for the platform you are using Floating UI with.
- */
- const computePosition = async (reference, floating, config) => {
- const {
- placement = 'bottom',
- strategy = 'absolute',
- middleware = [],
- platform
- } = config;
- const validMiddleware = middleware.filter(Boolean);
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
- let rects = await platform.getElementRects({
- reference,
- floating,
- strategy
- });
- let {
- x,
- y
- } = computeCoordsFromPlacement(rects, placement, rtl);
- let statefulPlacement = placement;
- let middlewareData = {};
- let resetCount = 0;
- for (let i = 0; i < validMiddleware.length; i++) {
- const {
- name,
- fn
- } = validMiddleware[i];
- const {
- x: nextX,
- y: nextY,
- data,
- reset
- } = await fn({
- x,
- y,
- initialPlacement: placement,
- placement: statefulPlacement,
- strategy,
- middlewareData,
- rects,
- platform,
- elements: {
- reference,
- floating
- }
- });
- x = nextX != null ? nextX : x;
- y = nextY != null ? nextY : y;
- middlewareData = {
- ...middlewareData,
- [name]: {
- ...middlewareData[name],
- ...data
- }
- };
- if (reset && resetCount <= 50) {
- resetCount++;
- if (typeof reset === 'object') {
- if (reset.placement) {
- statefulPlacement = reset.placement;
- }
- if (reset.rects) {
- rects = reset.rects === true ? await platform.getElementRects({
- reference,
- floating,
- strategy
- }) : reset.rects;
- }
- ({
- x,
- y
- } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
- }
- i = -1;
- }
- }
- return {
- x,
- y,
- placement: statefulPlacement,
- strategy,
- middlewareData
- };
- };
-
- /**
- * Resolves with an object of overflow side offsets that determine how much the
- * element is overflowing a given clipping boundary on each side.
- * - positive = overflowing the boundary by that number of pixels
- * - negative = how many pixels left before it will overflow
- * - 0 = lies flush with the boundary
- * @see https://floating-ui.com/docs/detectOverflow
- */
- async function detectOverflow(state, options) {
- var _await$platform$isEle;
- if (options === void 0) {
- options = {};
- }
- const {
- x,
- y,
- platform,
- rects,
- elements,
- strategy
- } = state;
- const {
- boundary = 'clippingAncestors',
- rootBoundary = 'viewport',
- elementContext = 'floating',
- altBoundary = false,
- padding = 0
- } = evaluate(options, state);
- const paddingObject = getPaddingObject(padding);
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
- const element = elements[altBoundary ? altContext : elementContext];
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
- element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
- boundary,
- rootBoundary,
- strategy
- }));
- const rect = elementContext === 'floating' ? {
- x,
- y,
- width: rects.floating.width,
- height: rects.floating.height
- } : rects.reference;
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
- x: 1,
- y: 1
- } : {
- x: 1,
- y: 1
- };
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
- elements,
- rect,
- offsetParent,
- strategy
- }) : rect);
- return {
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
- };
- }
-
- /**
- * Provides data to position an inner element of the floating element so that it
- * appears centered to the reference element.
- * @see https://floating-ui.com/docs/arrow
- */
- const arrow = options => ({
- name: 'arrow',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- platform,
- elements,
- middlewareData
- } = state;
- // Since `element` is required, we don't Partial<> the type.
- const {
- element,
- padding = 0
- } = evaluate(options, state) || {};
- if (element == null) {
- return {};
- }
- const paddingObject = getPaddingObject(padding);
- const coords = {
- x,
- y
- };
- const axis = getAlignmentAxis(placement);
- const length = getAxisLength(axis);
- const arrowDimensions = await platform.getDimensions(element);
- const isYAxis = axis === 'y';
- const minProp = isYAxis ? 'top' : 'left';
- const maxProp = isYAxis ? 'bottom' : 'right';
- const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';
- const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
- const startDiff = coords[axis] - rects.reference[axis];
- const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));
- let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
-
- // DOM platform can return `window` as the `offsetParent`.
- if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {
- clientSize = elements.floating[clientProp] || rects.floating[length];
- }
- const centerToReference = endDiff / 2 - startDiff / 2;
-
- // If the padding is large enough that it causes the arrow to no longer be
- // centered, modify the padding so that it is centered.
- const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
- const minPadding = min(paddingObject[minProp], largestPossiblePadding);
- const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
-
- // Make sure the arrow doesn't overflow the floating element if the center
- // point is outside the floating element's bounds.
- const min$1 = minPadding;
- const max = clientSize - arrowDimensions[length] - maxPadding;
- const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
- const offset = clamp(min$1, center, max);
-
- // If the reference is small enough that the arrow's padding causes it to
- // to point to nothing for an aligned placement, adjust the offset of the
- // floating element itself. To ensure `shift()` continues to take action,
- // a single reset is performed when this is true.
- const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
- const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;
- return {
- [axis]: coords[axis] + alignmentOffset,
- data: {
- [axis]: offset,
- centerOffset: center - offset - alignmentOffset,
- ...(shouldAddOffset && {
- alignmentOffset
- })
- },
- reset: shouldAddOffset
- };
- }
- });
-
- function getPlacementList(alignment, autoAlignment, allowedPlacements) {
- const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
- return allowedPlacementsSortedByAlignment.filter(placement => {
- if (alignment) {
- return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);
- }
- return true;
- });
- }
- /**
- * Optimizes the visibility of the floating element by choosing the placement
- * that has the most space available automatically, without needing to specify a
- * preferred placement. Alternative to `flip`.
- * @see https://floating-ui.com/docs/autoPlacement
- */
- const autoPlacement = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'autoPlacement',
- options,
- async fn(state) {
- var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;
- const {
- rects,
- middlewareData,
- placement,
- platform,
- elements
- } = state;
- const {
- crossAxis = false,
- alignment,
- allowedPlacements = placements,
- autoAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
- const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
- const currentPlacement = placements$1[currentIndex];
- if (currentPlacement == null) {
- return {};
- }
- const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));
-
- // Make `computeCoords` start from the right place.
- if (placement !== currentPlacement) {
- return {
- reset: {
- placement: placements$1[0]
- }
- };
- }
- const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];
- const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {
- placement: currentPlacement,
- overflows: currentOverflows
- }];
- const nextPlacement = placements$1[currentIndex + 1];
-
- // There are more placements to check.
- if (nextPlacement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
- const placementsSortedByMostSpace = allOverflows.map(d => {
- const alignment = getAlignment(d.placement);
- return [d.placement, alignment && crossAxis ?
- // Check along the mainAxis and main crossAxis side.
- d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :
- // Check only the mainAxis.
- d.overflows[0], d.overflows];
- }).sort((a, b) => a[1] - b[1]);
- const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,
- // Aligned placements should not check their opposite crossAxis
- // side.
- getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));
- const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];
- if (resetPlacement !== placement) {
- return {
- data: {
- index: currentIndex + 1,
- overflows: allOverflows
- },
- reset: {
- placement: resetPlacement
- }
- };
- }
- return {};
- }
- };
- };
-
- /**
- * Optimizes the visibility of the floating element by flipping the `placement`
- * in order to keep it in view when the preferred placement(s) will overflow the
- * clipping boundary. Alternative to `autoPlacement`.
- * @see https://floating-ui.com/docs/flip
- */
- const flip = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'flip',
- options,
- async fn(state) {
- var _middlewareData$arrow, _middlewareData$flip;
- const {
- placement,
- middlewareData,
- rects,
- initialPlacement,
- platform,
- elements
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true,
- fallbackPlacements: specifiedFallbackPlacements,
- fallbackStrategy = 'bestFit',
- fallbackAxisSideDirection = 'none',
- flipAlignment = true,
- ...detectOverflowOptions
- } = evaluate(options, state);
-
- // If a reset by the arrow was caused due to an alignment offset being
- // added, we should skip any logic now since `flip()` has already done its
- // work.
- // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643
- if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- const side = getSide(placement);
- const initialSideAxis = getSideAxis(initialPlacement);
- const isBasePlacement = getSide(initialPlacement) === initialPlacement;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
- const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';
- if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
- fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
- }
- const placements = [initialPlacement, ...fallbackPlacements];
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const overflows = [];
- let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
- if (checkMainAxis) {
- overflows.push(overflow[side]);
- }
- if (checkCrossAxis) {
- const sides = getAlignmentSides(placement, rects, rtl);
- overflows.push(overflow[sides[0]], overflow[sides[1]]);
- }
- overflowsData = [...overflowsData, {
- placement,
- overflows
- }];
-
- // One or more sides is overflowing.
- if (!overflows.every(side => side <= 0)) {
- var _middlewareData$flip2, _overflowsData$filter;
- const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
- const nextPlacement = placements[nextIndex];
- if (nextPlacement) {
- // Try next placement and re-run the lifecycle.
- return {
- data: {
- index: nextIndex,
- overflows: overflowsData
- },
- reset: {
- placement: nextPlacement
- }
- };
- }
-
- // First, find the candidates that fit on the mainAxis side of overflow,
- // then find the placement that fits the best on the main crossAxis side.
- let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
-
- // Otherwise fallback.
- if (!resetPlacement) {
- switch (fallbackStrategy) {
- case 'bestFit':
- {
- var _overflowsData$filter2;
- const placement = (_overflowsData$filter2 = overflowsData.filter(d => {
- if (hasFallbackAxisSideDirection) {
- const currentSideAxis = getSideAxis(d.placement);
- return currentSideAxis === initialSideAxis ||
- // Create a bias to the `y` side axis due to horizontal
- // reading directions favoring greater width.
- currentSideAxis === 'y';
- }
- return true;
- }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];
- if (placement) {
- resetPlacement = placement;
- }
- break;
- }
- case 'initialPlacement':
- resetPlacement = initialPlacement;
- break;
- }
- }
- if (placement !== resetPlacement) {
- return {
- reset: {
- placement: resetPlacement
- }
- };
- }
- }
- return {};
- }
- };
- };
-
- function getSideOffsets(overflow, rect) {
- return {
- top: overflow.top - rect.height,
- right: overflow.right - rect.width,
- bottom: overflow.bottom - rect.height,
- left: overflow.left - rect.width
- };
- }
- function isAnySideFullyClipped(overflow) {
- return sides.some(side => overflow[side] >= 0);
- }
- /**
- * Provides data to hide the floating element in applicable situations, such as
- * when it is not in the same clipping context as the reference element.
- * @see https://floating-ui.com/docs/hide
- */
- const hide = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'hide',
- options,
- async fn(state) {
- const {
- rects
- } = state;
- const {
- strategy = 'referenceHidden',
- ...detectOverflowOptions
- } = evaluate(options, state);
- switch (strategy) {
- case 'referenceHidden':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- elementContext: 'reference'
- });
- const offsets = getSideOffsets(overflow, rects.reference);
- return {
- data: {
- referenceHiddenOffsets: offsets,
- referenceHidden: isAnySideFullyClipped(offsets)
- }
- };
- }
- case 'escaped':
- {
- const overflow = await detectOverflow(state, {
- ...detectOverflowOptions,
- altBoundary: true
- });
- const offsets = getSideOffsets(overflow, rects.floating);
- return {
- data: {
- escapedOffsets: offsets,
- escaped: isAnySideFullyClipped(offsets)
- }
- };
- }
- default:
- {
- return {};
- }
- }
- }
- };
- };
-
- function getBoundingRect(rects) {
- const minX = min(...rects.map(rect => rect.left));
- const minY = min(...rects.map(rect => rect.top));
- const maxX = max(...rects.map(rect => rect.right));
- const maxY = max(...rects.map(rect => rect.bottom));
- return {
- x: minX,
- y: minY,
- width: maxX - minX,
- height: maxY - minY
- };
- }
- function getRectsByLine(rects) {
- const sortedRects = rects.slice().sort((a, b) => a.y - b.y);
- const groups = [];
- let prevRect = null;
- for (let i = 0; i < sortedRects.length; i++) {
- const rect = sortedRects[i];
- if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {
- groups.push([rect]);
- } else {
- groups[groups.length - 1].push(rect);
- }
- prevRect = rect;
- }
- return groups.map(rect => rectToClientRect(getBoundingRect(rect)));
- }
- /**
- * Provides improved positioning for inline reference elements that can span
- * over multiple lines, such as hyperlinks or range selections.
- * @see https://floating-ui.com/docs/inline
- */
- const inline = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'inline',
- options,
- async fn(state) {
- const {
- placement,
- elements,
- rects,
- platform,
- strategy
- } = state;
- // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a
- // ClientRect's bounds, despite the event listener being triggered. A
- // padding of 2 seems to handle this issue.
- const {
- padding = 2,
- x,
- y
- } = evaluate(options, state);
- const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);
- const clientRects = getRectsByLine(nativeClientRects);
- const fallback = rectToClientRect(getBoundingRect(nativeClientRects));
- const paddingObject = getPaddingObject(padding);
- function getBoundingClientRect() {
- // There are two rects and they are disjoined.
- if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {
- // Find the first rect in which the point is fully inside.
- return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;
- }
-
- // There are 2 or more connected rects.
- if (clientRects.length >= 2) {
- if (getSideAxis(placement) === 'y') {
- const firstRect = clientRects[0];
- const lastRect = clientRects[clientRects.length - 1];
- const isTop = getSide(placement) === 'top';
- const top = firstRect.top;
- const bottom = lastRect.bottom;
- const left = isTop ? firstRect.left : lastRect.left;
- const right = isTop ? firstRect.right : lastRect.right;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- const isLeftSide = getSide(placement) === 'left';
- const maxRight = max(...clientRects.map(rect => rect.right));
- const minLeft = min(...clientRects.map(rect => rect.left));
- const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);
- const top = measureRects[0].top;
- const bottom = measureRects[measureRects.length - 1].bottom;
- const left = minLeft;
- const right = maxRight;
- const width = right - left;
- const height = bottom - top;
- return {
- top,
- bottom,
- left,
- right,
- width,
- height,
- x: left,
- y: top
- };
- }
- return fallback;
- }
- const resetRects = await platform.getElementRects({
- reference: {
- getBoundingClientRect
- },
- floating: elements.floating,
- strategy
- });
- if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {
- return {
- reset: {
- rects: resetRects
- }
- };
- }
- return {};
- }
- };
- };
-
- // For type backwards-compatibility, the `OffsetOptions` type was also
- // Derivable.
-
- async function convertValueToCoords(state, options) {
- const {
- placement,
- platform,
- elements
- } = state;
- const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isVertical = getSideAxis(placement) === 'y';
- const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
- const crossAxisMulti = rtl && isVertical ? -1 : 1;
- const rawValue = evaluate(options, state);
-
- // eslint-disable-next-line prefer-const
- let {
- mainAxis,
- crossAxis,
- alignmentAxis
- } = typeof rawValue === 'number' ? {
- mainAxis: rawValue,
- crossAxis: 0,
- alignmentAxis: null
- } : {
- mainAxis: rawValue.mainAxis || 0,
- crossAxis: rawValue.crossAxis || 0,
- alignmentAxis: rawValue.alignmentAxis
- };
- if (alignment && typeof alignmentAxis === 'number') {
- crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
- }
- return isVertical ? {
- x: crossAxis * crossAxisMulti,
- y: mainAxis * mainAxisMulti
- } : {
- x: mainAxis * mainAxisMulti,
- y: crossAxis * crossAxisMulti
- };
- }
-
- /**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
- const offset = function (options) {
- if (options === void 0) {
- options = 0;
- }
- return {
- name: 'offset',
- options,
- async fn(state) {
- var _middlewareData$offse, _middlewareData$arrow;
- const {
- x,
- y,
- placement,
- middlewareData
- } = state;
- const diffCoords = await convertValueToCoords(state, options);
-
- // If the placement is the same and the arrow caused an alignment offset
- // then we don't need to change the positioning coordinates.
- if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
- return {};
- }
- return {
- x: x + diffCoords.x,
- y: y + diffCoords.y,
- data: {
- ...diffCoords,
- placement
- }
- };
- }
- };
- };
-
- /**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
- const shift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'shift',
- options,
- async fn(state) {
- const {
- x,
- y,
- placement
- } = state;
- const {
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = false,
- limiter = {
- fn: _ref => {
- let {
- x,
- y
- } = _ref;
- return {
- x,
- y
- };
- }
- },
- ...detectOverflowOptions
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const crossAxis = getSideAxis(getSide(placement));
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- if (checkMainAxis) {
- const minSide = mainAxis === 'y' ? 'top' : 'left';
- const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
- const min = mainAxisCoord + overflow[minSide];
- const max = mainAxisCoord - overflow[maxSide];
- mainAxisCoord = clamp(min, mainAxisCoord, max);
- }
- if (checkCrossAxis) {
- const minSide = crossAxis === 'y' ? 'top' : 'left';
- const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
- const min = crossAxisCoord + overflow[minSide];
- const max = crossAxisCoord - overflow[maxSide];
- crossAxisCoord = clamp(min, crossAxisCoord, max);
- }
- const limitedCoords = limiter.fn({
- ...state,
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- });
- return {
- ...limitedCoords,
- data: {
- x: limitedCoords.x - x,
- y: limitedCoords.y - y,
- enabled: {
- [mainAxis]: checkMainAxis,
- [crossAxis]: checkCrossAxis
- }
- }
- };
- }
- };
- };
- /**
- * Built-in `limiter` that will stop `shift()` at a certain point.
- */
- const limitShift = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- options,
- fn(state) {
- const {
- x,
- y,
- placement,
- rects,
- middlewareData
- } = state;
- const {
- offset = 0,
- mainAxis: checkMainAxis = true,
- crossAxis: checkCrossAxis = true
- } = evaluate(options, state);
- const coords = {
- x,
- y
- };
- const crossAxis = getSideAxis(placement);
- const mainAxis = getOppositeAxis(crossAxis);
- let mainAxisCoord = coords[mainAxis];
- let crossAxisCoord = coords[crossAxis];
- const rawOffset = evaluate(offset, state);
- const computedOffset = typeof rawOffset === 'number' ? {
- mainAxis: rawOffset,
- crossAxis: 0
- } : {
- mainAxis: 0,
- crossAxis: 0,
- ...rawOffset
- };
- if (checkMainAxis) {
- const len = mainAxis === 'y' ? 'height' : 'width';
- const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
- const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
- if (mainAxisCoord < limitMin) {
- mainAxisCoord = limitMin;
- } else if (mainAxisCoord > limitMax) {
- mainAxisCoord = limitMax;
- }
- }
- if (checkCrossAxis) {
- var _middlewareData$offse, _middlewareData$offse2;
- const len = mainAxis === 'y' ? 'width' : 'height';
- const isOriginSide = ['top', 'left'].includes(getSide(placement));
- const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
- const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
- if (crossAxisCoord < limitMin) {
- crossAxisCoord = limitMin;
- } else if (crossAxisCoord > limitMax) {
- crossAxisCoord = limitMax;
- }
- }
- return {
- [mainAxis]: mainAxisCoord,
- [crossAxis]: crossAxisCoord
- };
- }
- };
- };
-
- /**
- * Provides data that allows you to change the size of the floating element —
- * for instance, prevent it from overflowing the clipping boundary or match the
- * width of the reference element.
- * @see https://floating-ui.com/docs/size
- */
- const size = function (options) {
- if (options === void 0) {
- options = {};
- }
- return {
- name: 'size',
- options,
- async fn(state) {
- var _state$middlewareData, _state$middlewareData2;
- const {
- placement,
- rects,
- platform,
- elements
- } = state;
- const {
- apply = () => {},
- ...detectOverflowOptions
- } = evaluate(options, state);
- const overflow = await detectOverflow(state, detectOverflowOptions);
- const side = getSide(placement);
- const alignment = getAlignment(placement);
- const isYAxis = getSideAxis(placement) === 'y';
- const {
- width,
- height
- } = rects.floating;
- let heightSide;
- let widthSide;
- if (side === 'top' || side === 'bottom') {
- heightSide = side;
- widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';
- } else {
- widthSide = side;
- heightSide = alignment === 'end' ? 'top' : 'bottom';
- }
- const maximumClippingHeight = height - overflow.top - overflow.bottom;
- const maximumClippingWidth = width - overflow.left - overflow.right;
- const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
- const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
- const noShift = !state.middlewareData.shift;
- let availableHeight = overflowAvailableHeight;
- let availableWidth = overflowAvailableWidth;
- if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
- availableWidth = maximumClippingWidth;
- }
- if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
- availableHeight = maximumClippingHeight;
- }
- if (noShift && !alignment) {
- const xMin = max(overflow.left, 0);
- const xMax = max(overflow.right, 0);
- const yMin = max(overflow.top, 0);
- const yMax = max(overflow.bottom, 0);
- if (isYAxis) {
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
- } else {
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
- }
- }
- await apply({
- ...state,
- availableWidth,
- availableHeight
- });
- const nextDimensions = await platform.getDimensions(elements.floating);
- if (width !== nextDimensions.width || height !== nextDimensions.height) {
- return {
- reset: {
- rects: true
- }
- };
- }
- return {};
- }
- };
- };
-
- exports.arrow = arrow;
- exports.autoPlacement = autoPlacement;
- exports.computePosition = computePosition;
- exports.detectOverflow = detectOverflow;
- exports.flip = flip;
- exports.hide = hide;
- exports.inline = inline;
- exports.limitShift = limitShift;
- exports.offset = offset;
- exports.rectToClientRect = rectToClientRect;
- exports.shift = shift;
- exports.size = size;
-
-}));
diff --git a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.umd.min.js b/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.umd.min.js
deleted file mode 100644
index 11a20a1..0000000
--- a/dev-insights/node_modules/@floating-ui/core/dist/floating-ui.core.umd.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).FloatingUICore={})}(this,(function(t){"use strict";const e=["top","right","bottom","left"],n=["start","end"],i=e.reduce(((t,e)=>t.concat(e,e+"-"+n[0],e+"-"+n[1])),[]),o=Math.min,r=Math.max,a={left:"right",right:"left",bottom:"top",top:"bottom"},l={start:"end",end:"start"};function s(t,e,n){return r(t,o(e,n))}function f(t,e){return"function"==typeof t?t(e):t}function c(t){return t.split("-")[0]}function u(t){return t.split("-")[1]}function m(t){return"x"===t?"y":"x"}function d(t){return"y"===t?"height":"width"}function g(t){return["top","bottom"].includes(c(t))?"y":"x"}function p(t){return m(g(t))}function h(t,e,n){void 0===n&&(n=!1);const i=u(t),o=p(t),r=d(o);let a="x"===o?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return e.reference[r]>e.floating[r]&&(a=w(a)),[a,w(a)]}function y(t){return t.replace(/start|end/g,(t=>l[t]))}function w(t){return t.replace(/left|right|bottom|top/g,(t=>a[t]))}function x(t){return"number"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function v(t){const{x:e,y:n,width:i,height:o}=t;return{width:i,height:o,top:n,left:e,right:e+i,bottom:n+o,x:e,y:n}}function b(t,e,n){let{reference:i,floating:o}=t;const r=g(e),a=p(e),l=d(a),s=c(e),f="y"===r,m=i.x+i.width/2-o.width/2,h=i.y+i.height/2-o.height/2,y=i[l]/2-o[l]/2;let w;switch(s){case"top":w={x:m,y:i.y-o.height};break;case"bottom":w={x:m,y:i.y+i.height};break;case"right":w={x:i.x+i.width,y:h};break;case"left":w={x:i.x-o.width,y:h};break;default:w={x:i.x,y:i.y}}switch(u(e)){case"start":w[a]-=y*(n&&f?-1:1);break;case"end":w[a]+=y*(n&&f?-1:1)}return w}async function A(t,e){var n;void 0===e&&(e={});const{x:i,y:o,platform:r,rects:a,elements:l,strategy:s}=t,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:m="floating",altBoundary:d=!1,padding:g=0}=f(e,t),p=x(g),h=l[d?"floating"===m?"reference":"floating":m],y=v(await r.getClippingRect({element:null==(n=await(null==r.isElement?void 0:r.isElement(h)))||n?h:h.contextElement||await(null==r.getDocumentElement?void 0:r.getDocumentElement(l.floating)),boundary:c,rootBoundary:u,strategy:s})),w="floating"===m?{x:i,y:o,width:a.floating.width,height:a.floating.height}:a.reference,b=await(null==r.getOffsetParent?void 0:r.getOffsetParent(l.floating)),A=await(null==r.isElement?void 0:r.isElement(b))&&await(null==r.getScale?void 0:r.getScale(b))||{x:1,y:1},R=v(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:w,offsetParent:b,strategy:s}):w);return{top:(y.top-R.top+p.top)/A.y,bottom:(R.bottom-y.bottom+p.bottom)/A.y,left:(y.left-R.left+p.left)/A.x,right:(R.right-y.right+p.right)/A.x}}function R(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function P(t){return e.some((e=>t[e]>=0))}function D(t){const e=o(...t.map((t=>t.left))),n=o(...t.map((t=>t.top)));return{x:e,y:n,width:r(...t.map((t=>t.right)))-e,height:r(...t.map((t=>t.bottom)))-n}}t.arrow=t=>({name:"arrow",options:t,async fn(e){const{x:n,y:i,placement:r,rects:a,platform:l,elements:c,middlewareData:m}=e,{element:g,padding:h=0}=f(t,e)||{};if(null==g)return{};const y=x(h),w={x:n,y:i},v=p(r),b=d(v),A=await l.getDimensions(g),R="y"===v,P=R?"top":"left",D=R?"bottom":"right",T=R?"clientHeight":"clientWidth",O=a.reference[b]+a.reference[v]-w[v]-a.floating[b],E=w[v]-a.reference[v],L=await(null==l.getOffsetParent?void 0:l.getOffsetParent(g));let k=L?L[T]:0;k&&await(null==l.isElement?void 0:l.isElement(L))||(k=c.floating[T]||a.floating[b]);const C=O/2-E/2,B=k/2-A[b]/2-1,H=o(y[P],B),S=o(y[D],B),F=H,j=k-A[b]-S,z=k/2-A[b]/2+C,M=s(F,z,j),V=!m.arrow&&null!=u(r)&&z!==M&&a.reference[b]/2-(zu(e)===t)),...n.filter((e=>u(e)!==t))]:n.filter((t=>c(t)===t))).filter((n=>!t||u(n)===t||!!e&&y(n)!==n))}(p||null,x,w):w,R=await A(e,v),P=(null==(n=l.autoPlacement)?void 0:n.index)||0,D=b[P];if(null==D)return{};const T=h(D,a,await(null==m.isRTL?void 0:m.isRTL(d.floating)));if(s!==D)return{reset:{placement:b[0]}};const O=[R[c(D)],R[T[0]],R[T[1]]],E=[...(null==(o=l.autoPlacement)?void 0:o.overflows)||[],{placement:D,overflows:O}],L=b[P+1];if(L)return{data:{index:P+1,overflows:E},reset:{placement:L}};const k=E.map((t=>{const e=u(t.placement);return[t.placement,e&&g?t.overflows.slice(0,2).reduce(((t,e)=>t+e),0):t.overflows[0],t.overflows]})).sort(((t,e)=>t[1]-e[1])),C=(null==(r=k.filter((t=>t[2].slice(0,u(t[0])?2:3).every((t=>t<=0))))[0])?void 0:r[0])||k[0][0];return C!==s?{data:{index:P+1,overflows:E},reset:{placement:C}}:{}}}},t.computePosition=async(t,e,n)=>{const{placement:i="bottom",strategy:o="absolute",middleware:r=[],platform:a}=n,l=r.filter(Boolean),s=await(null==a.isRTL?void 0:a.isRTL(e));let f=await a.getElementRects({reference:t,floating:e,strategy:o}),{x:c,y:u}=b(f,i,s),m=i,d={},g=0;for(let n=0;nt+"-"+o)),e&&(r=r.concat(r.map(y)))),r}(l,R,b,E));const C=[l,...L],B=await A(e,P),H=[];let S=(null==(i=r.flip)?void 0:i.overflows)||[];if(d&&H.push(B[D]),p){const t=h(o,a,E);H.push(B[t[0]],B[t[1]])}if(S=[...S,{placement:o,overflows:H}],!H.every((t=>t<=0))){var F,j;const t=((null==(F=r.flip)?void 0:F.index)||0)+1,e=C[t];if(e)return{data:{index:t,overflows:S},reset:{placement:e}};let n=null==(j=S.filter((t=>t.overflows[0]<=0)).sort(((t,e)=>t.overflows[1]-e.overflows[1]))[0])?void 0:j.placement;if(!n)switch(v){case"bestFit":{var z;const t=null==(z=S.filter((t=>{if(k){const e=g(t.placement);return e===T||"y"===e}return!0})).map((t=>[t.placement,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:z[0];t&&(n=t);break}case"initialPlacement":n=l}if(o!==n)return{reset:{placement:n}}}return{}}}},t.hide=function(t){return void 0===t&&(t={}),{name:"hide",options:t,async fn(e){const{rects:n}=e,{strategy:i="referenceHidden",...o}=f(t,e);switch(i){case"referenceHidden":{const t=R(await A(e,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:P(t)}}}case"escaped":{const t=R(await A(e,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:t,escaped:P(t)}}}default:return{}}}}},t.inline=function(t){return void 0===t&&(t={}),{name:"inline",options:t,async fn(e){const{placement:n,elements:i,rects:a,platform:l,strategy:s}=e,{padding:u=2,x:m,y:d}=f(t,e),p=Array.from(await(null==l.getClientRects?void 0:l.getClientRects(i.reference))||[]),h=function(t){const e=t.slice().sort(((t,e)=>t.y-e.y)),n=[];let i=null;for(let t=0;ti.height/2?n.push([o]):n[n.length-1].push(o),i=o}return n.map((t=>v(D(t))))}(p),y=v(D(p)),w=x(u);const b=await l.getElementRects({reference:{getBoundingClientRect:function(){if(2===h.length&&h[0].left>h[1].right&&null!=m&&null!=d)return h.find((t=>m>t.left-w.left&&mt.top-w.top&&d=2){if("y"===g(n)){const t=h[0],e=h[h.length-1],i="top"===c(n),o=t.top,r=e.bottom,a=i?t.left:e.left,l=i?t.right:e.right;return{top:o,bottom:r,left:a,right:l,width:l-a,height:r-o,x:a,y:o}}const t="left"===c(n),e=r(...h.map((t=>t.right))),i=o(...h.map((t=>t.left))),a=h.filter((n=>t?n.left===i:n.right===e)),l=a[0].top,s=a[a.length-1].bottom;return{top:l,bottom:s,left:i,right:e,width:e-i,height:s-l,x:i,y:l}}return y}},floating:i.floating,strategy:s});return a.reference.x!==b.reference.x||a.reference.y!==b.reference.y||a.reference.width!==b.reference.width||a.reference.height!==b.reference.height?{reset:{rects:b}}:{}}}},t.limitShift=function(t){return void 0===t&&(t={}),{options:t,fn(e){const{x:n,y:i,placement:o,rects:r,middlewareData:a}=e,{offset:l=0,mainAxis:s=!0,crossAxis:u=!0}=f(t,e),d={x:n,y:i},p=g(o),h=m(p);let y=d[h],w=d[p];const x=f(l,e),v="number"==typeof x?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(s){const t="y"===h?"height":"width",e=r.reference[h]-r.floating[t]+v.mainAxis,n=r.reference[h]+r.reference[t]-v.mainAxis;yn&&(y=n)}if(u){var b,A;const t="y"===h?"width":"height",e=["top","left"].includes(c(o)),n=r.reference[p]-r.floating[t]+(e&&(null==(b=a.offset)?void 0:b[p])||0)+(e?0:v.crossAxis),i=r.reference[p]+r.reference[t]+(e?0:(null==(A=a.offset)?void 0:A[p])||0)-(e?v.crossAxis:0);wi&&(w=i)}return{[h]:y,[p]:w}}}},t.offset=function(t){return void 0===t&&(t=0),{name:"offset",options:t,async fn(e){var n,i;const{x:o,y:r,placement:a,middlewareData:l}=e,s=await async function(t,e){const{placement:n,platform:i,elements:o}=t,r=await(null==i.isRTL?void 0:i.isRTL(o.floating)),a=c(n),l=u(n),s="y"===g(n),m=["left","top"].includes(a)?-1:1,d=r&&s?-1:1,p=f(e,t);let{mainAxis:h,crossAxis:y,alignmentAxis:w}="number"==typeof p?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return l&&"number"==typeof w&&(y="end"===l?-1*w:w),s?{x:y*d,y:h*m}:{x:h*m,y:y*d}}(e,t);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(i=l.arrow)&&i.alignmentOffset?{}:{x:o+s.x,y:r+s.y,data:{...s,placement:a}}}}},t.rectToClientRect=v,t.shift=function(t){return void 0===t&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:i,placement:o}=e,{mainAxis:r=!0,crossAxis:a=!1,limiter:l={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...u}=f(t,e),d={x:n,y:i},p=await A(e,u),h=g(c(o)),y=m(h);let w=d[y],x=d[h];if(r){const t="y"===y?"bottom":"right";w=s(w+p["y"===y?"top":"left"],w,w-p[t])}if(a){const t="y"===h?"bottom":"right";x=s(x+p["y"===h?"top":"left"],x,x-p[t])}const v=l.fn({...e,[y]:w,[h]:x});return{...v,data:{x:v.x-n,y:v.y-i,enabled:{[y]:r,[h]:a}}}}}},t.size=function(t){return void 0===t&&(t={}),{name:"size",options:t,async fn(e){var n,i;const{placement:a,rects:l,platform:s,elements:m}=e,{apply:d=(()=>{}),...p}=f(t,e),h=await A(e,p),y=c(a),w=u(a),x="y"===g(a),{width:v,height:b}=l.floating;let R,P;"top"===y||"bottom"===y?(R=y,P=w===(await(null==s.isRTL?void 0:s.isRTL(m.floating))?"start":"end")?"left":"right"):(P=y,R="end"===w?"top":"bottom");const D=b-h.top-h.bottom,T=v-h.left-h.right,O=o(b-h[R],D),E=o(v-h[P],T),L=!e.middlewareData.shift;let k=O,C=E;if(null!=(n=e.middlewareData.shift)&&n.enabled.x&&(C=T),null!=(i=e.middlewareData.shift)&&i.enabled.y&&(k=D),L&&!w){const t=r(h.left,0),e=r(h.right,0),n=r(h.top,0),i=r(h.bottom,0);x?C=v-2*(0!==t||0!==e?t+e:r(h.left,h.right)):k=b-2*(0!==n||0!==i?n+i:r(h.top,h.bottom))}await d({...e,availableWidth:C,availableHeight:k});const B=await s.getDimensions(m.floating);return v!==B.width||b!==B.height?{reset:{rects:!0}}:{}}}}}));
diff --git a/dev-insights/node_modules/@floating-ui/core/package.json b/dev-insights/node_modules/@floating-ui/core/package.json
deleted file mode 100644
index eae7988..0000000
--- a/dev-insights/node_modules/@floating-ui/core/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "@floating-ui/core",
- "version": "1.6.9",
- "description": "Positioning library for floating elements: tooltips, popovers, dropdowns, and more",
- "publishConfig": {
- "access": "public"
- },
- "main": "./dist/floating-ui.core.umd.js",
- "module": "./dist/floating-ui.core.esm.js",
- "unpkg": "./dist/floating-ui.core.umd.min.js",
- "types": "./dist/floating-ui.core.d.ts",
- "exports": {
- "./package.json": "./package.json",
- ".": {
- "import": {
- "types": "./dist/floating-ui.core.d.mts",
- "default": "./dist/floating-ui.core.mjs"
- },
- "types": "./dist/floating-ui.core.d.ts",
- "module": "./dist/floating-ui.core.esm.js",
- "default": "./dist/floating-ui.core.umd.js"
- }
- },
- "sideEffects": false,
- "files": [
- "dist"
- ],
- "author": "atomiks",
- "license": "MIT",
- "bugs": "https://github.com/floating-ui/floating-ui",
- "repository": {
- "type": "git",
- "url": "https://github.com/floating-ui/floating-ui.git",
- "directory": "packages/core"
- },
- "homepage": "https://floating-ui.com",
- "keywords": [
- "tooltip",
- "popover",
- "dropdown",
- "menu",
- "popup",
- "positioning"
- ],
- "dependencies": {
- "@floating-ui/utils": "^0.2.9"
- },
- "devDependencies": {
- "config": "0.0.0"
- },
- "scripts": {
- "test": "vitest run",
- "test:watch": "vitest watch",
- "lint": "eslint .",
- "format": "prettier --write .",
- "clean": "rimraf dist out-tsc",
- "dev": "rollup -c -w",
- "build": "rollup -c",
- "build:api": "build-api --tsc tsconfig.lib.json",
- "publint": "publint",
- "typecheck": "tsc -b"
- }
-}
\ No newline at end of file
diff --git a/dev-insights/node_modules/@floating-ui/dom/LICENSE b/dev-insights/node_modules/@floating-ui/dom/LICENSE
deleted file mode 100644
index 639cdc6..0000000
--- a/dev-insights/node_modules/@floating-ui/dom/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-MIT License
-
-Copyright (c) 2021-present Floating UI contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/dev-insights/node_modules/@floating-ui/dom/README.md b/dev-insights/node_modules/@floating-ui/dom/README.md
deleted file mode 100644
index 47ef927..0000000
--- a/dev-insights/node_modules/@floating-ui/dom/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# @floating-ui/dom
-
-This is the library to use Floating UI on the web, wrapping `@floating-ui/core`
-with DOM interface logic.
diff --git a/dev-insights/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs b/dev-insights/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs
deleted file mode 100644
index dc66ddf..0000000
--- a/dev-insights/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs
+++ /dev/null
@@ -1 +0,0 @@
-import{rectToClientRect as t,detectOverflow as e,offset as n,autoPlacement as o,shift as i,flip as r,size as c,hide as l,arrow as s,inline as u,limitShift as f,computePosition as a}from"@floating-ui/core";const d=Math.min,h=Math.max,p=Math.round,g=Math.floor,m=t=>({x:t,y:t});function y(){return"undefined"!=typeof window}function w(t){return b(t)?(t.nodeName||"").toLowerCase():"#document"}function x(t){var e;return(null==t||null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function v(t){var e;return null==(e=(b(t)?t.ownerDocument:t.document)||window.document)?void 0:e.documentElement}function b(t){return!!y()&&(t instanceof Node||t instanceof x(t).Node)}function L(t){return!!y()&&(t instanceof Element||t instanceof x(t).Element)}function T(t){return!!y()&&(t instanceof HTMLElement||t instanceof x(t).HTMLElement)}function R(t){return!(!y()||"undefined"==typeof ShadowRoot)&&(t instanceof ShadowRoot||t instanceof x(t).ShadowRoot)}function E(t){const{overflow:e,overflowX:n,overflowY:o,display:i}=H(t);return/auto|scroll|overlay|hidden|clip/.test(e+o+n)&&!["inline","contents"].includes(i)}function C(t){return["table","td","th"].includes(w(t))}function S(t){return[":popover-open",":modal"].some((e=>{try{return t.matches(e)}catch(t){return!1}}))}function F(t){const e=D(),n=L(t)?H(t):t;return["transform","translate","scale","rotate","perspective"].some((t=>!!n[t]&&"none"!==n[t]))||!!n.containerType&&"normal"!==n.containerType||!e&&!!n.backdropFilter&&"none"!==n.backdropFilter||!e&&!!n.filter&&"none"!==n.filter||["transform","translate","scale","rotate","perspective","filter"].some((t=>(n.willChange||"").includes(t)))||["paint","layout","strict","content"].some((t=>(n.contain||"").includes(t)))}function D(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function O(t){return["html","body","#document"].includes(w(t))}function H(t){return x(t).getComputedStyle(t)}function W(t){return L(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function M(t){if("html"===w(t))return t;const e=t.assignedSlot||t.parentNode||R(t)&&t.host||v(t);return R(e)?e.host:e}function P(t){const e=M(t);return O(e)?t.ownerDocument?t.ownerDocument.body:t.body:T(e)&&E(e)?e:P(e)}function z(t,e,n){var o;void 0===e&&(e=[]),void 0===n&&(n=!0);const i=P(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),c=x(i);if(r){const t=B(c);return e.concat(c,c.visualViewport||[],E(i)?i:[],t&&n?z(t):[])}return e.concat(i,z(i,[],n))}function B(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function V(t){const e=H(t);let n=parseFloat(e.width)||0,o=parseFloat(e.height)||0;const i=T(t),r=i?t.offsetWidth:n,c=i?t.offsetHeight:o,l=p(n)!==r||p(o)!==c;return l&&(n=r,o=c),{width:n,height:o,$:l}}function A(t){return L(t)?t:t.contextElement}function N(t){const e=A(t);if(!T(e))return m(1);const n=e.getBoundingClientRect(),{width:o,height:i,$:r}=V(e);let c=(r?p(n.width):n.width)/o,l=(r?p(n.height):n.height)/i;return c&&Number.isFinite(c)||(c=1),l&&Number.isFinite(l)||(l=1),{x:c,y:l}}const k=m(0);function I(t){const e=x(t);return D()&&e.visualViewport?{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}:k}function q(e,n,o,i){void 0===n&&(n=!1),void 0===o&&(o=!1);const r=e.getBoundingClientRect(),c=A(e);let l=m(1);n&&(i?L(i)&&(l=N(i)):l=N(e));const s=function(t,e,n){return void 0===e&&(e=!1),!(!n||e&&n!==x(t))&&e}(c,o,i)?I(c):m(0);let u=(r.left+s.x)/l.x,f=(r.top+s.y)/l.y,a=r.width/l.x,d=r.height/l.y;if(c){const t=x(c),e=i&&L(i)?x(i):i;let n=t,o=B(n);for(;o&&i&&e!==n;){const t=N(o),e=o.getBoundingClientRect(),i=H(o),r=e.left+(o.clientLeft+parseFloat(i.paddingLeft))*t.x,c=e.top+(o.clientTop+parseFloat(i.paddingTop))*t.y;u*=t.x,f*=t.y,a*=t.x,d*=t.y,u+=r,f+=c,n=x(o),o=B(n)}}return t({width:a,height:d,x:u,y:f})}function X(t,e){const n=W(t).scrollLeft;return e?e.left+n:q(v(t)).left+n}function Y(t,e,n){void 0===n&&(n=!1);const o=t.getBoundingClientRect();return{x:o.left+e.scrollLeft-(n?0:X(t,o)),y:o.top+e.scrollTop}}function $(e,n,o){let i;if("viewport"===n)i=function(t,e){const n=x(t),o=v(t),i=n.visualViewport;let r=o.clientWidth,c=o.clientHeight,l=0,s=0;if(i){r=i.width,c=i.height;const t=D();(!t||t&&"fixed"===e)&&(l=i.offsetLeft,s=i.offsetTop)}return{width:r,height:c,x:l,y:s}}(e,o);else if("document"===n)i=function(t){const e=v(t),n=W(t),o=t.ownerDocument.body,i=h(e.scrollWidth,e.clientWidth,o.scrollWidth,o.clientWidth),r=h(e.scrollHeight,e.clientHeight,o.scrollHeight,o.clientHeight);let c=-n.scrollLeft+X(t);const l=-n.scrollTop;return"rtl"===H(o).direction&&(c+=h(e.clientWidth,o.clientWidth)-i),{width:i,height:r,x:c,y:l}}(v(e));else if(L(n))i=function(t,e){const n=q(t,!0,"fixed"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=T(t)?N(t):m(1);return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(n,o);else{const t=I(e);i={x:n.x-t.x,y:n.y-t.y,width:n.width,height:n.height}}return t(i)}function _(t,e){const n=M(t);return!(n===e||!L(n)||O(n))&&("fixed"===H(n).position||_(n,e))}function j(t,e,n){const o=T(e),i=v(e),r="fixed"===n,c=q(t,!0,r,e);let l={scrollLeft:0,scrollTop:0};const s=m(0);if(o||!o&&!r)if(("body"!==w(e)||E(i))&&(l=W(e)),o){const t=q(e,!0,r,e);s.x=t.x+e.clientLeft,s.y=t.y+e.clientTop}else i&&(s.x=X(i));const u=!i||o||r?m(0):Y(i,l);return{x:c.left+l.scrollLeft-s.x-u.x,y:c.top+l.scrollTop-s.y-u.y,width:c.width,height:c.height}}function G(t){return"static"===H(t).position}function J(t,e){if(!T(t)||"fixed"===H(t).position)return null;if(e)return e(t);let n=t.offsetParent;return v(t)===n&&(n=n.ownerDocument.body),n}function K(t,e){const n=x(t);if(S(t))return n;if(!T(t)){let e=M(t);for(;e&&!O(e);){if(L(e)&&!G(e))return e;e=M(e)}return n}let o=J(t,e);for(;o&&C(o)&&G(o);)o=J(o,e);return o&&O(o)&&G(o)&&!F(o)?n:o||function(t){let e=M(t);for(;T(e)&&!O(e);){if(F(e))return e;if(S(e))return null;e=M(e)}return null}(t)||n}const Q={convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{elements:e,rect:n,offsetParent:o,strategy:i}=t;const r="fixed"===i,c=v(o),l=!!e&&S(e.floating);if(o===c||l&&r)return n;let s={scrollLeft:0,scrollTop:0},u=m(1);const f=m(0),a=T(o);if((a||!a&&!r)&&(("body"!==w(o)||E(c))&&(s=W(o)),T(o))){const t=q(o);u=N(o),f.x=t.x+o.clientLeft,f.y=t.y+o.clientTop}const d=!c||a||r?m(0):Y(c,s,!0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-s.scrollLeft*u.x+f.x+d.x,y:n.y*u.y-s.scrollTop*u.y+f.y+d.y}},getDocumentElement:v,getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:o,strategy:i}=t;const r=[..."clippingAncestors"===n?S(e)?[]:function(t,e){const n=e.get(t);if(n)return n;let o=z(t,[],!1).filter((t=>L(t)&&"body"!==w(t))),i=null;const r="fixed"===H(t).position;let c=r?M(t):t;for(;L(c)&&!O(c);){const e=H(c),n=F(c);n||"fixed"!==e.position||(i=null),(r?!n&&!i:!n&&"static"===e.position&&i&&["absolute","fixed"].includes(i.position)||E(c)&&!n&&_(t,c))?o=o.filter((t=>t!==c)):i=e,c=M(c)}return e.set(t,o),o}(e,this._c):[].concat(n),o],c=r[0],l=r.reduce(((t,n)=>{const o=$(e,n,i);return t.top=h(o.top,t.top),t.right=d(o.right,t.right),t.bottom=d(o.bottom,t.bottom),t.left=h(o.left,t.left),t}),$(e,c,i));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:K,getElementRects:async function(t){const e=this.getOffsetParent||K,n=this.getDimensions,o=await n(t.floating);return{reference:j(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}},getClientRects:function(t){return Array.from(t.getClientRects())},getDimensions:function(t){const{width:e,height:n}=V(t);return{width:e,height:n}},getScale:N,isElement:L,isRTL:function(t){return"rtl"===H(t).direction}};function U(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function Z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:c="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:s=!1}=o,u=A(t),f=i||r?[...u?z(u):[],...z(e)]:[];f.forEach((t=>{i&&t.addEventListener("scroll",n,{passive:!0}),r&&t.addEventListener("resize",n)}));const a=u&&l?function(t,e){let n,o=null;const i=v(t);function r(){var t;clearTimeout(n),null==(t=o)||t.disconnect(),o=null}return function c(l,s){void 0===l&&(l=!1),void 0===s&&(s=1),r();const u=t.getBoundingClientRect(),{left:f,top:a,width:p,height:m}=u;if(l||e(),!p||!m)return;const y={rootMargin:-g(a)+"px "+-g(i.clientWidth-(f+p))+"px "+-g(i.clientHeight-(a+m))+"px "+-g(f)+"px",threshold:h(0,d(1,s))||1};let w=!0;function x(e){const o=e[0].intersectionRatio;if(o!==s){if(!w)return c();o?c(!1,o):n=setTimeout((()=>{c(!1,1e-7)}),1e3)}1!==o||U(u,t.getBoundingClientRect())||c(),w=!1}try{o=new IntersectionObserver(x,{...y,root:i.ownerDocument})}catch(t){o=new IntersectionObserver(x,y)}o.observe(t)}(!0),r}(u,n):null;let p,m=-1,y=null;c&&(y=new ResizeObserver((t=>{let[o]=t;o&&o.target===u&&y&&(y.unobserve(e),cancelAnimationFrame(m),m=requestAnimationFrame((()=>{var t;null==(t=y)||t.observe(e)}))),n()})),u&&!s&&y.observe(u),y.observe(e));let w=s?q(t):null;return s&&function e(){const o=q(t);w&&!U(w,o)&&n();w=o,p=requestAnimationFrame(e)}(),n(),()=>{var t;f.forEach((t=>{i&&t.removeEventListener("scroll",n),r&&t.removeEventListener("resize",n)})),null==a||a(),null==(t=y)||t.disconnect(),y=null,s&&cancelAnimationFrame(p)}}const tt=e,et=n,nt=o,ot=i,it=r,rt=c,ct=l,lt=s,st=u,ut=f,ft=(t,e,n)=>{const o=new Map,i={platform:Q,...n},r={...i.platform,_c:o};return a(t,e,{...i,platform:r})};export{lt as arrow,nt as autoPlacement,Z as autoUpdate,ft as computePosition,tt as detectOverflow,it as flip,z as getOverflowAncestors,ct as hide,st as inline,ut as limitShift,et as offset,Q as platform,ot as shift,rt as size};
diff --git a/dev-insights/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs b/dev-insights/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs
deleted file mode 100644
index c3513c7..0000000
--- a/dev-insights/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs
+++ /dev/null
@@ -1,916 +0,0 @@
-import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';
-
-/**
- * Custom positioning reference element.
- * @see https://floating-ui.com/docs/virtual-elements
- */
-
-const min = Math.min;
-const max = Math.max;
-const round = Math.round;
-const floor = Math.floor;
-const createCoords = v => ({
- x: v,
- y: v
-});
-
-function hasWindow() {
- return typeof window !== 'undefined';
-}
-function getNodeName(node) {
- if (isNode(node)) {
- return (node.nodeName || '').toLowerCase();
- }
- // Mocked nodes in testing environments may not be instances of Node. By
- // returning `#document` an infinite loop won't occur.
- // https://github.com/floating-ui/floating-ui/issues/2317
- return '#document';
-}
-function getWindow(node) {
- var _node$ownerDocument;
- return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
-}
-function getDocumentElement(node) {
- var _ref;
- return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
-}
-function isNode(value) {
- if (!hasWindow()) {
- return false;
- }
- return value instanceof Node || value instanceof getWindow(value).Node;
-}
-function isElement(value) {
- if (!hasWindow()) {
- return false;
- }
- return value instanceof Element || value instanceof getWindow(value).Element;
-}
-function isHTMLElement(value) {
- if (!hasWindow()) {
- return false;
- }
- return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
-}
-function isShadowRoot(value) {
- if (!hasWindow() || typeof ShadowRoot === 'undefined') {
- return false;
- }
- return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
-}
-function isOverflowElement(element) {
- const {
- overflow,
- overflowX,
- overflowY,
- display
- } = getComputedStyle(element);
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);
-}
-function isTableElement(element) {
- return ['table', 'td', 'th'].includes(getNodeName(element));
-}
-function isTopLayer(element) {
- return [':popover-open', ':modal'].some(selector => {
- try {
- return element.matches(selector);
- } catch (e) {
- return false;
- }
- });
-}
-function isContainingBlock(elementOrCss) {
- const webkit = isWebKit();
- const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;
-
- // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
- // https://drafts.csswg.org/css-transforms-2/#individual-transforms
- return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));
-}
-function getContainingBlock(element) {
- let currentNode = getParentNode(element);
- while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
- if (isContainingBlock(currentNode)) {
- return currentNode;
- } else if (isTopLayer(currentNode)) {
- return null;
- }
- currentNode = getParentNode(currentNode);
- }
- return null;
-}
-function isWebKit() {
- if (typeof CSS === 'undefined' || !CSS.supports) return false;
- return CSS.supports('-webkit-backdrop-filter', 'none');
-}
-function isLastTraversableNode(node) {
- return ['html', 'body', '#document'].includes(getNodeName(node));
-}
-function getComputedStyle(element) {
- return getWindow(element).getComputedStyle(element);
-}
-function getNodeScroll(element) {
- if (isElement(element)) {
- return {
- scrollLeft: element.scrollLeft,
- scrollTop: element.scrollTop
- };
- }
- return {
- scrollLeft: element.scrollX,
- scrollTop: element.scrollY
- };
-}
-function getParentNode(node) {
- if (getNodeName(node) === 'html') {
- return node;
- }
- const result =
- // Step into the shadow DOM of the parent of a slotted node.
- node.assignedSlot ||
- // DOM Element detected.
- node.parentNode ||
- // ShadowRoot detected.
- isShadowRoot(node) && node.host ||
- // Fallback.
- getDocumentElement(node);
- return isShadowRoot(result) ? result.host : result;
-}
-function getNearestOverflowAncestor(node) {
- const parentNode = getParentNode(node);
- if (isLastTraversableNode(parentNode)) {
- return node.ownerDocument ? node.ownerDocument.body : node.body;
- }
- if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
- return parentNode;
- }
- return getNearestOverflowAncestor(parentNode);
-}
-function getOverflowAncestors(node, list, traverseIframes) {
- var _node$ownerDocument2;
- if (list === void 0) {
- list = [];
- }
- if (traverseIframes === void 0) {
- traverseIframes = true;
- }
- const scrollableAncestor = getNearestOverflowAncestor(node);
- const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
- const win = getWindow(scrollableAncestor);
- if (isBody) {
- const frameElement = getFrameElement(win);
- return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
- }
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
-}
-function getFrameElement(win) {
- return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
-}
-
-function getCssDimensions(element) {
- const css = getComputedStyle(element);
- // In testing environments, the `width` and `height` properties are empty
- // strings for SVG elements, returning NaN. Fallback to `0` in this case.
- let width = parseFloat(css.width) || 0;
- let height = parseFloat(css.height) || 0;
- const hasOffset = isHTMLElement(element);
- const offsetWidth = hasOffset ? element.offsetWidth : width;
- const offsetHeight = hasOffset ? element.offsetHeight : height;
- const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
- if (shouldFallback) {
- width = offsetWidth;
- height = offsetHeight;
- }
- return {
- width,
- height,
- $: shouldFallback
- };
-}
-
-function unwrapElement(element) {
- return !isElement(element) ? element.contextElement : element;
-}
-
-function getScale(element) {
- const domElement = unwrapElement(element);
- if (!isHTMLElement(domElement)) {
- return createCoords(1);
- }
- const rect = domElement.getBoundingClientRect();
- const {
- width,
- height,
- $
- } = getCssDimensions(domElement);
- let x = ($ ? round(rect.width) : rect.width) / width;
- let y = ($ ? round(rect.height) : rect.height) / height;
-
- // 0, NaN, or Infinity should always fallback to 1.
-
- if (!x || !Number.isFinite(x)) {
- x = 1;
- }
- if (!y || !Number.isFinite(y)) {
- y = 1;
- }
- return {
- x,
- y
- };
-}
-
-const noOffsets = /*#__PURE__*/createCoords(0);
-function getVisualOffsets(element) {
- const win = getWindow(element);
- if (!isWebKit() || !win.visualViewport) {
- return noOffsets;
- }
- return {
- x: win.visualViewport.offsetLeft,
- y: win.visualViewport.offsetTop
- };
-}
-function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
- if (isFixed === void 0) {
- isFixed = false;
- }
- if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
- return false;
- }
- return isFixed;
-}
-
-function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
- if (includeScale === void 0) {
- includeScale = false;
- }
- if (isFixedStrategy === void 0) {
- isFixedStrategy = false;
- }
- const clientRect = element.getBoundingClientRect();
- const domElement = unwrapElement(element);
- let scale = createCoords(1);
- if (includeScale) {
- if (offsetParent) {
- if (isElement(offsetParent)) {
- scale = getScale(offsetParent);
- }
- } else {
- scale = getScale(element);
- }
- }
- const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
- let x = (clientRect.left + visualOffsets.x) / scale.x;
- let y = (clientRect.top + visualOffsets.y) / scale.y;
- let width = clientRect.width / scale.x;
- let height = clientRect.height / scale.y;
- if (domElement) {
- const win = getWindow(domElement);
- const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
- let currentWin = win;
- let currentIFrame = getFrameElement(currentWin);
- while (currentIFrame && offsetParent && offsetWin !== currentWin) {
- const iframeScale = getScale(currentIFrame);
- const iframeRect = currentIFrame.getBoundingClientRect();
- const css = getComputedStyle(currentIFrame);
- const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
- const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
- x *= iframeScale.x;
- y *= iframeScale.y;
- width *= iframeScale.x;
- height *= iframeScale.y;
- x += left;
- y += top;
- currentWin = getWindow(currentIFrame);
- currentIFrame = getFrameElement(currentWin);
- }
- }
- return rectToClientRect({
- width,
- height,
- x,
- y
- });
-}
-
-// If has a CSS width greater than the viewport, then this will be
-// incorrect for RTL.
-function getWindowScrollBarX(element, rect) {
- const leftScroll = getNodeScroll(element).scrollLeft;
- if (!rect) {
- return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
- }
- return rect.left + leftScroll;
-}
-
-function getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {
- if (ignoreScrollbarX === void 0) {
- ignoreScrollbarX = false;
- }
- const htmlRect = documentElement.getBoundingClientRect();
- const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :
- // RTL scrollbar.
- getWindowScrollBarX(documentElement, htmlRect));
- const y = htmlRect.top + scroll.scrollTop;
- return {
- x,
- y
- };
-}
-
-function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
- let {
- elements,
- rect,
- offsetParent,
- strategy
- } = _ref;
- const isFixed = strategy === 'fixed';
- const documentElement = getDocumentElement(offsetParent);
- const topLayer = elements ? isTopLayer(elements.floating) : false;
- if (offsetParent === documentElement || topLayer && isFixed) {
- return rect;
- }
- let scroll = {
- scrollLeft: 0,
- scrollTop: 0
- };
- let scale = createCoords(1);
- const offsets = createCoords(0);
- const isOffsetParentAnElement = isHTMLElement(offsetParent);
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
- if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
- scroll = getNodeScroll(offsetParent);
- }
- if (isHTMLElement(offsetParent)) {
- const offsetRect = getBoundingClientRect(offsetParent);
- scale = getScale(offsetParent);
- offsets.x = offsetRect.x + offsetParent.clientLeft;
- offsets.y = offsetRect.y + offsetParent.clientTop;
- }
- }
- const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);
- return {
- width: rect.width * scale.x,
- height: rect.height * scale.y,
- x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
- y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
- };
-}
-
-function getClientRects(element) {
- return Array.from(element.getClientRects());
-}
-
-// Gets the entire size of the scrollable document area, even extending outside
-// of the `` and `` rect bounds if horizontally scrollable.
-function getDocumentRect(element) {
- const html = getDocumentElement(element);
- const scroll = getNodeScroll(element);
- const body = element.ownerDocument.body;
- const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
- const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
- let x = -scroll.scrollLeft + getWindowScrollBarX(element);
- const y = -scroll.scrollTop;
- if (getComputedStyle(body).direction === 'rtl') {
- x += max(html.clientWidth, body.clientWidth) - width;
- }
- return {
- width,
- height,
- x,
- y
- };
-}
-
-function getViewportRect(element, strategy) {
- const win = getWindow(element);
- const html = getDocumentElement(element);
- const visualViewport = win.visualViewport;
- let width = html.clientWidth;
- let height = html.clientHeight;
- let x = 0;
- let y = 0;
- if (visualViewport) {
- width = visualViewport.width;
- height = visualViewport.height;
- const visualViewportBased = isWebKit();
- if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {
- x = visualViewport.offsetLeft;
- y = visualViewport.offsetTop;
- }
- }
- return {
- width,
- height,
- x,
- y
- };
-}
-
-// Returns the inner client rect, subtracting scrollbars if present.
-function getInnerBoundingClientRect(element, strategy) {
- const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
- const top = clientRect.top + element.clientTop;
- const left = clientRect.left + element.clientLeft;
- const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
- const width = element.clientWidth * scale.x;
- const height = element.clientHeight * scale.y;
- const x = left * scale.x;
- const y = top * scale.y;
- return {
- width,
- height,
- x,
- y
- };
-}
-function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
- let rect;
- if (clippingAncestor === 'viewport') {
- rect = getViewportRect(element, strategy);
- } else if (clippingAncestor === 'document') {
- rect = getDocumentRect(getDocumentElement(element));
- } else if (isElement(clippingAncestor)) {
- rect = getInnerBoundingClientRect(clippingAncestor, strategy);
- } else {
- const visualOffsets = getVisualOffsets(element);
- rect = {
- x: clippingAncestor.x - visualOffsets.x,
- y: clippingAncestor.y - visualOffsets.y,
- width: clippingAncestor.width,
- height: clippingAncestor.height
- };
- }
- return rectToClientRect(rect);
-}
-function hasFixedPositionAncestor(element, stopNode) {
- const parentNode = getParentNode(element);
- if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
- return false;
- }
- return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
-}
-
-// A "clipping ancestor" is an `overflow` element with the characteristic of
-// clipping (or hiding) child elements. This returns all clipping ancestors
-// of the given element up the tree.
-function getClippingElementAncestors(element, cache) {
- const cachedResult = cache.get(element);
- if (cachedResult) {
- return cachedResult;
- }
- let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');
- let currentContainingBlockComputedStyle = null;
- const elementIsFixed = getComputedStyle(element).position === 'fixed';
- let currentNode = elementIsFixed ? getParentNode(element) : element;
-
- // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
- while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
- const computedStyle = getComputedStyle(currentNode);
- const currentNodeIsContaining = isContainingBlock(currentNode);
- if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
- currentContainingBlockComputedStyle = null;
- }
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
- if (shouldDropCurrentNode) {
- // Drop non-containing blocks.
- result = result.filter(ancestor => ancestor !== currentNode);
- } else {
- // Record last containing block for next iteration.
- currentContainingBlockComputedStyle = computedStyle;
- }
- currentNode = getParentNode(currentNode);
- }
- cache.set(element, result);
- return result;
-}
-
-// Gets the maximum area that the element is visible in due to any number of
-// clipping ancestors.
-function getClippingRect(_ref) {
- let {
- element,
- boundary,
- rootBoundary,
- strategy
- } = _ref;
- const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
- const clippingAncestors = [...elementClippingAncestors, rootBoundary];
- const firstClippingAncestor = clippingAncestors[0];
- const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
- const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
- accRect.top = max(rect.top, accRect.top);
- accRect.right = min(rect.right, accRect.right);
- accRect.bottom = min(rect.bottom, accRect.bottom);
- accRect.left = max(rect.left, accRect.left);
- return accRect;
- }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
- return {
- width: clippingRect.right - clippingRect.left,
- height: clippingRect.bottom - clippingRect.top,
- x: clippingRect.left,
- y: clippingRect.top
- };
-}
-
-function getDimensions(element) {
- const {
- width,
- height
- } = getCssDimensions(element);
- return {
- width,
- height
- };
-}
-
-function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
- const isOffsetParentAnElement = isHTMLElement(offsetParent);
- const documentElement = getDocumentElement(offsetParent);
- const isFixed = strategy === 'fixed';
- const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
- let scroll = {
- scrollLeft: 0,
- scrollTop: 0
- };
- const offsets = createCoords(0);
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
- if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
- scroll = getNodeScroll(offsetParent);
- }
- if (isOffsetParentAnElement) {
- const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
- offsets.x = offsetRect.x + offsetParent.clientLeft;
- offsets.y = offsetRect.y + offsetParent.clientTop;
- } else if (documentElement) {
- // If the scrollbar appears on the left (e.g. RTL systems). Use
- // Firefox with layout.scrollbar.side = 3 in about:config to test this.
- offsets.x = getWindowScrollBarX(documentElement);
- }
- }
- const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
- const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
- const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
- return {
- x,
- y,
- width: rect.width,
- height: rect.height
- };
-}
-
-function isStaticPositioned(element) {
- return getComputedStyle(element).position === 'static';
-}
-
-function getTrueOffsetParent(element, polyfill) {
- if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {
- return null;
- }
- if (polyfill) {
- return polyfill(element);
- }
- let rawOffsetParent = element.offsetParent;
-
- // Firefox returns the element as the offsetParent if it's non-static,
- // while Chrome and Safari return the element. The element must
- // be used to perform the correct calculations even if the element is
- // non-static.
- if (getDocumentElement(element) === rawOffsetParent) {
- rawOffsetParent = rawOffsetParent.ownerDocument.body;
- }
- return rawOffsetParent;
-}
-
-// Gets the closest ancestor positioned element. Handles some edge cases,
-// such as table ancestors and cross browser bugs.
-function getOffsetParent(element, polyfill) {
- const win = getWindow(element);
- if (isTopLayer(element)) {
- return win;
- }
- if (!isHTMLElement(element)) {
- let svgOffsetParent = getParentNode(element);
- while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
- if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
- return svgOffsetParent;
- }
- svgOffsetParent = getParentNode(svgOffsetParent);
- }
- return win;
- }
- let offsetParent = getTrueOffsetParent(element, polyfill);
- while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
- offsetParent = getTrueOffsetParent(offsetParent, polyfill);
- }
- if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
- return win;
- }
- return offsetParent || getContainingBlock(element) || win;
-}
-
-const getElementRects = async function (data) {
- const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
- const getDimensionsFn = this.getDimensions;
- const floatingDimensions = await getDimensionsFn(data.floating);
- return {
- reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
- floating: {
- x: 0,
- y: 0,
- width: floatingDimensions.width,
- height: floatingDimensions.height
- }
- };
-};
-
-function isRTL(element) {
- return getComputedStyle(element).direction === 'rtl';
-}
-
-const platform = {
- convertOffsetParentRelativeRectToViewportRelativeRect,
- getDocumentElement,
- getClippingRect,
- getOffsetParent,
- getElementRects,
- getClientRects,
- getDimensions,
- getScale,
- isElement,
- isRTL
-};
-
-function rectsAreEqual(a, b) {
- return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
-}
-
-// https://samthor.au/2021/observing-dom/
-function observeMove(element, onMove) {
- let io = null;
- let timeoutId;
- const root = getDocumentElement(element);
- function cleanup() {
- var _io;
- clearTimeout(timeoutId);
- (_io = io) == null || _io.disconnect();
- io = null;
- }
- function refresh(skip, threshold) {
- if (skip === void 0) {
- skip = false;
- }
- if (threshold === void 0) {
- threshold = 1;
- }
- cleanup();
- const elementRectForRootMargin = element.getBoundingClientRect();
- const {
- left,
- top,
- width,
- height
- } = elementRectForRootMargin;
- if (!skip) {
- onMove();
- }
- if (!width || !height) {
- return;
- }
- const insetTop = floor(top);
- const insetRight = floor(root.clientWidth - (left + width));
- const insetBottom = floor(root.clientHeight - (top + height));
- const insetLeft = floor(left);
- const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
- const options = {
- rootMargin,
- threshold: max(0, min(1, threshold)) || 1
- };
- let isFirstUpdate = true;
- function handleObserve(entries) {
- const ratio = entries[0].intersectionRatio;
- if (ratio !== threshold) {
- if (!isFirstUpdate) {
- return refresh();
- }
- if (!ratio) {
- // If the reference is clipped, the ratio is 0. Throttle the refresh
- // to prevent an infinite loop of updates.
- timeoutId = setTimeout(() => {
- refresh(false, 1e-7);
- }, 1000);
- } else {
- refresh(false, ratio);
- }
- }
- if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
- // It's possible that even though the ratio is reported as 1, the
- // element is not actually fully within the IntersectionObserver's root
- // area anymore. This can happen under performance constraints. This may
- // be a bug in the browser's IntersectionObserver implementation. To
- // work around this, we compare the element's bounding rect now with
- // what it was at the time we created the IntersectionObserver. If they
- // are not equal then the element moved, so we refresh.
- refresh();
- }
- isFirstUpdate = false;
- }
-
- // Older browsers don't support a `document` as the root and will throw an
- // error.
- try {
- io = new IntersectionObserver(handleObserve, {
- ...options,
- // Handle
-- **Select & delete multiple items at once** Hold down command on Mac or ctrl on Windows to select more than one item to delete.
-- **Díåcritîçs supported** Great for international environments.
-- **Item creation** Allow users to create items on the fly (async saving is supported; the control locks until the callback is fired).
-- **Remote data loading** For when you have thousands of options and want them provided by the server as the user types.
-- **Extensible** [Plugin API](https://tom-select.js.org/docs/plugins/) for developing custom features (uses [microplugin](https://github.com/brianreavis/microplugin.js)).
-- **Accessible**, **Touch Support**, **Clean API**, ...
-
-## Usage
-
-```html
-
-
-
-
-```
-
-Available configuration settings are [documented here](https://tom-select.js.org/docs)
-
-
-## Installation
-
-All pre-built files needed to use Tom Select can be found in the "dist" folder via any of these sources:
-
-
-
- Source
-
-
-
- jsDelivr
-
- The fastest way to add Tom Select into your project is to just include the js and css from jsDelivr.
-
-<link href="https://cdn.jsdelivr.net/npm/tom-select/dist/css/tom-select.css" rel="stylesheet">
-<script src="https://cdn.jsdelivr.net/npm/tom-select/dist/js/tom-select.complete.min.js"></script>
-
-
-
-
- npm
- npm i tom-select
-
-
-
-
- GitHub
- Clone or download the full repo.
- Use npm run build and other commands to build from source, test and start the doc server.
-
-
-
-
-
-## Files
-- [tom-select.complete.js](https://cdn.jsdelivr.net/npm/tom-select/dist/js/tom-select.complete.js) — Includes dependencies and plugins
-- [tom-select.base.js](https://cdn.jsdelivr.net/npm/tom-select/dist/js/tom-select.base.js) — Does not include any plugins
-- [CSS](https://www.jsdelivr.com/package/npm/tom-select?path=dist%2Fcss) — Compiled themes
-- [SCSS](https://www.jsdelivr.com/package/npm/tom-select?path=dist%2Fscss) — Uncompiled theme sources
-
-
-## Sponsors
-
-Many thanks to all our sponsors who help make development possible. Become a sponsor .
-
-
-
-
-
-
-
-
-
-## License
-
-Copyright © 2013–2023 [Contributors](https://github.com/orchidjs/tom-select/graphs/contributors)
-
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
diff --git a/dev-insights/node_modules/tom-select/dist/cjs/constants.d.ts b/dev-insights/node_modules/tom-select/dist/cjs/constants.d.ts
deleted file mode 100644
index f3da48a..0000000
--- a/dev-insights/node_modules/tom-select/dist/cjs/constants.d.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export declare const KEY_A = 65;
-export declare const KEY_RETURN = 13;
-export declare const KEY_ESC = 27;
-export declare const KEY_LEFT = 37;
-export declare const KEY_UP = 38;
-export declare const KEY_RIGHT = 39;
-export declare const KEY_DOWN = 40;
-export declare const KEY_BACKSPACE = 8;
-export declare const KEY_DELETE = 46;
-export declare const KEY_TAB = 9;
-export declare const IS_MAC: boolean;
-export declare const KEY_SHORTCUT: string;
diff --git a/dev-insights/node_modules/tom-select/dist/cjs/constants.js b/dev-insights/node_modules/tom-select/dist/cjs/constants.js
deleted file mode 100644
index 1793a41..0000000
--- a/dev-insights/node_modules/tom-select/dist/cjs/constants.js
+++ /dev/null
@@ -1,16 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.KEY_SHORTCUT = exports.IS_MAC = exports.KEY_TAB = exports.KEY_DELETE = exports.KEY_BACKSPACE = exports.KEY_DOWN = exports.KEY_RIGHT = exports.KEY_UP = exports.KEY_LEFT = exports.KEY_ESC = exports.KEY_RETURN = exports.KEY_A = void 0;
-exports.KEY_A = 65;
-exports.KEY_RETURN = 13;
-exports.KEY_ESC = 27;
-exports.KEY_LEFT = 37;
-exports.KEY_UP = 38;
-exports.KEY_RIGHT = 39;
-exports.KEY_DOWN = 40;
-exports.KEY_BACKSPACE = 8;
-exports.KEY_DELETE = 46;
-exports.KEY_TAB = 9;
-exports.IS_MAC = typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);
-exports.KEY_SHORTCUT = exports.IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma
-//# sourceMappingURL=constants.js.map
\ No newline at end of file
diff --git a/dev-insights/node_modules/tom-select/dist/cjs/constants.js.map b/dev-insights/node_modules/tom-select/dist/cjs/constants.js.map
deleted file mode 100644
index 6180f5c..0000000
--- a/dev-insights/node_modules/tom-select/dist/cjs/constants.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,KAAK,GAAM,EAAE,CAAC;AACd,QAAA,UAAU,GAAK,EAAE,CAAC;AAClB,QAAA,OAAO,GAAK,EAAE,CAAC;AACf,QAAA,QAAQ,GAAK,EAAE,CAAC;AAChB,QAAA,MAAM,GAAM,EAAE,CAAC;AACf,QAAA,SAAS,GAAK,EAAE,CAAC;AACjB,QAAA,QAAQ,GAAK,EAAE,CAAC;AAChB,QAAA,aAAa,GAAI,CAAC,CAAC;AACnB,QAAA,UAAU,GAAK,EAAE,CAAC;AAClB,QAAA,OAAO,GAAK,CAAC,CAAC;AAEd,QAAA,MAAM,GAAU,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3F,QAAA,YAAY,GAAI,cAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,+BAA+B"}
\ No newline at end of file
diff --git a/dev-insights/node_modules/tom-select/dist/cjs/contrib/highlight.d.ts b/dev-insights/node_modules/tom-select/dist/cjs/contrib/highlight.d.ts
deleted file mode 100644
index 2d66e99..0000000
--- a/dev-insights/node_modules/tom-select/dist/cjs/contrib/highlight.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * highlight v3 | MIT license | Johann Burkard
- * Highlights arbitrary terms in a node.
- *
- * - Modified by Marshal 2011-6-24 (added regex)
- * - Modified by Brian Reavis 2012-8-27 (cleanup)
- */
-export declare const highlight: (element: HTMLElement, regex: string | RegExp) => void;
-/**
- * removeHighlight fn copied from highlight v5 and
- * edited to remove with(), pass js strict mode, and use without jquery
- */
-export declare const removeHighlight: (el: HTMLElement) => void;
diff --git a/dev-insights/node_modules/tom-select/dist/cjs/contrib/highlight.js b/dev-insights/node_modules/tom-select/dist/cjs/contrib/highlight.js
deleted file mode 100644
index 2e1e2d7..0000000
--- a/dev-insights/node_modules/tom-select/dist/cjs/contrib/highlight.js
+++ /dev/null
@@ -1,69 +0,0 @@
-"use strict";
-/**
- * highlight v3 | MIT license | Johann Burkard
- * Highlights arbitrary terms in a node.
- *
- * - Modified by Marshal 2011-6-24 (added regex)
- * - Modified by Brian Reavis 2012-8-27 (cleanup)
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.removeHighlight = exports.highlight = void 0;
-const vanilla_ts_1 = require("../vanilla.js");
-const highlight = (element, regex) => {
- if (regex === null)
- return;
- // convet string to regex
- if (typeof regex === 'string') {
- if (!regex.length)
- return;
- regex = new RegExp(regex, 'i');
- }
- // Wrap matching part of text node with highlighting , e.g.
- // Soccer -> Soc cer for regex = /soc/i
- const highlightText = (node) => {
- var match = node.data.match(regex);
- if (match && node.data.length > 0) {
- var spannode = document.createElement('span');
- spannode.className = 'highlight';
- var middlebit = node.splitText(match.index);
- middlebit.splitText(match[0].length);
- var middleclone = middlebit.cloneNode(true);
- spannode.appendChild(middleclone);
- (0, vanilla_ts_1.replaceNode)(middlebit, spannode);
- return 1;
- }
- return 0;
- };
- // Recurse element node, looking for child text nodes to highlight, unless element
- // is childless,