diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..892ba05
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+github: [3x1io]
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000..fefc292
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,88 @@
+name: TomatoPHP CI/CD
+on:
+ pull_request:
+ branches:
+ - master
+ - develop
+ push:
+ branches:
+ - master
+ - develop
+jobs:
+ laravel:
+ name: Laravel (PHP ${{ matrix.php-versions }})
+ runs-on: ubuntu-latest
+ env:
+ DB_DATABASE: laravel
+ DB_USERNAME: root
+ DB_PASSWORD: password
+ services:
+ mysql:
+ image: mysql:latest
+ env:
+ MYSQL_ALLOW_EMPTY_PASSWORD: false
+ MYSQL_ROOT_PASSWORD: password
+ MYSQL_DATABASE: laravel
+ ports:
+ - 3306/tcp
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
+
+ redis:
+ image: redis
+ ports:
+ - 6379/tcp
+ options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
+ strategy:
+ fail-fast: false
+ matrix:
+ php-versions: ['8.2']
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: sqlite, pdo_sqlite, pcntl, zip, intl, exif, mbstring, dom, fileinfo, mysql
+ coverage: xdebug
+
+ - name: Copy .env Before Install Composer
+ run: php -r "file_exists('.env') || copy('.env.example', '.env'); echo file_get_contents('.env');"
+
+ - name: Start MySQL Service
+ run: sudo /etc/init.d/mysql start
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v3
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ # Use composer.json for key, if composer.lock is not committed.
+ # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+
+ - name: Install Composer dependencies
+ run: composer install --no-progress --prefer-dist --optimize-autoloader
+
+ - name: Generate Applications Key
+ run: php artisan key:generate
+
+ - name: Clear Config
+ run: php artisan config:clear
+
+ - name: Run Migration
+ run: php artisan migrate -v
+ env:
+ DB_PORT: ${{ job.services.mysql.ports['3306'] }}
+ REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
+
+ - name: Run NPM Install
+ run: npm install
+
+ - name: Run NPM Run Build
+ run: npm run build
diff --git a/.scripts/deploy.sh b/.scripts/deploy.sh
new file mode 100755
index 0000000..03ca9d7
--- /dev/null
+++ b/.scripts/deploy.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -e
+
+echo "Deployment started ..."
+
+# Pull the latest version of the app
+git reset --hard
+git pull origin master
+
+# Install composer dependencies
+composer install
+
+# Clear the old cache
+php8.2 artisan clear-compiled
+
+# Recreate cache
+php8.2 artisan optimize
+
+
+# Run database migrations
+php8.2 artisan migrate --force
+
+
+echo "Deployment finished!"
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..a77082f
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Fady Mondy
+
+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/Modules/.gitkeep b/Modules/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/README.md b/README.md
index 1a4c26b..f00e2f3 100644
--- a/README.md
+++ b/README.md
@@ -1,66 +1,31 @@
-

+
-
-
-
-
-
-
+# Tomato Framework
-## About Laravel
+🍅 TomatoPHP is built to make it easy to develop web apps and API by generating files of CRUD operations and support helpers of tonnes of functions to make it easy to manage and use framework services.
-Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
+## Installation
-- [Simple, fast routing engine](https://laravel.com/docs/routing).
-- [Powerful dependency injection container](https://laravel.com/docs/container).
-- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
-- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
-- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
-- [Robust background job processing](https://laravel.com/docs/queues).
-- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
+```bash
+composer create-project tomatophp/tomato
+```
-Laravel is accessible, powerful, and provides tools required for large, robust applications.
+## Support
-## Learning Laravel
+you can join our discord server to get support [TomatoPHP](https://discord.gg/Xqmt35Uh)
-Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
+## Docs
-You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch.
+you can check docs of this package on [Docs](https://docs.tomatophp.com)
-If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
+## Changelog
-## Laravel Sponsors
+Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
-We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com).
+## Credits
-### Premium Partners
-
-- **[Vehikl](https://vehikl.com/)**
-- **[Tighten Co.](https://tighten.co)**
-- **[WebReinvent](https://webreinvent.com/)**
-- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
-- **[64 Robots](https://64robots.com)**
-- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
-- **[Cyber-Duck](https://cyber-duck.co.uk)**
-- **[DevSquad](https://devsquad.com/hire-laravel-developers)**
-- **[Jump24](https://jump24.co.uk)**
-- **[Redberry](https://redberry.international/laravel/)**
-- **[Active Logic](https://activelogic.com)**
-- **[byte5](https://byte5.de)**
-- **[OP.GG](https://op.gg)**
-
-## Contributing
-
-Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
-
-## Code of Conduct
-
-In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
-
-## Security Vulnerabilities
-
-If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
+- [Fady Mondy](https://github.com/3x1io)
## License
-The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
+The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..e69de29
diff --git a/app/Models/User.php b/app/Models/User.php
index def621f..b5b3311 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -2,14 +2,21 @@
namespace App\Models;
-// use Illuminate\Contracts\Auth\MustVerifyEmail;
+use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
+use Laravel\Fortify\TwoFactorAuthenticatable;
+use Laravel\Jetstream\HasProfilePhoto;
+use Laravel\Jetstream\HasTeams;
+use Laravel\Sanctum\HasApiTokens;
-class User extends Authenticatable
+ class User extends Authenticatable
{
- use HasFactory, Notifiable;
+ use HasApiTokens, HasFactory, Notifiable;
+ use HasTeams;
+ use HasProfilePhoto;
+ use TwoFactorAuthenticatable;
/**
* The attributes that are mass assignable.
@@ -33,15 +40,12 @@ class User extends Authenticatable
];
/**
- * Get the attributes that should be cast.
+ * The attributes that should be cast.
*
- * @return array
+ * @var array
*/
- protected function casts(): array
- {
- return [
- 'email_verified_at' => 'datetime',
- 'password' => 'hashed',
- ];
- }
+ protected $casts = [
+ 'email_verified_at' => 'datetime',
+ 'password' => 'hashed',
+ ];
}
diff --git a/art/cover.png b/art/cover.png
new file mode 100644
index 0000000..91ae706
Binary files /dev/null and b/art/cover.png differ
diff --git a/art/dashboard-dark-rtl.png b/art/dashboard-dark-rtl.png
new file mode 100644
index 0000000..d9cffd1
Binary files /dev/null and b/art/dashboard-dark-rtl.png differ
diff --git a/art/dashboard-dark.png b/art/dashboard-dark.png
new file mode 100644
index 0000000..0177843
Binary files /dev/null and b/art/dashboard-dark.png differ
diff --git a/art/dashboard-light.png b/art/dashboard-light.png
new file mode 100644
index 0000000..e771b4a
Binary files /dev/null and b/art/dashboard-light.png differ
diff --git a/art/login-dark.png b/art/login-dark.png
new file mode 100644
index 0000000..2cf36d4
Binary files /dev/null and b/art/login-dark.png differ
diff --git a/art/profile.png b/art/profile.png
new file mode 100644
index 0000000..25d9004
Binary files /dev/null and b/art/profile.png differ
diff --git a/art/roles.png b/art/roles.png
new file mode 100644
index 0000000..7b94a6b
Binary files /dev/null and b/art/roles.png differ
diff --git a/art/screenshot.png b/art/screenshot.png
new file mode 100644
index 0000000..6af5a84
Binary files /dev/null and b/art/screenshot.png differ
diff --git a/art/settings.png b/art/settings.png
new file mode 100644
index 0000000..e47174d
Binary files /dev/null and b/art/settings.png differ
diff --git a/art/slideover-light.png b/art/slideover-light.png
new file mode 100644
index 0000000..9823029
Binary files /dev/null and b/art/slideover-light.png differ
diff --git a/art/table-dark.png b/art/table-dark.png
new file mode 100644
index 0000000..25390e2
Binary files /dev/null and b/art/table-dark.png differ
diff --git a/art/table-light.png b/art/table-light.png
new file mode 100644
index 0000000..1da540e
Binary files /dev/null and b/art/table-light.png differ
diff --git a/art/v1.2 CRUD.png b/art/v1.2 CRUD.png
new file mode 100644
index 0000000..f68d3bd
Binary files /dev/null and b/art/v1.2 CRUD.png differ
diff --git a/art/v1.2 dark.png b/art/v1.2 dark.png
new file mode 100644
index 0000000..3a3b8aa
Binary files /dev/null and b/art/v1.2 dark.png differ
diff --git a/art/v1.2 dashboard dark.png b/art/v1.2 dashboard dark.png
new file mode 100644
index 0000000..9df5071
Binary files /dev/null and b/art/v1.2 dashboard dark.png differ
diff --git a/art/v1.2 dashboard.png b/art/v1.2 dashboard.png
new file mode 100644
index 0000000..12e650d
Binary files /dev/null and b/art/v1.2 dashboard.png differ
diff --git a/art/v1.2 home.png b/art/v1.2 home.png
new file mode 100644
index 0000000..2324913
Binary files /dev/null and b/art/v1.2 home.png differ
diff --git a/art/v1.2 login.png b/art/v1.2 login.png
new file mode 100644
index 0000000..6eee432
Binary files /dev/null and b/art/v1.2 login.png differ
diff --git a/art/v1.2 profile.png b/art/v1.2 profile.png
new file mode 100644
index 0000000..e9ae93d
Binary files /dev/null and b/art/v1.2 profile.png differ
diff --git a/bin/serve b/bin/serve
new file mode 100755
index 0000000..fb70637
--- /dev/null
+++ b/bin/serve
@@ -0,0 +1,116 @@
+#!/bin/bash
+
+# Fail the whole script if any command fails
+set -euo pipefail
+trap "echo \"[INFO] To stop the docker container you need to run: bin/stop\"" EXIT
+
+FRESH=false
+
+# Delete old environment for new setup
+if [ $# -eq 1 ] && [ $1 == '--fresh' ]
+then
+ rm -rf node_modules
+ rm -rf vendor
+ rm -f storage/sail/composer.lock
+ rm -f storage/sail/package-lock.json
+ rm -f storage/sail/yarn.lock
+ rm -f storage/sail/docker-compose.yml
+ rm -f .env
+fi
+
+# Create environment file if it doesn't exist yet
+if [ ! -f .env ]
+then
+ sed 's/APP_URL=.*/APP_URL=http:\/\/localhost/g;s/DB_HOST=.*/DB_HOST=mysql/g;s/REDIS_HOST=.*/REDIS_HOST=redis/g;s/MAIL_HOST=.*/MAIL_HOST=mailpit/g' < .env.example > .env
+ FRESH=true
+fi
+
+# Install needed composer dependencies for Laravel Sail
+if [ ! -f vendor/bin/sail ]
+then
+ docker run --rm \
+ -u "$(id -u):$(id -g)" \
+ -v $(pwd):/var/www/html \
+ -w /var/www/html \
+ laravelsail/php82-composer:latest \
+ composer install --ignore-platform-reqs
+fi
+
+# Create/Sync Docker-Containers based on Docker Compose File
+if [ ! -f storage/sail/docker-compose.yml ] || ! cmp --silent -- "docker-compose.yml" "storage/sail/docker-compose.yml"
+then
+ FRESH=true
+
+ vendor/bin/sail stop
+ vendor/bin/sail build --no-cache --pull
+
+ cp docker-compose.yml storage/sail/docker-compose.yml
+fi
+
+# Get Laravel Sail up and running in the background
+vendor/bin/sail up -d --wait
+
+# Install node dependencies if not installed yet
+if [ ! -d node_modules ]
+then
+
+ if [ ! -f yarn.lock ]
+ then
+ vendor/bin/sail npm install
+
+ # Save currently installed dependencies
+ cp package-lock.json storage/sail/package-lock.json
+ else
+ vendor/bin/sail yarn install
+
+ # Save currently installed dependencies
+ cp yarn.lock storage/sail/yarn.lock
+ fi
+
+fi
+
+# Install latest composer dependencies, if out of sync
+if ! cmp --silent -- "composer.lock" "storage/sail/composer.lock"
+then
+ vendor/bin/sail composer install
+
+ # Save currently installed dependencies
+ cp composer.lock storage/sail/composer.lock
+fi
+
+# Install latest npm dependencies, if out of sync
+if ! cmp --silent -- "package-lock.json" "storage/sail/package-lock.json"
+then
+
+ if [ ! -f yarn.lock ]
+ then
+ vendor/bin/sail npm install
+
+ # Save currently installed dependencies
+ cp package-lock.json storage/sail/package-lock.json
+ else
+ vendor/bin/sail yarn install
+
+ # Save currently installed dependencies
+ cp yarn.lock storage/sail/yarn.lock
+ fi
+
+fi
+
+# Migrate Database to the newest version
+if $FRESH
+then
+ vendor/bin/sail artisan migrate:fresh --seed --force
+else
+ vendor/bin/sail artisan migrate --force
+fi
+
+
+# Start the Development Server
+
+if [ ! -f yarn.lock ]
+then
+ vendor/bin/sail npm run dev
+else
+ vendor/bin/sail yarn run dev
+fi
diff --git a/bin/stop b/bin/stop
new file mode 100755
index 0000000..c6dba39
--- /dev/null
+++ b/bin/stop
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+# Fail the whole script if any command fails
+set -euo pipefail
+
+# Stop Laravel Sail and the docker containers
+vendor/bin/sail stop
diff --git a/bin/test b/bin/test
new file mode 100755
index 0000000..64b72ed
--- /dev/null
+++ b/bin/test
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Display Help Text
+if [ $# -eq 1 ] && [ $1 == '--help' ]
+then
+ echo "Usage: bin/test [--tests|--dusk]"
+ echo "--tests : Only run unit and feature tests"
+ echo "--dusk : Only run dusk tests"
+ exit 0
+fi
+
+# Fail the whole script if any command fails
+set -euo pipefail
+trap "echo \"[INFO] To stop the docker container you need to run: bin/stop\"" EXIT
+
+# Get Laravel Sail up and running in the background
+vendor/bin/sail up -d --wait
+
+# Run unit and feature tests
+if [[ $# -eq 0 ]] || [[ $1 == '--tests' ]]
+then
+ vendor/bin/sail test --stop-on-failure
+fi
+
+# Run dusk tests
+if [[ $# -eq 0 ]] || [[ $1 == '--dusk' ]]
+then
+ vendor/bin/sail artisan migrate:fresh --env=dusk --force --quiet
+ vendor/bin/sail dusk --env=dusk --stop-on-failure
+fi
+
diff --git a/bin/update b/bin/update
new file mode 100755
index 0000000..e8ba4d7
--- /dev/null
+++ b/bin/update
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# Fail the whole script if any command fails
+set -euo pipefail
+trap "echo \"[INFO] To stop the docker container you need to run: bin/stop\"" EXIT
+
+# Get Laravel Sail up and running in the background
+vendor/bin/sail up -d --wait
+
+# Update composer dependencies
+vendor/bin/sail composer update
+cp composer.lock storage/sail/composer.lock
+
+# Update dependencies
+if [ ! -f yarn.lock ]
+then
+ vendor/bin/sail npm update
+ vendor/bin/sail npm run build
+ cp package-lock.json storage/sail/package-lock.json
+else
+ vendor/bin/sail yarn upgrade
+ vendor/bin/sail yarn run build
+ cp yarn.lock storage/sail/yarn.lock
+fi
diff --git a/bootstrap/app.php b/bootstrap/app.php
index 7b162da..cff307e 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -11,8 +11,10 @@
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
- //
+ $middleware->group('splade', [
+ \ProtoneMedia\Splade\Http\SpladeMiddleware::class
+ ]);
})
->withExceptions(function (Exceptions $exceptions) {
- //
+ $exceptions->renderable(\ProtoneMedia\Splade\SpladeCore::exceptionHandler($exceptions->handler));
})->create();
diff --git a/bootstrap/ssr/assets/CompilerErrorMessages-6b34f14b-6b34f14b.mjs b/bootstrap/ssr/assets/CompilerErrorMessages-6b34f14b-6b34f14b.mjs
new file mode 100644
index 0000000..d201653
--- /dev/null
+++ b/bootstrap/ssr/assets/CompilerErrorMessages-6b34f14b-6b34f14b.mjs
@@ -0,0 +1,60 @@
+const e = {
+ 0: "Illegal comment.",
+ 1: "CDATA section is allowed only in XML context.",
+ 2: "Duplicate attribute.",
+ 3: "End tag cannot have attributes.",
+ 4: "Illegal '/' in tags.",
+ 5: "Unexpected EOF in tag.",
+ 6: "Unexpected EOF in CDATA section.",
+ 7: "Unexpected EOF in comment.",
+ 8: "Unexpected EOF in script.",
+ 9: "Unexpected EOF in tag.",
+ 10: "Incorrectly closed comment.",
+ 11: "Incorrectly opened comment.",
+ 12: "Illegal tag name. Use '<' to print '<'.",
+ 13: "Attribute value was expected.",
+ 14: "End tag name was expected.",
+ 15: "Whitespace was expected.",
+ 16: "Unexpected '`;
+ }), (!l || !o) && (s += ``)) : (l && Mt.value++, (!l || !o) && (ie.value++, tt[ie.value] = tt[ie.value] || new yi(ie.value)));
+ let u = e.data.splade.persistentLayout && i === e.data.splade.persistentLayout, c = 0;
+ !$e && e.data.splade.preserveScroll && (c = window.scrollY), Ur(
+ u ? R.value.html : s,
+ c,
+ !t && !e.data.splade.preventViewTransition
+ );
+ const v = Dr(
+ n,
+ e.data.splade.head,
+ u ? R.value.html : s,
+ a,
+ R.value.rememberedState ? { ...R.value.rememberedState } : {},
+ ie.value,
+ Mt.value,
+ e.data.splade.persistentLayout
+ );
+ t ? bi(v) : ho(v);
+}
+function yo() {
+ ae.value--, Gt(wo(ae.value));
+}
+const wi = vueExports.ref({}), Si = (e) => wi.value[e], bo = (e) => Object.keys(Si.value[e]).length > 0, Oi = vueExports.ref({}), wo = (e) => Oi.value[e], $i = vueExports.ref({}), So = (e) => $i.value[e], rt = vueExports.ref([]);
+function Oo(e) {
+ rt.value.push(e);
+}
+const $o = vueExports.computed(() => co(rt.value));
+function Eo(e) {
+ rt.value[e].dismissed = true, rt.value[e].html = null;
+}
+const Vr = vueExports.ref(null);
+function To(e, t, r, n, i, s, a) {
+ let o, l;
+ typeof i > "u" && (i = false), typeof s > "u" && (s = false), typeof a > "u" && (a = false);
+ const u = new Promise((c, v) => {
+ o = c, l = v;
+ });
+ return Vr.value = {
+ title: e,
+ text: t,
+ confirmButton: r,
+ cancelButton: n,
+ resolvePromise: o,
+ rejectPromise: l,
+ confirmPassword: i,
+ confirmPasswordOnce: s,
+ confirmDanger: a
+ }, u;
+}
+function xo() {
+ Vr.value = null;
+}
+const Ei = vueExports.ref({});
+function Hr(e) {
+ Nr.value = e.persistentLayout, Ei.value = e.shared ? e.shared : {}, $i.value[ae.value] = e.flash ? e.flash : {}, Oi.value[ae.value] = e.head ? e.head : {}, oo(e.toasts ? e.toasts : [], (t) => {
+ rt.value.push(t);
+ }), wi.value[ae.value] = e.errors ? e.errors : {};
+}
+const Ti = vueExports.ref(() => {
+}), xi = vueExports.ref(() => {
+}), _i = vueExports.ref(() => {
+}), Ii = vueExports.ref(() => {
+});
+function Gt(e) {
+ Ti.value(e);
+}
+function Ur(e, t, r) {
+ xi.value(e, t, r === true);
+}
+function Ai(e, t) {
+ zt.value[ae.value] = true, _i.value(e, t);
+}
+function _o(e) {
+ return zt.value[e];
+}
+function Pi(e) {
+ Ii.value(e);
+}
+const Wr = vueExports.ref({});
+function qi(e, t, r) {
+ Wr.value[e] = t, r && Io(e, t);
+}
+function zr() {
+ return JSON.parse(localStorage.getItem("splade") || "{}") || {};
+}
+function Io(e, t) {
+ let r = zr();
+ r[e] = t, localStorage.setItem("splade", JSON.stringify(r));
+}
+function Ao(e, t) {
+ return t ? zr()[e] : Wr.value[e];
+}
+function Po(e, t) {
+ if (t) {
+ let r = zr();
+ delete r[e], localStorage.setItem("splade", JSON.stringify(r));
+ }
+ delete Wr.value[e];
+}
+function Ke(e, t, r, n, i, s) {
+ if ($e || qi("scrollY", window.scrollY), t.toUpperCase() === "GET") {
+ const o = new URLSearchParams(r).toString();
+ o != "" && (e = `${e.split("?")[0]}?${o}`), r = {};
+ }
+ ye("internal:request", { url: e, method: t, data: r, headers: n, replace: i });
+ const a = ne({
+ method: t,
+ url: e,
+ data: r,
+ headers: {
+ "X-Splade": true,
+ "X-Requested-With": "XMLHttpRequest",
+ Accept: "text/html, application/xhtml+xml",
+ ...n
+ },
+ responseType: s ? "blob" : "json",
+ onUploadProgress: (o) => {
+ r instanceof FormData && (o.percentage = Math.round(o.loaded / o.total * 100), ye("internal:request-progress", { url: e, method: t, data: r, headers: n, replace: i, progress: o }));
+ }
+ });
+ return a.then((o) => {
+ const l = e.split("#")[1] || "";
+ go(o, i, l), ye("internal:request-response", { url: e, method: t, data: r, headers: n, replace: i, response: o });
+ }).catch(async (o) => {
+ if (ye("internal:request-error", { url: e, method: t, data: r, headers: n, replace: i, error: o }), !o.response)
+ return;
+ const l = o.response;
+ if (l.status == 409 && l.headers["x-splade-redirect-away"])
+ return window.location = l.headers["x-splade-redirect-away"];
+ let u = {};
+ if (l.data instanceof Blob) {
+ const c = await l.data.text();
+ l.data.type === "application/json" && typeof c == "string" ? u = JSON.parse(c) || {} : l.data.html = c;
+ } else
+ u = l.data.splade;
+ u && !u.lazy && !u.rehydrate && Hr(u), l.status != 422 && Pi(
+ l.data.html ? l.data.html : l.data
+ );
+ }), a;
+}
+function Ci(e, t) {
+ return typeof t > "u" && (t = {}), Ke(e, "GET", {}, t, true);
+}
+function qo(e, t) {
+ return typeof t > "u" && (t = {}), Ke(e, "GET", {}, t, false);
+}
+function Co(e) {
+ return Ke(e, "GET", {}, { "X-Splade-Modal": "modal" }, false);
+}
+const Gr = vueExports.ref({});
+function Fo(e) {
+ const t = Gr.value[e];
+ return t ? (ae.value++, Ai(t.html, t.type), true) : false;
+}
+function ko(e, t, r) {
+ Gr.value[e] = { html: t, type: r };
+}
+function Lo(e) {
+ return Ke(e, "GET", {}, { "X-Splade-Modal": "slideover" }, false);
+}
+function Ro(e, t) {
+ return Ke(e, "GET", {}, { "X-Splade-Lazy": t }, false);
+}
+function Bo(e, t) {
+ return Ke(e, "GET", {}, { "X-Splade-Rehydrate": t }, false);
+}
+function jo(e) {
+ typeof e > "u" && (e = false);
+ const t = {
+ "X-Splade-Refresh": true
+ };
+ return e && (t["X-Splade-Preserve-Scroll"] = true), Ci(R.value.url, t);
+}
+function Mo(e, t) {
+ tt[ie.value].on(e, t);
+}
+function Do(e, t) {
+ tt[ie.value].off(e, t);
+}
+function ye(e, t) {
+ typeof t > "u" && (t = {}), tt[ie.value].emit(e, t), $e || document.dispatchEvent(new CustomEvent(`splade:${e}`, { detail: t }));
+}
+const p = {
+ init: fo,
+ replace: Ci,
+ visit: qo,
+ modal: Co,
+ slideover: Lo,
+ refresh: jo,
+ request: Ke,
+ lazy: Ro,
+ rehydrate: Bo,
+ replaceUrlOfCurrentPage: mo,
+ htmlForDynamicComponent(e) {
+ return R.value.dynamics[e];
+ },
+ setOnHead(e) {
+ Ti.value = e;
+ },
+ setOnHtml(e) {
+ xi.value = e;
+ },
+ setOnModal(e) {
+ _i.value = e;
+ },
+ setOnServerError(e) {
+ Ii.value = e;
+ },
+ onServerError: Pi,
+ hasValidationErrors: bo,
+ validationErrors: Si,
+ sharedData: Ei,
+ // ref
+ flashData: So,
+ toasts: rt,
+ // ref
+ toastsReversed: $o,
+ // ref
+ confirmModal: Vr,
+ // ref
+ confirm: To,
+ clearConfirmModal: xo,
+ pushToast: Oo,
+ dismissToast: Eo,
+ restore: Ao,
+ remember: qi,
+ forget: Po,
+ popStack: yo,
+ currentStack: ae,
+ // ref
+ stackType: _o,
+ pageVisitId: vueExports.computed(() => R.value.pageVisitId),
+ // ref
+ dynamicVisitId: vueExports.computed(() => R.value.dynamicVisitId),
+ // ref
+ isSsr: $e,
+ openPreloadedModal: Fo,
+ registerPreloadedModal: ko,
+ on: Mo,
+ off: Do,
+ emit: ye
+};
+var No = "[object String]";
+function se(e) {
+ return typeof e == "string" || !M(e) && Le(e) && Be(e) == No;
+}
+const ue = {
+ __name: "Render",
+ props: {
+ html: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ passthrough: {
+ type: Object,
+ required: false,
+ default() {
+ return {};
+ }
+ }
+ },
+ setup(e) {
+ const t = e, r = vueExports.ref(null);
+ function n() {
+ r.value = vueExports.h({
+ template: t.html,
+ data() {
+ return { ...t.passthrough };
+ }
+ }), vueExports.nextTick(() => {
+ p.emit("rendered");
+ });
+ }
+ return vueExports.watch(() => t.html, n, { immediate: true }), (i, s) => e.html ? (vueExports.openBlock(), vueExports.createBlock(vueExports.unref(r), { key: 0 })) : vueExports.createCommentVNode("", true);
+ }
+}, Vo = {
+ __name: "ServerError",
+ props: {
+ html: {
+ type: String,
+ required: true
+ }
+ },
+ emits: ["close"],
+ setup(e, { emit: t }) {
+ const r = e, n = t, i = vueExports.ref(null);
+ function s() {
+ const l = document.createElement("html");
+ l.innerHTML = r.html, l.querySelectorAll("a").forEach((c) => c.setAttribute("target", "_top")), document.body.style.overflow = "hidden";
+ const u = i.value;
+ if (!u.contentWindow)
+ throw new Error("iframe not yet ready.");
+ u.contentWindow.document.open(), u.contentWindow.document.write(l.outerHTML), u.contentWindow.document.close(), document.addEventListener("keydown", a);
+ }
+ function a(l) {
+ l.keyCode === 27 && o();
+ }
+ function o() {
+ document.body.style.overflow = "visible", document.removeEventListener("keydown", a), n("close");
+ }
+ return vueExports.onMounted(() => s()), (l, u) => (vueExports.openBlock(), vueExports.createElementBlock("div", {
+ style: { position: "fixed", top: "0px", right: "0px", bottom: "0px", left: "0px", "z-index": "200000", "box-sizing": "border-box", height: "100vh", width: "100vw", "background-color": "rgb(0 0 0 / 0.75)", padding: "2rem" },
+ onClick: o
+ }, [
+ vueExports.createElementVNode("iframe", {
+ ref_key: "iframeElement",
+ ref: i,
+ class: "bg-white w-full h-full"
+ }, null, 512)
+ ]));
+ }
+}, Ho = {
+ __name: "SpladeApp",
+ props: {
+ el: {
+ type: [String, Object],
+ required: false,
+ default: ""
+ },
+ components: {
+ type: String,
+ required: false,
+ default: (e) => {
+ if (!p.isSsr) {
+ const t = se(e.el) ? document.getElementById(e.el) : e.el;
+ return JSON.parse(t.dataset.components) || "";
+ }
+ }
+ },
+ initialHtml: {
+ type: String,
+ required: false,
+ default: (e) => {
+ if (!p.isSsr) {
+ const t = se(e.el) ? document.getElementById(e.el) : e.el;
+ return JSON.parse(t.dataset.html) || "";
+ }
+ }
+ },
+ initialDynamics: {
+ type: Object,
+ required: false,
+ default: (e) => {
+ if (!p.isSsr) {
+ const t = se(e.el) ? document.getElementById(e.el) : e.el;
+ return JSON.parse(t.dataset.dynamics) || {};
+ }
+ }
+ },
+ initialSpladeData: {
+ type: Object,
+ required: false,
+ default: (e) => {
+ if (!p.isSsr) {
+ const t = se(e.el) ? document.getElementById(e.el) : e.el;
+ return JSON.parse(t.dataset.splade) || {};
+ }
+ }
+ }
+ },
+ setup(e) {
+ const t = e;
+ vueExports.provide("stack", 0);
+ const r = vueExports.ref(), n = vueExports.ref([]), i = vueExports.ref(null), s = vueExports.ref(null), a = vueExports.ref(true), o = vueExports.inject("$spladeOptions") || {}, l = vueExports.computed(() => p.currentStack.value < 1 ? [] : {
+ filter: "blur(4px)",
+ "transition-property": "filter",
+ "transition-duration": "150ms",
+ "transition-timing-function": "cubic-bezier(0.4, 0, 0.2, 1)"
+ });
+ function u() {
+ i.value = null;
+ }
+ function c(h) {
+ n.value[h] = null, p.popStack();
+ }
+ function v(h) {
+ const m = document.createElement("meta");
+ te(h, (d, b) => {
+ m[b] = d;
+ }), document.getElementsByTagName("head")[0].appendChild(m);
+ }
+ function g(h) {
+ var d;
+ let m = "meta";
+ te(h, (b, O) => {
+ m = `${m}[${O}="${b}"]`;
+ });
+ try {
+ (d = document.querySelector(m)) == null || d.remove();
+ } catch {
+ }
+ }
+ p.setOnHead((h) => {
+ var m;
+ if (!p.isSsr) {
+ if (s.value === null) {
+ s.value = h.meta;
+ return;
+ }
+ if (s.value.forEach((d) => {
+ g(d);
+ }), s.value = h.meta, document.title = h.title, h.meta.forEach((d) => {
+ v(d);
+ }), (m = document.querySelector('link[rel="canonical"]')) == null || m.remove(), h.canonical) {
+ const d = document.createElement("link");
+ d.rel = "canonical", d.href = h.canonical, document.getElementsByTagName("head")[0].appendChild(d);
+ }
+ }
+ });
+ const f = (h, m) => {
+ n.value = [], r.value = h, vueExports.nextTick(() => {
+ if (!p.isSsr) {
+ const d = window.location.hash;
+ d && document.getElementById(d.substring(1)) ? window.location.hash = d : window.scrollTo(0, m);
+ }
+ o.transform_anchors && [...document.querySelectorAll("a")].forEach((d) => {
+ d.href == "" || d.href.charAt(0) == "#" || d.__vnode.dynamicProps === null && (d.hasAttribute("download") || (d.onclick = function(b) {
+ b.preventDefault(), p.visit(d.href);
+ }));
+ });
+ });
+ };
+ return p.setOnHtml((h, m, d) => {
+ if (!p.isSsr && document.startViewTransition && o.view_transitions && d)
+ return document.startViewTransition(() => f(h, m));
+ f(h, m);
+ }), p.setOnModal(function(h, m) {
+ n.value[p.currentStack.value] && (a.value = false), n.value[p.currentStack.value] = { html: h, type: m }, vueExports.nextTick(() => {
+ a.value = true;
+ });
+ }), p.setOnServerError(function(h) {
+ i.value = h;
+ }), p.init(t.initialHtml, t.initialDynamics, t.initialSpladeData), vueExports.onMounted(() => {
+ if (p.isSsr)
+ return;
+ const h = se(t.el) ? document.getElementById(t.el) : t.el;
+ ["components", "html", "dynamics", "splade"].forEach((m) => {
+ delete h.dataset[m];
+ });
+ }), (h, m) => (vueExports.openBlock(), vueExports.createElementBlock("div", null, [
+ vueExports.unref(p).isSsr ? (vueExports.openBlock(), vueExports.createBlock(ue, {
+ key: `visit.${vueExports.unref(p).pageVisitId.value}`,
+ style: vueExports.normalizeStyle(l.value),
+ html: r.value
+ }, null, 8, ["style", "html"])) : (vueExports.openBlock(), vueExports.createBlock(vueExports.KeepAlive, {
+ key: 0,
+ max: vueExports.unref(o).max_keep_alive
+ }, [
+ (vueExports.openBlock(), vueExports.createBlock(ue, {
+ key: `visit.${vueExports.unref(p).pageVisitId.value}`,
+ style: vueExports.normalizeStyle(l.value),
+ html: r.value
+ }, null, 8, ["style", "html"]))
+ ], 1032, ["max"])),
+ vueExports.createVNode(ue, { html: e.components }, null, 8, ["html"]),
+ (vueExports.openBlock(true), vueExports.createElementBlock(vueExports.Fragment, null, vueExports.renderList(vueExports.unref(p).currentStack.value, (d) => (vueExports.openBlock(), vueExports.createBlock(ue, {
+ key: `modal.${d}`,
+ type: n.value[d].type,
+ html: n.value[d].html,
+ stack: d,
+ "on-top-of-stack": vueExports.unref(p).currentStack.value === d,
+ animate: a.value,
+ onClose: (b) => c(d)
+ }, null, 8, ["type", "html", "stack", "on-top-of-stack", "animate", "onClose"]))), 128)),
+ i.value ? (vueExports.openBlock(), vueExports.createBlock(Vo, {
+ key: 2,
+ html: i.value,
+ onClose: u
+ }, null, 8, ["html"])) : vueExports.createCommentVNode("", true)
+ ]));
+ }
+};
+function Cp(e) {
+ return () => vueExports.h(Ho, e);
+}
+var Uo = Object.prototype, Wo = Uo.hasOwnProperty;
+function zo(e, t) {
+ return e != null && Wo.call(e, t);
+}
+var Go = "[object Symbol]";
+function Xt(e) {
+ return typeof e == "symbol" || Le(e) && Be(e) == Go;
+}
+var Xo = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Ko = /^\w*$/;
+function Xr(e, t) {
+ if (M(e))
+ return false;
+ var r = typeof e;
+ return r == "number" || r == "symbol" || r == "boolean" || e == null || Xt(e) ? true : Ko.test(e) || !Xo.test(e) || t != null && e in Object(t);
+}
+var Jo = ve["__core-js_shared__"];
+const cr = Jo;
+var An = function() {
+ var e = /[^.]+$/.exec(cr && cr.keys && cr.keys.IE_PROTO || "");
+ return e ? "Symbol(src)_1." + e : "";
+}();
+function Qo(e) {
+ return !!An && An in e;
+}
+var Yo = Function.prototype, Zo = Yo.toString;
+function Je(e) {
+ if (e != null) {
+ try {
+ return Zo.call(e);
+ } catch {
+ }
+ try {
+ return e + "";
+ } catch {
+ }
+ }
+ return "";
+}
+var el = /[\\^$.*+?()[\]{}|]/g, tl = /^\[object .+?Constructor\]$/, rl = Function.prototype, nl = Object.prototype, il = rl.toString, sl = nl.hasOwnProperty, al = RegExp(
+ "^" + il.call(sl).replace(el, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
+);
+function ol(e) {
+ if (!J(e) || Qo(e))
+ return false;
+ var t = mi(e) ? al : tl;
+ return t.test(Je(e));
+}
+function ll(e, t) {
+ return e == null ? void 0 : e[t];
+}
+function Qe(e, t) {
+ var r = ll(e, t);
+ return ol(r) ? r : void 0;
+}
+var ul = Qe(Object, "create");
+const bt = ul;
+function cl() {
+ this.__data__ = bt ? bt(null) : {}, this.size = 0;
+}
+function dl(e) {
+ var t = this.has(e) && delete this.__data__[e];
+ return this.size -= t ? 1 : 0, t;
+}
+var fl = "__lodash_hash_undefined__", pl = Object.prototype, hl = pl.hasOwnProperty;
+function ml(e) {
+ var t = this.__data__;
+ if (bt) {
+ var r = t[e];
+ return r === fl ? void 0 : r;
+ }
+ return hl.call(t, e) ? t[e] : void 0;
+}
+var vl = Object.prototype, gl = vl.hasOwnProperty;
+function yl(e) {
+ var t = this.__data__;
+ return bt ? t[e] !== void 0 : gl.call(t, e);
+}
+var bl = "__lodash_hash_undefined__";
+function wl(e, t) {
+ var r = this.__data__;
+ return this.size += this.has(e) ? 0 : 1, r[e] = bt && t === void 0 ? bl : t, this;
+}
+function Ge(e) {
+ var t = -1, r = e == null ? 0 : e.length;
+ for (this.clear(); ++t < r; ) {
+ var n = e[t];
+ this.set(n[0], n[1]);
+ }
+}
+Ge.prototype.clear = cl;
+Ge.prototype.delete = dl;
+Ge.prototype.get = ml;
+Ge.prototype.has = yl;
+Ge.prototype.set = wl;
+function Sl() {
+ this.__data__ = [], this.size = 0;
+}
+function Kr(e, t) {
+ return e === t || e !== e && t !== t;
+}
+function Kt(e, t) {
+ for (var r = e.length; r--; )
+ if (Kr(e[r][0], t))
+ return r;
+ return -1;
+}
+var Ol = Array.prototype, $l = Ol.splice;
+function El(e) {
+ var t = this.__data__, r = Kt(t, e);
+ if (r < 0)
+ return false;
+ var n = t.length - 1;
+ return r == n ? t.pop() : $l.call(t, r, 1), --this.size, true;
+}
+function Tl(e) {
+ var t = this.__data__, r = Kt(t, e);
+ return r < 0 ? void 0 : t[r][1];
+}
+function xl(e) {
+ return Kt(this.__data__, e) > -1;
+}
+function _l(e, t) {
+ var r = this.__data__, n = Kt(r, e);
+ return n < 0 ? (++this.size, r.push([e, t])) : r[n][1] = t, this;
+}
+function Te(e) {
+ var t = -1, r = e == null ? 0 : e.length;
+ for (this.clear(); ++t < r; ) {
+ var n = e[t];
+ this.set(n[0], n[1]);
+ }
+}
+Te.prototype.clear = Sl;
+Te.prototype.delete = El;
+Te.prototype.get = Tl;
+Te.prototype.has = xl;
+Te.prototype.set = _l;
+var Il = Qe(ve, "Map");
+const wt = Il;
+function Al() {
+ this.size = 0, this.__data__ = {
+ hash: new Ge(),
+ map: new (wt || Te)(),
+ string: new Ge()
+ };
+}
+function Pl(e) {
+ var t = typeof e;
+ return t == "string" || t == "number" || t == "symbol" || t == "boolean" ? e !== "__proto__" : e === null;
+}
+function Jt(e, t) {
+ var r = e.__data__;
+ return Pl(t) ? r[typeof t == "string" ? "string" : "hash"] : r.map;
+}
+function ql(e) {
+ var t = Jt(this, e).delete(e);
+ return this.size -= t ? 1 : 0, t;
+}
+function Cl(e) {
+ return Jt(this, e).get(e);
+}
+function Fl(e) {
+ return Jt(this, e).has(e);
+}
+function kl(e, t) {
+ var r = Jt(this, e), n = r.size;
+ return r.set(e, t), this.size += r.size == n ? 0 : 1, this;
+}
+function xe(e) {
+ var t = -1, r = e == null ? 0 : e.length;
+ for (this.clear(); ++t < r; ) {
+ var n = e[t];
+ this.set(n[0], n[1]);
+ }
+}
+xe.prototype.clear = Al;
+xe.prototype.delete = ql;
+xe.prototype.get = Cl;
+xe.prototype.has = Fl;
+xe.prototype.set = kl;
+var Ll = "Expected a function";
+function Jr(e, t) {
+ if (typeof e != "function" || t != null && typeof t != "function")
+ throw new TypeError(Ll);
+ var r = function() {
+ var n = arguments, i = t ? t.apply(this, n) : n[0], s = r.cache;
+ if (s.has(i))
+ return s.get(i);
+ var a = e.apply(this, n);
+ return r.cache = s.set(i, a) || s, a;
+ };
+ return r.cache = new (Jr.Cache || xe)(), r;
+}
+Jr.Cache = xe;
+var Rl = 500;
+function Bl(e) {
+ var t = Jr(e, function(n) {
+ return r.size === Rl && r.clear(), n;
+ }), r = t.cache;
+ return t;
+}
+var jl = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, Ml = /\\(\\)?/g, Dl = Bl(function(e) {
+ var t = [];
+ return e.charCodeAt(0) === 46 && t.push(""), e.replace(jl, function(r, n, i, s) {
+ t.push(i ? s.replace(Ml, "$1") : n || r);
+ }), t;
+});
+const Nl = Dl;
+function Fi(e, t) {
+ for (var r = -1, n = e == null ? 0 : e.length, i = Array(n); ++r < n; )
+ i[r] = t(e[r], r, e);
+ return i;
+}
+var Vl = 1 / 0, Pn = ke ? ke.prototype : void 0, qn = Pn ? Pn.toString : void 0;
+function Qt(e) {
+ if (typeof e == "string")
+ return e;
+ if (M(e))
+ return Fi(e, Qt) + "";
+ if (Xt(e))
+ return qn ? qn.call(e) : "";
+ var t = e + "";
+ return t == "0" && 1 / e == -Vl ? "-0" : t;
+}
+function Qr(e) {
+ return e == null ? "" : Qt(e);
+}
+function Yr(e, t) {
+ return M(e) ? e : Xr(e, t) ? [e] : Nl(Qr(e));
+}
+var Hl = 1 / 0;
+function $t(e) {
+ if (typeof e == "string" || Xt(e))
+ return e;
+ var t = e + "";
+ return t == "0" && 1 / e == -Hl ? "-0" : t;
+}
+function ki(e, t, r) {
+ t = Yr(t, e);
+ for (var n = -1, i = t.length, s = false; ++n < i; ) {
+ var a = $t(t[n]);
+ if (!(s = e != null && r(e, a)))
+ break;
+ e = e[a];
+ }
+ return s || ++n != i ? s : (i = e == null ? 0 : e.length, !!i && Br(i) && Rr(a, i) && (M(e) || di(e)));
+}
+function W(e, t) {
+ return e != null && ki(e, t, zo);
+}
+const Ul = {
+ props: {
+ spinner: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ render() {
+ return this.$slots.default({
+ spinner: this.spinner
+ });
+ }
+};
+function fe(e, t, ...r) {
+ if (e in t) {
+ let i = t[e];
+ return typeof i == "function" ? i(...r) : i;
+ }
+ let n = new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((i) => `"${i}"`).join(", ")}.`);
+ throw Error.captureStackTrace && Error.captureStackTrace(n, fe), n;
+}
+var Dt = ((e) => (e[e.None = 0] = "None", e[e.RenderStrategy = 1] = "RenderStrategy", e[e.Static = 2] = "Static", e))(Dt || {}), Ce = ((e) => (e[e.Unmount = 0] = "Unmount", e[e.Hidden = 1] = "Hidden", e))(Ce || {});
+function Z({ visible: e = true, features: t = 0, ourProps: r, theirProps: n, ...i }) {
+ var s;
+ let a = Ri(n, r), o = Object.assign(i, { props: a });
+ if (e || t & 2 && a.static)
+ return dr(o);
+ if (t & 1) {
+ let l = (s = a.unmount) == null || s ? 0 : 1;
+ return fe(l, { 0() {
+ return null;
+ }, 1() {
+ return dr({ ...i, props: { ...a, hidden: true, style: { display: "none" } } });
+ } });
+ }
+ return dr(o);
+}
+function dr({ props: e, attrs: t, slots: r, slot: n, name: i }) {
+ var s, a;
+ let { as: o, ...l } = Bi(e, ["unmount", "static"]), u = (s = r.default) == null ? void 0 : s.call(r, n), c = {};
+ if (n) {
+ let v = false, g = [];
+ for (let [f, h] of Object.entries(n))
+ typeof h == "boolean" && (v = true), h === true && g.push(f);
+ v && (c["data-headlessui-state"] = g.join(" "));
+ }
+ if (o === "template") {
+ if (u = Li(u ?? []), Object.keys(l).length > 0 || Object.keys(t).length > 0) {
+ let [v, ...g] = u ?? [];
+ if (!Wl(v) || g.length > 0)
+ throw new Error(['Passing props on "template"!', "", `The current component <${i} /> is rendering a "template".`, "However we need to passthrough the following props:", Object.keys(l).concat(Object.keys(t)).map((m) => m.trim()).filter((m, d, b) => b.indexOf(m) === d).sort((m, d) => m.localeCompare(d)).map((m) => ` - ${m}`).join(`
+`), "", "You can apply a few solutions:", ['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".', "Render a single element as the child so that we can forward the props onto that element."].map((m) => ` - ${m}`).join(`
+`)].join(`
+`));
+ let f = Ri((a = v.props) != null ? a : {}, l), h = vueExports.cloneVNode(v, f);
+ for (let m in f)
+ m.startsWith("on") && (h.props || (h.props = {}), h.props[m] = f[m]);
+ return h;
+ }
+ return Array.isArray(u) && u.length === 1 ? u[0] : u;
+ }
+ return vueExports.h(o, Object.assign({}, l, c), { default: () => u });
+}
+function Li(e) {
+ return e.flatMap((t) => t.type === vueExports.Fragment ? Li(t.children) : [t]);
+}
+function Ri(...e) {
+ if (e.length === 0)
+ return {};
+ if (e.length === 1)
+ return e[0];
+ let t = {}, r = {};
+ for (let n of e)
+ for (let i in n)
+ i.startsWith("on") && typeof n[i] == "function" ? (r[i] != null || (r[i] = []), r[i].push(n[i])) : t[i] = n[i];
+ if (t.disabled || t["aria-disabled"])
+ return Object.assign(t, Object.fromEntries(Object.keys(r).map((n) => [n, void 0])));
+ for (let n in r)
+ Object.assign(t, { [n](i, ...s) {
+ let a = r[n];
+ for (let o of a) {
+ if (i instanceof Event && i.defaultPrevented)
+ return;
+ o(i, ...s);
+ }
+ } });
+ return t;
+}
+function Bi(e, t = []) {
+ let r = Object.assign({}, e);
+ for (let n of t)
+ n in r && delete r[n];
+ return r;
+}
+function Wl(e) {
+ return e == null ? false : typeof e.type == "string" || typeof e.type == "object" || typeof e.type == "function";
+}
+let zl = 0;
+function Gl() {
+ return ++zl;
+}
+function Ye() {
+ return Gl();
+}
+var ji = ((e) => (e.Space = " ", e.Enter = "Enter", e.Escape = "Escape", e.Backspace = "Backspace", e.Delete = "Delete", e.ArrowLeft = "ArrowLeft", e.ArrowUp = "ArrowUp", e.ArrowRight = "ArrowRight", e.ArrowDown = "ArrowDown", e.Home = "Home", e.End = "End", e.PageUp = "PageUp", e.PageDown = "PageDown", e.Tab = "Tab", e))(ji || {});
+function D(e) {
+ var t;
+ return e == null || e.value == null ? null : (t = e.value.$el) != null ? t : e.value;
+}
+let Mi = Symbol("Context");
+var G = ((e) => (e[e.Open = 1] = "Open", e[e.Closed = 2] = "Closed", e[e.Closing = 4] = "Closing", e[e.Opening = 8] = "Opening", e))(G || {});
+function Xl() {
+ return Zr() !== null;
+}
+function Zr() {
+ return vueExports.inject(Mi, null);
+}
+function Kl(e) {
+ vueExports.provide(Mi, e);
+}
+var Jl = Object.defineProperty, Ql = (e, t, r) => t in e ? Jl(e, t, { enumerable: true, configurable: true, writable: true, value: r }) : e[t] = r, Cn = (e, t, r) => (Ql(e, typeof t != "symbol" ? t + "" : t, r), r);
+class Yl {
+ constructor() {
+ Cn(this, "current", this.detect()), Cn(this, "currentId", 0);
+ }
+ set(t) {
+ this.current !== t && (this.currentId = 0, this.current = t);
+ }
+ reset() {
+ this.set(this.detect());
+ }
+ nextId() {
+ return ++this.currentId;
+ }
+ get isServer() {
+ return this.current === "server";
+ }
+ get isClient() {
+ return this.current === "client";
+ }
+ detect() {
+ return typeof window > "u" || typeof document > "u" ? "server" : "client";
+ }
+}
+let Et = new Yl();
+function Tt(e) {
+ if (Et.isServer)
+ return null;
+ if (e instanceof Node)
+ return e.ownerDocument;
+ if (e != null && e.hasOwnProperty("value")) {
+ let t = D(e);
+ if (t)
+ return t.ownerDocument;
+ }
+ return document;
+}
+let br = ["[contentEditable=true]", "[tabindex]", "a[href]", "area[href]", "button:not([disabled])", "iframe", "input:not([disabled])", "select:not([disabled])", "textarea:not([disabled])"].map((e) => `${e}:not([tabindex='-1'])`).join(",");
+var qe = ((e) => (e[e.First = 1] = "First", e[e.Previous = 2] = "Previous", e[e.Next = 4] = "Next", e[e.Last = 8] = "Last", e[e.WrapAround = 16] = "WrapAround", e[e.NoScroll = 32] = "NoScroll", e))(qe || {}), Di = ((e) => (e[e.Error = 0] = "Error", e[e.Overflow = 1] = "Overflow", e[e.Success = 2] = "Success", e[e.Underflow = 3] = "Underflow", e))(Di || {}), Zl = ((e) => (e[e.Previous = -1] = "Previous", e[e.Next = 1] = "Next", e))(Zl || {});
+function eu(e = document.body) {
+ return e == null ? [] : Array.from(e.querySelectorAll(br)).sort((t, r) => Math.sign((t.tabIndex || Number.MAX_SAFE_INTEGER) - (r.tabIndex || Number.MAX_SAFE_INTEGER)));
+}
+var Ni = ((e) => (e[e.Strict = 0] = "Strict", e[e.Loose = 1] = "Loose", e))(Ni || {});
+function tu(e, t = 0) {
+ var r;
+ return e === ((r = Tt(e)) == null ? void 0 : r.body) ? false : fe(t, { 0() {
+ return e.matches(br);
+ }, 1() {
+ let n = e;
+ for (; n !== null; ) {
+ if (n.matches(br))
+ return true;
+ n = n.parentElement;
+ }
+ return false;
+ } });
+}
+var ru = ((e) => (e[e.Keyboard = 0] = "Keyboard", e[e.Mouse = 1] = "Mouse", e))(ru || {});
+typeof window < "u" && typeof document < "u" && (document.addEventListener("keydown", (e) => {
+ e.metaKey || e.altKey || e.ctrlKey || (document.documentElement.dataset.headlessuiFocusVisible = "");
+}, true), document.addEventListener("click", (e) => {
+ e.detail === 1 ? delete document.documentElement.dataset.headlessuiFocusVisible : e.detail === 0 && (document.documentElement.dataset.headlessuiFocusVisible = "");
+}, true));
+function We(e) {
+ e == null || e.focus({ preventScroll: true });
+}
+let nu = ["textarea", "input"].join(",");
+function iu(e) {
+ var t, r;
+ return (r = (t = e == null ? void 0 : e.matches) == null ? void 0 : t.call(e, nu)) != null ? r : false;
+}
+function su(e, t = (r) => r) {
+ return e.slice().sort((r, n) => {
+ let i = t(r), s = t(n);
+ if (i === null || s === null)
+ return 0;
+ let a = i.compareDocumentPosition(s);
+ return a & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : a & Node.DOCUMENT_POSITION_PRECEDING ? 1 : 0;
+ });
+}
+function Lt(e, t, { sorted: r = true, relativeTo: n = null, skipElements: i = [] } = {}) {
+ var s;
+ let a = (s = Array.isArray(e) ? e.length > 0 ? e[0].ownerDocument : document : e == null ? void 0 : e.ownerDocument) != null ? s : document, o = Array.isArray(e) ? r ? su(e) : e : eu(e);
+ i.length > 0 && o.length > 1 && (o = o.filter((h) => !i.includes(h))), n = n ?? a.activeElement;
+ let l = (() => {
+ if (t & 5)
+ return 1;
+ if (t & 10)
+ return -1;
+ throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
+ })(), u = (() => {
+ if (t & 1)
+ return 0;
+ if (t & 2)
+ return Math.max(0, o.indexOf(n)) - 1;
+ if (t & 4)
+ return Math.max(0, o.indexOf(n)) + 1;
+ if (t & 8)
+ return o.length - 1;
+ throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last");
+ })(), c = t & 32 ? { preventScroll: true } : {}, v = 0, g = o.length, f;
+ do {
+ if (v >= g || v + g <= 0)
+ return 0;
+ let h = u + v;
+ if (t & 16)
+ h = (h + g) % g;
+ else {
+ if (h < 0)
+ return 3;
+ if (h >= g)
+ return 1;
+ }
+ f = o[h], f == null || f.focus(c), v += l;
+ } while (f !== a.activeElement);
+ return t & 6 && iu(f) && f.select(), 2;
+}
+function fr(e, t, r) {
+ Et.isServer || vueExports.watchEffect((n) => {
+ document.addEventListener(e, t, r), n(() => document.removeEventListener(e, t, r));
+ });
+}
+function au(e, t, r = vueExports.computed(() => true)) {
+ function n(s, a) {
+ if (!r.value || s.defaultPrevented)
+ return;
+ let o = a(s);
+ if (o === null || !o.getRootNode().contains(o))
+ return;
+ let l = function u(c) {
+ return typeof c == "function" ? u(c()) : Array.isArray(c) || c instanceof Set ? c : [c];
+ }(e);
+ for (let u of l) {
+ if (u === null)
+ continue;
+ let c = u instanceof HTMLElement ? u : D(u);
+ if (c != null && c.contains(o) || s.composed && s.composedPath().includes(c))
+ return;
+ }
+ return !tu(o, Ni.Loose) && o.tabIndex !== -1 && s.preventDefault(), t(s, o);
+ }
+ let i = vueExports.ref(null);
+ fr("mousedown", (s) => {
+ var a, o;
+ r.value && (i.value = ((o = (a = s.composedPath) == null ? void 0 : a.call(s)) == null ? void 0 : o[0]) || s.target);
+ }, true), fr("click", (s) => {
+ i.value && (n(s, () => i.value), i.value = null);
+ }, true), fr("blur", (s) => n(s, () => window.document.activeElement instanceof HTMLIFrameElement ? window.document.activeElement : null), true);
+}
+var Nt = ((e) => (e[e.None = 1] = "None", e[e.Focusable = 2] = "Focusable", e[e.Hidden = 4] = "Hidden", e))(Nt || {});
+let wr = vueExports.defineComponent({ name: "Hidden", props: { as: { type: [Object, String], default: "div" }, features: { type: Number, default: 1 } }, setup(e, { slots: t, attrs: r }) {
+ return () => {
+ let { features: n, ...i } = e, s = { "aria-hidden": (n & 2) === 2 ? true : void 0, style: { position: "fixed", top: 1, left: 1, width: 1, height: 0, padding: 0, margin: -1, overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", borderWidth: "0", ...(n & 4) === 4 && (n & 2) !== 2 && { display: "none" } } };
+ return Z({ ourProps: s, theirProps: i, slot: {}, attrs: r, slots: t, name: "Hidden" });
+ };
+} });
+function ou() {
+ return /iPhone/gi.test(window.navigator.platform) || /Mac/gi.test(window.navigator.platform) && window.navigator.maxTouchPoints > 0;
+}
+function lu(e, t, r) {
+ Et.isServer || vueExports.watchEffect((n) => {
+ window.addEventListener(e, t, r), n(() => window.removeEventListener(e, t, r));
+ });
+}
+var vt = ((e) => (e[e.Forwards = 0] = "Forwards", e[e.Backwards = 1] = "Backwards", e))(vt || {});
+function uu() {
+ let e = vueExports.ref(0);
+ return lu("keydown", (t) => {
+ t.key === "Tab" && (e.value = t.shiftKey ? 1 : 0);
+ }), e;
+}
+function Vi(e, t, r, n) {
+ Et.isServer || vueExports.watchEffect((i) => {
+ e = e ?? window, e.addEventListener(t, r, n), i(() => e.removeEventListener(t, r, n));
+ });
+}
+function Hi(e) {
+ typeof queueMicrotask == "function" ? queueMicrotask(e) : Promise.resolve().then(e).catch((t) => setTimeout(() => {
+ throw t;
+ }));
+}
+function cu(e) {
+ function t() {
+ document.readyState !== "loading" && (e(), document.removeEventListener("DOMContentLoaded", t));
+ }
+ typeof window < "u" && typeof document < "u" && (document.addEventListener("DOMContentLoaded", t), t());
+}
+function Ui(e) {
+ if (!e)
+ return /* @__PURE__ */ new Set();
+ if (typeof e == "function")
+ return new Set(e());
+ let t = /* @__PURE__ */ new Set();
+ for (let r of e.value) {
+ let n = D(r);
+ n instanceof HTMLElement && t.add(n);
+ }
+ return t;
+}
+var Wi = ((e) => (e[e.None = 1] = "None", e[e.InitialFocus = 2] = "InitialFocus", e[e.TabLock = 4] = "TabLock", e[e.FocusLock = 8] = "FocusLock", e[e.RestoreFocus = 16] = "RestoreFocus", e[e.All = 30] = "All", e))(Wi || {});
+let pt = Object.assign(vueExports.defineComponent({ name: "FocusTrap", props: { as: { type: [Object, String], default: "div" }, initialFocus: { type: Object, default: null }, features: { type: Number, default: 30 }, containers: { type: [Object, Function], default: vueExports.ref(/* @__PURE__ */ new Set()) } }, inheritAttrs: false, setup(e, { attrs: t, slots: r, expose: n }) {
+ let i = vueExports.ref(null);
+ n({ el: i, $el: i });
+ let s = vueExports.computed(() => Tt(i)), a = vueExports.ref(false);
+ vueExports.onMounted(() => a.value = true), vueExports.onUnmounted(() => a.value = false), fu({ ownerDocument: s }, vueExports.computed(() => a.value && !!(e.features & 16)));
+ let o = pu({ ownerDocument: s, container: i, initialFocus: vueExports.computed(() => e.initialFocus) }, vueExports.computed(() => a.value && !!(e.features & 2)));
+ hu({ ownerDocument: s, container: i, containers: e.containers, previousActiveElement: o }, vueExports.computed(() => a.value && !!(e.features & 8)));
+ let l = uu();
+ function u(f) {
+ let h = D(i);
+ h && ((m) => m())(() => {
+ fe(l.value, { [vt.Forwards]: () => {
+ Lt(h, qe.First, { skipElements: [f.relatedTarget] });
+ }, [vt.Backwards]: () => {
+ Lt(h, qe.Last, { skipElements: [f.relatedTarget] });
+ } });
+ });
+ }
+ let c = vueExports.ref(false);
+ function v(f) {
+ f.key === "Tab" && (c.value = true, requestAnimationFrame(() => {
+ c.value = false;
+ }));
+ }
+ function g(f) {
+ if (!a.value)
+ return;
+ let h = Ui(e.containers);
+ D(i) instanceof HTMLElement && h.add(D(i));
+ let m = f.relatedTarget;
+ m instanceof HTMLElement && m.dataset.headlessuiFocusGuard !== "true" && (zi(h, m) || (c.value ? Lt(D(i), fe(l.value, { [vt.Forwards]: () => qe.Next, [vt.Backwards]: () => qe.Previous }) | qe.WrapAround, { relativeTo: f.target }) : f.target instanceof HTMLElement && We(f.target)));
+ }
+ return () => {
+ let f = {}, h = { ref: i, onKeydown: v, onFocusout: g }, { features: m, initialFocus: d, containers: b, ...O } = e;
+ return vueExports.h(vueExports.Fragment, [!!(m & 4) && vueExports.h(wr, { as: "button", type: "button", "data-headlessui-focus-guard": true, onFocus: u, features: Nt.Focusable }), Z({ ourProps: h, theirProps: { ...t, ...O }, slot: f, attrs: t, slots: r, name: "FocusTrap" }), !!(m & 4) && vueExports.h(wr, { as: "button", type: "button", "data-headlessui-focus-guard": true, onFocus: u, features: Nt.Focusable })]);
+ };
+} }), { features: Wi }), He = [];
+cu(() => {
+ function e(t) {
+ t.target instanceof HTMLElement && t.target !== document.body && He[0] !== t.target && (He.unshift(t.target), He = He.filter((r) => r != null && r.isConnected), He.splice(10));
+ }
+ window.addEventListener("click", e, { capture: true }), window.addEventListener("mousedown", e, { capture: true }), window.addEventListener("focus", e, { capture: true }), document.body.addEventListener("click", e, { capture: true }), document.body.addEventListener("mousedown", e, { capture: true }), document.body.addEventListener("focus", e, { capture: true });
+});
+function du(e) {
+ let t = vueExports.ref(He.slice());
+ return vueExports.watch([e], ([r], [n]) => {
+ n === true && r === false ? Hi(() => {
+ t.value.splice(0);
+ }) : n === false && r === true && (t.value = He.slice());
+ }, { flush: "post" }), () => {
+ var r;
+ return (r = t.value.find((n) => n != null && n.isConnected)) != null ? r : null;
+ };
+}
+function fu({ ownerDocument: e }, t) {
+ let r = du(t);
+ vueExports.onMounted(() => {
+ vueExports.watchEffect(() => {
+ var n, i;
+ t.value || ((n = e.value) == null ? void 0 : n.activeElement) === ((i = e.value) == null ? void 0 : i.body) && We(r());
+ }, { flush: "post" });
+ }), vueExports.onUnmounted(() => {
+ We(r());
+ });
+}
+function pu({ ownerDocument: e, container: t, initialFocus: r }, n) {
+ let i = vueExports.ref(null), s = vueExports.ref(false);
+ return vueExports.onMounted(() => s.value = true), vueExports.onUnmounted(() => s.value = false), vueExports.onMounted(() => {
+ vueExports.watch([t, r, n], (a, o) => {
+ if (a.every((u, c) => (o == null ? void 0 : o[c]) === u) || !n.value)
+ return;
+ let l = D(t);
+ l && Hi(() => {
+ var u, c;
+ if (!s.value)
+ return;
+ let v = D(r), g = (u = e.value) == null ? void 0 : u.activeElement;
+ if (v) {
+ if (v === g) {
+ i.value = g;
+ return;
+ }
+ } else if (l.contains(g)) {
+ i.value = g;
+ return;
+ }
+ v ? We(v) : Lt(l, qe.First | qe.NoScroll) === Di.Error && console.warn("There are no focusable elements inside the "), i.value = (c = e.value) == null ? void 0 : c.activeElement;
+ });
+ }, { immediate: true, flush: "post" });
+ }), i;
+}
+function hu({ ownerDocument: e, container: t, containers: r, previousActiveElement: n }, i) {
+ var s;
+ Vi((s = e.value) == null ? void 0 : s.defaultView, "focus", (a) => {
+ if (!i.value)
+ return;
+ let o = Ui(r);
+ D(t) instanceof HTMLElement && o.add(D(t));
+ let l = n.value;
+ if (!l)
+ return;
+ let u = a.target;
+ u && u instanceof HTMLElement ? zi(o, u) ? (n.value = u, We(u)) : (a.preventDefault(), a.stopPropagation(), We(l)) : We(n.value);
+ }, true);
+}
+function zi(e, t) {
+ for (let r of e)
+ if (r.contains(t))
+ return true;
+ return false;
+}
+let pr = /* @__PURE__ */ new Map(), ht = /* @__PURE__ */ new Map();
+function Fn(e, t = vueExports.ref(true)) {
+ vueExports.watchEffect((r) => {
+ var n;
+ if (!t.value)
+ return;
+ let i = D(e);
+ if (!i)
+ return;
+ r(function() {
+ var a;
+ if (!i)
+ return;
+ let o = (a = ht.get(i)) != null ? a : 1;
+ if (o === 1 ? ht.delete(i) : ht.set(i, o - 1), o !== 1)
+ return;
+ let l = pr.get(i);
+ l && (l["aria-hidden"] === null ? i.removeAttribute("aria-hidden") : i.setAttribute("aria-hidden", l["aria-hidden"]), i.inert = l.inert, pr.delete(i));
+ });
+ let s = (n = ht.get(i)) != null ? n : 0;
+ ht.set(i, s + 1), s === 0 && (pr.set(i, { "aria-hidden": i.getAttribute("aria-hidden"), inert: i.inert }), i.setAttribute("aria-hidden", "true"), i.inert = true);
+ });
+}
+let Gi = Symbol("ForcePortalRootContext");
+function mu() {
+ return vueExports.inject(Gi, false);
+}
+let Sr = vueExports.defineComponent({ name: "ForcePortalRoot", props: { as: { type: [Object, String], default: "template" }, force: { type: Boolean, default: false } }, setup(e, { slots: t, attrs: r }) {
+ return vueExports.provide(Gi, e.force), () => {
+ let { force: n, ...i } = e;
+ return Z({ theirProps: i, ourProps: {}, slot: {}, slots: t, attrs: r, name: "ForcePortalRoot" });
+ };
+} });
+function vu(e) {
+ let t = Tt(e);
+ if (!t) {
+ if (e === null)
+ return null;
+ throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${e}`);
+ }
+ let r = t.getElementById("headlessui-portal-root");
+ if (r)
+ return r;
+ let n = t.createElement("div");
+ return n.setAttribute("id", "headlessui-portal-root"), t.body.appendChild(n);
+}
+let Xi = vueExports.defineComponent({ name: "Portal", props: { as: { type: [Object, String], default: "div" } }, setup(e, { slots: t, attrs: r }) {
+ let n = vueExports.ref(null), i = vueExports.computed(() => Tt(n)), s = mu(), a = vueExports.inject(Ki, null), o = vueExports.ref(s === true || a == null ? vu(n.value) : a.resolveTarget());
+ return vueExports.watchEffect(() => {
+ s || a != null && (o.value = a.resolveTarget());
+ }), vueExports.onUnmounted(() => {
+ var l, u;
+ let c = (l = i.value) == null ? void 0 : l.getElementById("headlessui-portal-root");
+ c && o.value === c && o.value.children.length <= 0 && ((u = o.value.parentElement) == null || u.removeChild(o.value));
+ }), () => {
+ if (o.value === null)
+ return null;
+ let l = { ref: n, "data-headlessui-portal": "" };
+ return vueExports.h(vueExports.Teleport, { to: o.value }, Z({ ourProps: l, theirProps: e, slot: {}, attrs: r, slots: t, name: "Portal" }));
+ };
+} }), Ki = Symbol("PortalGroupContext"), gu = vueExports.defineComponent({ name: "PortalGroup", props: { as: { type: [Object, String], default: "template" }, target: { type: Object, default: null } }, setup(e, { attrs: t, slots: r }) {
+ let n = vueExports.reactive({ resolveTarget() {
+ return e.target;
+ } });
+ return vueExports.provide(Ki, n), () => {
+ let { target: i, ...s } = e;
+ return Z({ theirProps: s, ourProps: {}, slot: {}, attrs: t, slots: r, name: "PortalGroup" });
+ };
+} }), Ji = Symbol("StackContext");
+var Or = ((e) => (e[e.Add = 0] = "Add", e[e.Remove = 1] = "Remove", e))(Or || {});
+function yu() {
+ return vueExports.inject(Ji, () => {
+ });
+}
+function bu({ type: e, enabled: t, element: r, onUpdate: n }) {
+ let i = yu();
+ function s(...a) {
+ n == null || n(...a), i(...a);
+ }
+ vueExports.onMounted(() => {
+ vueExports.watch(t, (a, o) => {
+ a ? s(0, e, r) : o === true && s(1, e, r);
+ }, { immediate: true, flush: "sync" });
+ }), vueExports.onUnmounted(() => {
+ t.value && s(1, e, r);
+ }), vueExports.provide(Ji, s);
+}
+let Qi = Symbol("DescriptionContext");
+function wu() {
+ let e = vueExports.inject(Qi, null);
+ if (e === null)
+ throw new Error("Missing parent");
+ return e;
+}
+function Su({ slot: e = vueExports.ref({}), name: t = "Description", props: r = {} } = {}) {
+ let n = vueExports.ref([]);
+ function i(s) {
+ return n.value.push(s), () => {
+ let a = n.value.indexOf(s);
+ a !== -1 && n.value.splice(a, 1);
+ };
+ }
+ return vueExports.provide(Qi, { register: i, slot: e, name: t, props: r }), vueExports.computed(() => n.value.length > 0 ? n.value.join(" ") : void 0);
+}
+vueExports.defineComponent({ name: "Description", props: { as: { type: [Object, String], default: "p" }, id: { type: String, default: () => `headlessui-description-${Ye()}` } }, setup(e, { attrs: t, slots: r }) {
+ let n = wu();
+ return vueExports.onMounted(() => vueExports.onUnmounted(n.register(e.id))), () => {
+ let { name: i = "Description", slot: s = vueExports.ref({}), props: a = {} } = n, { id: o, ...l } = e, u = { ...Object.entries(a).reduce((c, [v, g]) => Object.assign(c, { [v]: vueExports.unref(g) }), {}), id: o };
+ return Z({ ourProps: u, theirProps: l, slot: s.value, attrs: t, slots: r, name: i });
+ };
+} });
+function Ou(e) {
+ let t = vueExports.shallowRef(e.getSnapshot());
+ return vueExports.onUnmounted(e.subscribe(() => {
+ t.value = e.getSnapshot();
+ })), t;
+}
+function Yt() {
+ let e = [], t = { addEventListener(r, n, i, s) {
+ return r.addEventListener(n, i, s), t.add(() => r.removeEventListener(n, i, s));
+ }, requestAnimationFrame(...r) {
+ let n = requestAnimationFrame(...r);
+ t.add(() => cancelAnimationFrame(n));
+ }, nextFrame(...r) {
+ t.requestAnimationFrame(() => {
+ t.requestAnimationFrame(...r);
+ });
+ }, setTimeout(...r) {
+ let n = setTimeout(...r);
+ t.add(() => clearTimeout(n));
+ }, style(r, n, i) {
+ let s = r.style.getPropertyValue(n);
+ return Object.assign(r.style, { [n]: i }), this.add(() => {
+ Object.assign(r.style, { [n]: s });
+ });
+ }, group(r) {
+ let n = Yt();
+ return r(n), this.add(() => n.dispose());
+ }, add(r) {
+ return e.push(r), () => {
+ let n = e.indexOf(r);
+ if (n >= 0)
+ for (let i of e.splice(n, 1))
+ i();
+ };
+ }, dispose() {
+ for (let r of e.splice(0))
+ r();
+ } };
+ return t;
+}
+function $u(e, t) {
+ let r = e(), n = /* @__PURE__ */ new Set();
+ return { getSnapshot() {
+ return r;
+ }, subscribe(i) {
+ return n.add(i), () => n.delete(i);
+ }, dispatch(i, ...s) {
+ let a = t[i].call(r, ...s);
+ a && (r = a, n.forEach((o) => o()));
+ } };
+}
+function Eu() {
+ let e;
+ return { before({ doc: t }) {
+ var r;
+ let n = t.documentElement;
+ e = ((r = t.defaultView) != null ? r : window).innerWidth - n.clientWidth;
+ }, after({ doc: t, d: r }) {
+ let n = t.documentElement, i = n.clientWidth - n.offsetWidth, s = e - i;
+ r.style(n, "paddingRight", `${s}px`);
+ } };
+}
+function Tu() {
+ if (!ou())
+ return {};
+ let e;
+ return { before() {
+ e = window.pageYOffset;
+ }, after({ doc: t, d: r, meta: n }) {
+ function i(a) {
+ return n.containers.flatMap((o) => o()).some((o) => o.contains(a));
+ }
+ r.style(t.body, "marginTop", `-${e}px`), window.scrollTo(0, 0);
+ let s = null;
+ r.addEventListener(t, "click", (a) => {
+ if (a.target instanceof HTMLElement)
+ try {
+ let o = a.target.closest("a");
+ if (!o)
+ return;
+ let { hash: l } = new URL(o.href), u = t.querySelector(l);
+ u && !i(u) && (s = u);
+ } catch {
+ }
+ }, true), r.addEventListener(t, "touchmove", (a) => {
+ a.target instanceof HTMLElement && !i(a.target) && a.preventDefault();
+ }, { passive: false }), r.add(() => {
+ window.scrollTo(0, window.pageYOffset + e), s && s.isConnected && (s.scrollIntoView({ block: "nearest" }), s = null);
+ });
+ } };
+}
+function xu() {
+ return { before({ doc: e, d: t }) {
+ t.style(e.documentElement, "overflow", "hidden");
+ } };
+}
+function _u(e) {
+ let t = {};
+ for (let r of e)
+ Object.assign(t, r(t));
+ return t;
+}
+let Ue = $u(() => /* @__PURE__ */ new Map(), { PUSH(e, t) {
+ var r;
+ let n = (r = this.get(e)) != null ? r : { doc: e, count: 0, d: Yt(), meta: /* @__PURE__ */ new Set() };
+ return n.count++, n.meta.add(t), this.set(e, n), this;
+}, POP(e, t) {
+ let r = this.get(e);
+ return r && (r.count--, r.meta.delete(t)), this;
+}, SCROLL_PREVENT({ doc: e, d: t, meta: r }) {
+ let n = { doc: e, d: t, meta: _u(r) }, i = [Tu(), Eu(), xu()];
+ i.forEach(({ before: s }) => s == null ? void 0 : s(n)), i.forEach(({ after: s }) => s == null ? void 0 : s(n));
+}, SCROLL_ALLOW({ d: e }) {
+ e.dispose();
+}, TEARDOWN({ doc: e }) {
+ this.delete(e);
+} });
+Ue.subscribe(() => {
+ let e = Ue.getSnapshot(), t = /* @__PURE__ */ new Map();
+ for (let [r] of e)
+ t.set(r, r.documentElement.style.overflow);
+ for (let r of e.values()) {
+ let n = t.get(r.doc) === "hidden", i = r.count !== 0;
+ (i && !n || !i && n) && Ue.dispatch(r.count > 0 ? "SCROLL_PREVENT" : "SCROLL_ALLOW", r), r.count === 0 && Ue.dispatch("TEARDOWN", r);
+ }
+});
+function Iu(e, t, r) {
+ let n = Ou(Ue), i = vueExports.computed(() => {
+ let s = e.value ? n.value.get(e.value) : void 0;
+ return s ? s.count > 0 : false;
+ });
+ return vueExports.watch([e, t], ([s, a], [o], l) => {
+ if (!s || !a)
+ return;
+ Ue.dispatch("PUSH", s, r);
+ let u = false;
+ l(() => {
+ u || (Ue.dispatch("POP", o ?? s, r), u = true);
+ });
+ }, { immediate: true }), i;
+}
+var Au = ((e) => (e[e.Open = 0] = "Open", e[e.Closed = 1] = "Closed", e))(Au || {});
+let $r = Symbol("DialogContext");
+function xt(e) {
+ let t = vueExports.inject($r, null);
+ if (t === null) {
+ let r = new Error(`<${e} /> is missing a parent component.`);
+ throw Error.captureStackTrace && Error.captureStackTrace(r, xt), r;
+ }
+ return t;
+}
+let qt = "DC8F892D-2EBD-447C-A4C8-A03058436FF4", en = vueExports.defineComponent({ name: "Dialog", inheritAttrs: false, props: { as: { type: [Object, String], default: "div" }, static: { type: Boolean, default: false }, unmount: { type: Boolean, default: true }, open: { type: [Boolean, String], default: qt }, initialFocus: { type: Object, default: null }, id: { type: String, default: () => `headlessui-dialog-${Ye()}` } }, emits: { close: (e) => true }, setup(e, { emit: t, attrs: r, slots: n, expose: i }) {
+ var s;
+ let a = vueExports.ref(false);
+ vueExports.onMounted(() => {
+ a.value = true;
+ });
+ let o = vueExports.ref(0), l = Zr(), u = vueExports.computed(() => e.open === qt && l !== null ? (l.value & G.Open) === G.Open : e.open), c = vueExports.ref(null), v = vueExports.ref(null), g = vueExports.computed(() => Tt(c));
+ if (i({ el: c, $el: c }), !(e.open !== qt || l !== null))
+ throw new Error("You forgot to provide an `open` prop to the `Dialog`.");
+ if (typeof u.value != "boolean")
+ throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${u.value === qt ? void 0 : e.open}`);
+ let f = vueExports.computed(() => a.value && u.value ? 0 : 1), h = vueExports.computed(() => f.value === 0), m = vueExports.computed(() => o.value > 1), d = vueExports.inject($r, null) !== null, b = vueExports.computed(() => m.value ? "parent" : "leaf"), O = vueExports.computed(() => l !== null ? (l.value & G.Closing) === G.Closing : false), A = vueExports.computed(() => d || O.value ? false : h.value), S = vueExports.computed(() => {
+ var E, T, I;
+ return (I = Array.from((T = (E = g.value) == null ? void 0 : E.querySelectorAll("body > *")) != null ? T : []).find((C) => C.id === "headlessui-portal-root" ? false : C.contains(D(v)) && C instanceof HTMLElement)) != null ? I : null;
+ });
+ Fn(S, A);
+ let $ = vueExports.computed(() => m.value ? true : h.value), w = vueExports.computed(() => {
+ var E, T, I;
+ return (I = Array.from((T = (E = g.value) == null ? void 0 : E.querySelectorAll("[data-headlessui-portal]")) != null ? T : []).find((C) => C.contains(D(v)) && C instanceof HTMLElement)) != null ? I : null;
+ });
+ Fn(w, $), bu({ type: "Dialog", enabled: vueExports.computed(() => f.value === 0), element: c, onUpdate: (E, T) => {
+ if (T === "Dialog")
+ return fe(E, { [Or.Add]: () => o.value += 1, [Or.Remove]: () => o.value -= 1 });
+ } });
+ let _ = Su({ name: "DialogDescription", slot: vueExports.computed(() => ({ open: u.value })) }), q = vueExports.ref(null), P = { titleId: q, panelRef: vueExports.ref(null), dialogState: f, setTitleId(E) {
+ q.value !== E && (q.value = E);
+ }, close() {
+ t("close", false);
+ } };
+ vueExports.provide($r, P);
+ function k() {
+ var E, T, I;
+ return [...Array.from((T = (E = g.value) == null ? void 0 : E.querySelectorAll("html > *, body > *, [data-headlessui-portal]")) != null ? T : []).filter((C) => !(C === document.body || C === document.head || !(C instanceof HTMLElement) || C.contains(D(v)) || P.panelRef.value && C.contains(P.panelRef.value))), (I = P.panelRef.value) != null ? I : c.value];
+ }
+ let j = vueExports.computed(() => !(!h.value || m.value));
+ au(() => k(), (E, T) => {
+ P.close(), vueExports.nextTick(() => T == null ? void 0 : T.focus());
+ }, j);
+ let H = vueExports.computed(() => !(m.value || f.value !== 0));
+ Vi((s = g.value) == null ? void 0 : s.defaultView, "keydown", (E) => {
+ H.value && (E.defaultPrevented || E.key === ji.Escape && (E.preventDefault(), E.stopPropagation(), P.close()));
+ });
+ let F = vueExports.computed(() => !(O.value || f.value !== 0 || d));
+ return Iu(g, F, (E) => {
+ var T;
+ return { containers: [...(T = E.containers) != null ? T : [], k] };
+ }), vueExports.watchEffect((E) => {
+ if (f.value !== 0)
+ return;
+ let T = D(c);
+ if (!T)
+ return;
+ let I = new ResizeObserver((C) => {
+ for (let ge of C) {
+ let U = ge.target.getBoundingClientRect();
+ U.x === 0 && U.y === 0 && U.width === 0 && U.height === 0 && P.close();
+ }
+ });
+ I.observe(T), E(() => I.disconnect());
+ }), () => {
+ let { id: E, open: T, initialFocus: I, ...C } = e, ge = { ...r, ref: c, id: E, role: "dialog", "aria-modal": f.value === 0 ? true : void 0, "aria-labelledby": q.value, "aria-describedby": _.value }, U = { open: f.value === 0 };
+ return vueExports.h(Sr, { force: true }, () => [vueExports.h(Xi, () => vueExports.h(gu, { target: c.value }, () => vueExports.h(Sr, { force: false }, () => vueExports.h(pt, { initialFocus: I, containers: k, features: h.value ? fe(b.value, { parent: pt.features.RestoreFocus, leaf: pt.features.All & ~pt.features.FocusLock }) : pt.features.None }, () => Z({ ourProps: ge, theirProps: C, slot: U, attrs: r, slots: n, visible: f.value === 0, features: Dt.RenderStrategy | Dt.Static, name: "Dialog" }))))), vueExports.h(wr, { features: Nt.Hidden, ref: v })]);
+ };
+} });
+vueExports.defineComponent({ name: "DialogOverlay", props: { as: { type: [Object, String], default: "div" }, id: { type: String, default: () => `headlessui-dialog-overlay-${Ye()}` } }, setup(e, { attrs: t, slots: r }) {
+ let n = xt("DialogOverlay");
+ function i(s) {
+ s.target === s.currentTarget && (s.preventDefault(), s.stopPropagation(), n.close());
+ }
+ return () => {
+ let { id: s, ...a } = e;
+ return Z({ ourProps: { id: s, "aria-hidden": true, onClick: i }, theirProps: a, slot: { open: n.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogOverlay" });
+ };
+} });
+vueExports.defineComponent({ name: "DialogBackdrop", props: { as: { type: [Object, String], default: "div" }, id: { type: String, default: () => `headlessui-dialog-backdrop-${Ye()}` } }, inheritAttrs: false, setup(e, { attrs: t, slots: r, expose: n }) {
+ let i = xt("DialogBackdrop"), s = vueExports.ref(null);
+ return n({ el: s, $el: s }), vueExports.onMounted(() => {
+ if (i.panelRef.value === null)
+ throw new Error("A component is being used, but a component is missing.");
+ }), () => {
+ let { id: a, ...o } = e, l = { id: a, ref: s, "aria-hidden": true };
+ return vueExports.h(Sr, { force: true }, () => vueExports.h(Xi, () => Z({ ourProps: l, theirProps: { ...t, ...o }, slot: { open: i.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogBackdrop" })));
+ };
+} });
+let tn = vueExports.defineComponent({ name: "DialogPanel", props: { as: { type: [Object, String], default: "div" }, id: { type: String, default: () => `headlessui-dialog-panel-${Ye()}` } }, setup(e, { attrs: t, slots: r, expose: n }) {
+ let i = xt("DialogPanel");
+ n({ el: i.panelRef, $el: i.panelRef });
+ function s(a) {
+ a.stopPropagation();
+ }
+ return () => {
+ let { id: a, ...o } = e, l = { id: a, ref: i.panelRef, onClick: s };
+ return Z({ ourProps: l, theirProps: o, slot: { open: i.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogPanel" });
+ };
+} });
+vueExports.defineComponent({ name: "DialogTitle", props: { as: { type: [Object, String], default: "h2" }, id: { type: String, default: () => `headlessui-dialog-title-${Ye()}` } }, setup(e, { attrs: t, slots: r }) {
+ let n = xt("DialogTitle");
+ return vueExports.onMounted(() => {
+ n.setTitleId(e.id), vueExports.onUnmounted(() => n.setTitleId(null));
+ }), () => {
+ let { id: i, ...s } = e;
+ return Z({ ourProps: { id: i }, theirProps: s, slot: { open: n.dialogState.value === 0 }, attrs: t, slots: r, name: "DialogTitle" });
+ };
+} });
+function Pu(e) {
+ let t = { called: false };
+ return (...r) => {
+ if (!t.called)
+ return t.called = true, e(...r);
+ };
+}
+function hr(e, ...t) {
+ e && t.length > 0 && e.classList.add(...t);
+}
+function Ct(e, ...t) {
+ e && t.length > 0 && e.classList.remove(...t);
+}
+var Er = ((e) => (e.Finished = "finished", e.Cancelled = "cancelled", e))(Er || {});
+function qu(e, t) {
+ let r = Yt();
+ if (!e)
+ return r.dispose;
+ let { transitionDuration: n, transitionDelay: i } = getComputedStyle(e), [s, a] = [n, i].map((o) => {
+ let [l = 0] = o.split(",").filter(Boolean).map((u) => u.includes("ms") ? parseFloat(u) : parseFloat(u) * 1e3).sort((u, c) => c - u);
+ return l;
+ });
+ return s !== 0 ? r.setTimeout(() => t("finished"), s + a) : t("finished"), r.add(() => t("cancelled")), r.dispose;
+}
+function kn(e, t, r, n, i, s) {
+ let a = Yt(), o = s !== void 0 ? Pu(s) : () => {
+ };
+ return Ct(e, ...i), hr(e, ...t, ...r), a.nextFrame(() => {
+ Ct(e, ...r), hr(e, ...n), a.add(qu(e, (l) => (Ct(e, ...n, ...t), hr(e, ...i), o(l))));
+ }), a.add(() => Ct(e, ...t, ...r, ...n, ...i)), a.add(() => o("cancelled")), a.dispose;
+}
+function Ne(e = "") {
+ return e.split(" ").filter((t) => t.trim().length > 1);
+}
+let rn = Symbol("TransitionContext");
+var Cu = ((e) => (e.Visible = "visible", e.Hidden = "hidden", e))(Cu || {});
+function Fu() {
+ return vueExports.inject(rn, null) !== null;
+}
+function ku() {
+ let e = vueExports.inject(rn, null);
+ if (e === null)
+ throw new Error("A is used but it is missing a parent .");
+ return e;
+}
+function Lu() {
+ let e = vueExports.inject(nn, null);
+ if (e === null)
+ throw new Error("A is used but it is missing a parent .");
+ return e;
+}
+let nn = Symbol("NestingContext");
+function Zt(e) {
+ return "children" in e ? Zt(e.children) : e.value.filter(({ state: t }) => t === "visible").length > 0;
+}
+function Yi(e) {
+ let t = vueExports.ref([]), r = vueExports.ref(false);
+ vueExports.onMounted(() => r.value = true), vueExports.onUnmounted(() => r.value = false);
+ function n(s, a = Ce.Hidden) {
+ let o = t.value.findIndex(({ id: l }) => l === s);
+ o !== -1 && (fe(a, { [Ce.Unmount]() {
+ t.value.splice(o, 1);
+ }, [Ce.Hidden]() {
+ t.value[o].state = "hidden";
+ } }), !Zt(t) && r.value && (e == null || e()));
+ }
+ function i(s) {
+ let a = t.value.find(({ id: o }) => o === s);
+ return a ? a.state !== "visible" && (a.state = "visible") : t.value.push({ id: s, state: "visible" }), () => n(s, Ce.Unmount);
+ }
+ return { children: t, register: i, unregister: n };
+}
+let Zi = Dt.RenderStrategy, lt = vueExports.defineComponent({ props: { as: { type: [Object, String], default: "div" }, show: { type: [Boolean], default: null }, unmount: { type: [Boolean], default: true }, appear: { type: [Boolean], default: false }, enter: { type: [String], default: "" }, enterFrom: { type: [String], default: "" }, enterTo: { type: [String], default: "" }, entered: { type: [String], default: "" }, leave: { type: [String], default: "" }, leaveFrom: { type: [String], default: "" }, leaveTo: { type: [String], default: "" } }, emits: { beforeEnter: () => true, afterEnter: () => true, beforeLeave: () => true, afterLeave: () => true }, setup(e, { emit: t, attrs: r, slots: n, expose: i }) {
+ let s = vueExports.ref(0);
+ function a() {
+ s.value |= G.Opening, t("beforeEnter");
+ }
+ function o() {
+ s.value &= ~G.Opening, t("afterEnter");
+ }
+ function l() {
+ s.value |= G.Closing, t("beforeLeave");
+ }
+ function u() {
+ s.value &= ~G.Closing, t("afterLeave");
+ }
+ if (!Fu() && Xl())
+ return () => vueExports.h(ut, { ...e, onBeforeEnter: a, onAfterEnter: o, onBeforeLeave: l, onAfterLeave: u }, n);
+ let c = vueExports.ref(null), v = vueExports.computed(() => e.unmount ? Ce.Unmount : Ce.Hidden);
+ i({ el: c, $el: c });
+ let { show: g, appear: f } = ku(), { register: h, unregister: m } = Lu(), d = vueExports.ref(g.value ? "visible" : "hidden"), b = { value: true }, O = Ye(), A = { value: false }, S = Yi(() => {
+ !A.value && d.value !== "hidden" && (d.value = "hidden", m(O), u());
+ });
+ vueExports.onMounted(() => {
+ let F = h(O);
+ vueExports.onUnmounted(F);
+ }), vueExports.watchEffect(() => {
+ if (v.value === Ce.Hidden && O) {
+ if (g.value && d.value !== "visible") {
+ d.value = "visible";
+ return;
+ }
+ fe(d.value, { hidden: () => m(O), visible: () => h(O) });
+ }
+ });
+ let $ = Ne(e.enter), w = Ne(e.enterFrom), _ = Ne(e.enterTo), q = Ne(e.entered), P = Ne(e.leave), k = Ne(e.leaveFrom), j = Ne(e.leaveTo);
+ vueExports.onMounted(() => {
+ vueExports.watchEffect(() => {
+ if (d.value === "visible") {
+ let F = D(c);
+ if (F instanceof Comment && F.data === "")
+ throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?");
+ }
+ });
+ });
+ function H(F) {
+ let E = b.value && !f.value, T = D(c);
+ !T || !(T instanceof HTMLElement) || E || (A.value = true, g.value && a(), g.value || l(), F(g.value ? kn(T, $, w, _, q, (I) => {
+ A.value = false, I === Er.Finished && o();
+ }) : kn(T, P, k, j, q, (I) => {
+ A.value = false, I === Er.Finished && (Zt(S) || (d.value = "hidden", m(O), u()));
+ })));
+ }
+ return vueExports.onMounted(() => {
+ vueExports.watch([g], (F, E, T) => {
+ H(T), b.value = false;
+ }, { immediate: true });
+ }), vueExports.provide(nn, S), Kl(vueExports.computed(() => fe(d.value, { visible: G.Open, hidden: G.Closed }) | s.value)), () => {
+ let { appear: F, show: E, enter: T, enterFrom: I, enterTo: C, entered: ge, leave: U, leaveFrom: ct, leaveTo: It, ...Ie } = e, Ze = { ref: c }, Ae = { ...Ie, ...f.value && g.value && Et.isServer ? { class: vueExports.normalizeClass([r.class, Ie.class, ...$, ...w]) } : {} };
+ return Z({ theirProps: Ae, ourProps: Ze, slot: {}, slots: n, attrs: r, features: Zi, visible: d.value === "visible", name: "TransitionChild" });
+ };
+} }), Ru = lt, ut = vueExports.defineComponent({ inheritAttrs: false, props: { as: { type: [Object, String], default: "div" }, show: { type: [Boolean], default: null }, unmount: { type: [Boolean], default: true }, appear: { type: [Boolean], default: false }, enter: { type: [String], default: "" }, enterFrom: { type: [String], default: "" }, enterTo: { type: [String], default: "" }, entered: { type: [String], default: "" }, leave: { type: [String], default: "" }, leaveFrom: { type: [String], default: "" }, leaveTo: { type: [String], default: "" } }, emits: { beforeEnter: () => true, afterEnter: () => true, beforeLeave: () => true, afterLeave: () => true }, setup(e, { emit: t, attrs: r, slots: n }) {
+ let i = Zr(), s = vueExports.computed(() => e.show === null && i !== null ? (i.value & G.Open) === G.Open : e.show);
+ vueExports.watchEffect(() => {
+ if (![true, false].includes(s.value))
+ throw new Error('A is used but it is missing a `:show="true | false"` prop.');
+ });
+ let a = vueExports.ref(s.value ? "visible" : "hidden"), o = Yi(() => {
+ a.value = "hidden";
+ }), l = vueExports.ref(true), u = { show: s, appear: vueExports.computed(() => e.appear || !l.value) };
+ return vueExports.onMounted(() => {
+ vueExports.watchEffect(() => {
+ l.value = false, s.value ? a.value = "visible" : Zt(o) || (a.value = "hidden");
+ });
+ }), vueExports.provide(nn, o), vueExports.provide(rn, u), () => {
+ let c = Bi(e, ["show", "appear", "unmount", "onBeforeEnter", "onBeforeLeave", "onAfterEnter", "onAfterLeave"]), v = { unmount: e.unmount };
+ return Z({ ourProps: { ...v, as: "template" }, theirProps: {}, slot: {}, slots: { ...n, default: () => [vueExports.h(Ru, { onBeforeEnter: () => t("beforeEnter"), onAfterEnter: () => t("afterEnter"), onBeforeLeave: () => t("beforeLeave"), onAfterLeave: () => t("afterLeave"), ...r, ...v, ...c }, n.default)] }, attrs: {}, features: Zi, visible: a.value === "visible", name: "Transition" });
+ };
+} });
+const Bu = {
+ props: {
+ defaultTitle: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ defaultText: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ defaultPasswordText: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ defaultConfirmButton: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ defaultCancelButton: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ confirmPasswordRoute: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ confirmedPasswordStatusRoute: {
+ type: String,
+ required: false,
+ default: ""
+ }
+ },
+ data() {
+ return {
+ isOpen: false,
+ password: "",
+ passwordError: "",
+ submitting: false
+ };
+ },
+ computed: {
+ hasConfirmModal: () => !!p.confirmModal.value,
+ title: function() {
+ var e;
+ return (e = p.confirmModal.value) != null && e.title ? p.confirmModal.value.title : this.defaultTitle;
+ },
+ text: function() {
+ var e;
+ return (e = p.confirmModal.value) != null && e.text ? p.confirmModal.value.text : this.confirmPassword ? this.defaultPasswordText : this.defaultText;
+ },
+ confirmButton: function() {
+ var e;
+ return (e = p.confirmModal.value) != null && e.confirmButton ? p.confirmModal.value.confirmButton : this.defaultConfirmButton;
+ },
+ cancelButton: function() {
+ var e;
+ return (e = p.confirmModal.value) != null && e.cancelButton ? p.confirmModal.value.cancelButton : this.defaultCancelButton;
+ },
+ confirmPassword: function() {
+ var e;
+ return (e = p.confirmModal.value) != null && e.confirmPassword ? p.confirmModal.value.confirmPassword : false;
+ },
+ confirmPasswordOnce: function() {
+ var e;
+ return (e = p.confirmModal.value) != null && e.confirmPasswordOnce ? p.confirmModal.value.confirmPasswordOnce : false;
+ },
+ confirmDanger: function() {
+ var e;
+ return (e = p.confirmModal.value) != null && e.confirmDanger ? p.confirmModal.value.confirmDanger : false;
+ }
+ },
+ watch: {
+ hasConfirmModal(e) {
+ e && (this.setIsOpen(true), this.resetPassword());
+ }
+ },
+ methods: {
+ cancel() {
+ p.confirmModal.value.rejectPromise(), this.setIsOpen(false), this.resetPassword();
+ },
+ resetPassword() {
+ this.password = "", this.passwordError = "";
+ },
+ confirm() {
+ if (!this.confirmPassword)
+ return this.handleSuccess(null);
+ this.submitting = true;
+ let e = this.password;
+ this.passwordError = "", ne.post(this.confirmPasswordRoute, { password: e }, { headers: {
+ Accept: "application/json",
+ "X-Requested-With": "XMLHttpRequest"
+ } }).then(() => {
+ this.handleSuccess(e);
+ }).catch((t) => {
+ t.response.status === 422 ? this.passwordError = t.response.data.errors.password[0] : this.passwordError = "An error occurred. Please try again.";
+ }).finally(() => {
+ this.submitting = false;
+ });
+ },
+ handleSuccess(e) {
+ p.confirmModal.value.resolvePromise(e), this.setIsOpen(false), this.resetPassword();
+ },
+ async setIsOpen(e) {
+ if (e && this.confirmPassword && this.confirmPasswordOnce)
+ try {
+ if ((await ne.get(this.confirmedPasswordStatusRoute)).status === 200) {
+ this.handleSuccess(null), p.clearConfirmModal();
+ return;
+ }
+ } catch {
+ }
+ this.isOpen = e;
+ },
+ emitClose() {
+ this.resetPassword(), p.clearConfirmModal();
+ },
+ setPassword(e) {
+ this.password = e;
+ }
+ },
+ render() {
+ return this.$slots.default({
+ title: this.title,
+ text: this.text,
+ confirmButton: this.confirmButton,
+ cancelButton: this.cancelButton,
+ confirmPassword: this.confirmPassword,
+ confirmDanger: this.confirmDanger,
+ isOpen: this.isOpen,
+ setIsOpen: this.setIsOpen,
+ cancel: this.cancel,
+ confirm: this.confirm,
+ emitClose: this.emitClose,
+ setPassword: this.setPassword,
+ passwordError: this.passwordError,
+ submitting: this.submitting,
+ // These HeadlessUI exports will be removed in v1.0
+ Dialog: en,
+ DialogPanel: tn,
+ TransitionRoot: ut,
+ TransitionChild: lt
+ });
+ }
+};
+function es(e, t) {
+ t = Yr(t, e);
+ for (var r = 0, n = t.length; e != null && r < n; )
+ e = e[$t(t[r++])];
+ return r && r == n ? e : void 0;
+}
+function be(e, t, r) {
+ var n = e == null ? void 0 : es(e, t);
+ return n === void 0 ? r : n;
+}
+var ju = function() {
+ try {
+ var e = Qe(Object, "defineProperty");
+ return e({}, "", {}), e;
+ } catch {
+ }
+}();
+const Ln = ju;
+function ts(e, t, r) {
+ t == "__proto__" && Ln ? Ln(e, t, {
+ configurable: true,
+ enumerable: true,
+ value: r,
+ writable: true
+ }) : e[t] = r;
+}
+var Mu = Object.prototype, Du = Mu.hasOwnProperty;
+function Nu(e, t, r) {
+ var n = e[t];
+ (!(Du.call(e, t) && Kr(n, r)) || r === void 0 && !(t in e)) && ts(e, t, r);
+}
+function Vu(e, t, r, n) {
+ if (!J(e))
+ return e;
+ t = Yr(t, e);
+ for (var i = -1, s = t.length, a = s - 1, o = e; o != null && ++i < s; ) {
+ var l = $t(t[i]), u = r;
+ if (l === "__proto__" || l === "constructor" || l === "prototype")
+ return e;
+ if (i != a) {
+ var c = o[l];
+ u = n ? n(c, l, o) : void 0, u === void 0 && (u = J(c) ? c : Rr(t[i + 1]) ? [] : {});
+ }
+ Nu(o, l, u), o = o[l];
+ }
+ return e;
+}
+function St(e, t, r) {
+ return e == null ? e : Vu(e, t, r);
+}
+const Hu = {
+ props: {
+ default: {
+ type: Object,
+ default: () => ({}),
+ required: false
+ },
+ remember: {
+ type: [Boolean, String],
+ default: false,
+ required: false
+ },
+ localStorage: {
+ type: Boolean,
+ default: false,
+ required: false
+ }
+ },
+ data() {
+ return {
+ values: Object.assign({}, { ...this.default })
+ };
+ },
+ beforeMount() {
+ if (this.remember) {
+ let e = p.restore(this.remember, this.localStorage);
+ e || (e = {}), this.values = Object.assign({}, { ...this.default, ...e });
+ }
+ },
+ updated() {
+ this.remember && p.remember(this.remember, { ...this.values }, this.localStorage);
+ },
+ render() {
+ const e = this;
+ return this.$slots.default ? this.$slots.default(
+ new Proxy(this.values, {
+ ownKeys() {
+ return Object.keys(e.values);
+ },
+ get(t, r) {
+ return be(e.values, r);
+ },
+ set(t, r, n) {
+ St(e.values, r, n);
+ }
+ })
+ ) : null;
+ }
+}, Uu = {
+ props: {
+ parsed: {
+ type: Object,
+ required: true
+ },
+ raw: {
+ type: Object,
+ required: true
+ },
+ remember: {
+ type: Array,
+ required: true
+ },
+ localStorage: {
+ type: Array,
+ required: true
+ }
+ },
+ data() {
+ return {
+ stores: Object.assign({}, { ...this.parsed, ...this.raw })
+ };
+ },
+ beforeMount() {
+ this.remember.forEach((e) => {
+ let t = p.restore(e, this.localStorage.includes(e));
+ this.stores[e] = { ...this.stores[e], ...t };
+ });
+ },
+ updated() {
+ this.remember.forEach((e) => {
+ p.remember(e, { ...this.stores[e] }, this.localStorage.includes(e));
+ });
+ },
+ render() {
+ const e = this;
+ return this.$slots.default ? this.$slots.default(
+ new Proxy(this.stores, {
+ ownKeys() {
+ return Object.keys(e.stores);
+ },
+ get(t, r) {
+ return be(e.stores, r);
+ },
+ set(t, r, n) {
+ St(e.stores, r, n);
+ }
+ })
+ ) : null;
+ }
+};
+var Wu = function() {
+ return ve.Date.now();
+};
+const mr = Wu;
+var zu = /\s/;
+function Gu(e) {
+ for (var t = e.length; t-- && zu.test(e.charAt(t)); )
+ ;
+ return t;
+}
+var Xu = /^\s+/;
+function Ku(e) {
+ return e && e.slice(0, Gu(e) + 1).replace(Xu, "");
+}
+var Rn = 0 / 0, Ju = /^[-+]0x[0-9a-f]+$/i, Qu = /^0b[01]+$/i, Yu = /^0o[0-7]+$/i, Zu = parseInt;
+function Tr(e) {
+ if (typeof e == "number")
+ return e;
+ if (Xt(e))
+ return Rn;
+ if (J(e)) {
+ var t = typeof e.valueOf == "function" ? e.valueOf() : e;
+ e = J(t) ? t + "" : t;
+ }
+ if (typeof e != "string")
+ return e === 0 ? e : +e;
+ e = Ku(e);
+ var r = Qu.test(e);
+ return r || Yu.test(e) ? Zu(e.slice(2), r ? 2 : 8) : Ju.test(e) ? Rn : +e;
+}
+var ec = "Expected a function", tc = Math.max, rc = Math.min;
+function er(e, t, r) {
+ var n, i, s, a, o, l, u = 0, c = false, v = false, g = true;
+ if (typeof e != "function")
+ throw new TypeError(ec);
+ t = Tr(t) || 0, J(r) && (c = !!r.leading, v = "maxWait" in r, s = v ? tc(Tr(r.maxWait) || 0, t) : s, g = "trailing" in r ? !!r.trailing : g);
+ function f(w) {
+ var _ = n, q = i;
+ return n = i = void 0, u = w, a = e.apply(q, _), a;
+ }
+ function h(w) {
+ return u = w, o = setTimeout(b, t), c ? f(w) : a;
+ }
+ function m(w) {
+ var _ = w - l, q = w - u, P = t - _;
+ return v ? rc(P, s - q) : P;
+ }
+ function d(w) {
+ var _ = w - l, q = w - u;
+ return l === void 0 || _ >= t || _ < 0 || v && q >= s;
+ }
+ function b() {
+ var w = mr();
+ if (d(w))
+ return O(w);
+ o = setTimeout(b, m(w));
+ }
+ function O(w) {
+ return o = void 0, g && n ? f(w) : (n = i = void 0, a);
+ }
+ function A() {
+ o !== void 0 && clearTimeout(o), u = 0, n = l = i = o = void 0;
+ }
+ function S() {
+ return o === void 0 ? a : O(mr());
+ }
+ function $() {
+ var w = mr(), _ = d(w);
+ if (n = arguments, i = this, l = w, _) {
+ if (o === void 0)
+ return h(l);
+ if (v)
+ return clearTimeout(o), o = setTimeout(b, t), f(l);
+ }
+ return o === void 0 && (o = setTimeout(b, t)), a;
+ }
+ return $.cancel = A, $.flush = S, $;
+}
+const nc = {
+ props: {
+ url: {
+ type: String,
+ required: true
+ },
+ method: {
+ type: String,
+ required: false,
+ default: "GET"
+ },
+ acceptHeader: {
+ type: String,
+ required: false,
+ default: "application/json"
+ },
+ headers: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ poll: {
+ type: Number,
+ required: false,
+ default: null
+ },
+ default: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ request: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ manual: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ watchDebounce: {
+ type: Number,
+ required: false,
+ default: 0
+ },
+ watchValue: {
+ validator() {
+ return true;
+ },
+ required: false,
+ default: null
+ }
+ },
+ emits: ["success", "error"],
+ data() {
+ return {
+ response: Object.assign({}, { ...this.default }),
+ processing: false,
+ debounceFunction: null
+ };
+ },
+ watch: {
+ watchValue: {
+ deep: true,
+ handler() {
+ this.processing = true, this.watchDebounce ? this.debounceFunction() : this.performRequest();
+ }
+ }
+ },
+ mounted() {
+ this.manual || this.$nextTick(this.performRequest);
+ },
+ created() {
+ this.debounceFunction = er(() => {
+ this.performRequest();
+ }, this.watchDebounce);
+ },
+ methods: {
+ performRequest() {
+ this.processing = true;
+ const e = {};
+ this.acceptHeader && (e.Accept = this.acceptHeader);
+ const t = {
+ url: this.url,
+ method: this.method,
+ headers: { ...e, ...this.headers }
+ };
+ Object.keys(this.request).length > 0 && (t.data = this.request), ne(t).then((r) => {
+ this.response = r.data, this.processing = false, this.$emit("success", r.data);
+ }).catch(() => {
+ this.processing = false, this.$emit("error");
+ }), this.poll && setTimeout(() => {
+ this.performRequest();
+ }, this.poll);
+ }
+ },
+ render() {
+ return this.$slots.default({
+ processing: this.processing,
+ response: this.response,
+ reload: this.performRequest
+ });
+ }
+}, ic = {
+ data() {
+ return {
+ isActivated: true
+ };
+ },
+ deactivated() {
+ this.isActivated = false;
+ },
+ activated() {
+ this.isActivated = true;
+ },
+ render() {
+ return this.$slots.default({
+ Dialog: en,
+ DialogPanel: tn,
+ isActivated: this.isActivated
+ });
+ }
+}, rs = {
+ __name: "OnClickOutside",
+ props: {
+ do: {
+ type: Function,
+ required: true
+ },
+ opened: {
+ type: Boolean,
+ required: true
+ },
+ closeOnEscape: {
+ type: Boolean,
+ required: false,
+ default: true
+ },
+ ignoreInnerTargets: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ setup(e) {
+ const t = e, r = vueExports.ref(null), n = vueExports.ref(null), i = vueExports.ref(null);
+ return vueExports.onMounted(() => {
+ r.value = (s) => {
+ n.value.children[0].contains(s.target) || t.ignoreInnerTargets && n.value.contains(s.target) || t.do();
+ }, document.addEventListener("click", r.value), document.addEventListener("touchstart", r.value), t.closeOnEscape && (i.value = (s) => {
+ t.opened && s.key === "Escape" && t.do();
+ }, document.addEventListener("keydown", i.value));
+ }), vueExports.onBeforeUnmount(() => {
+ document.removeEventListener("click", r.value), document.removeEventListener("touchstart", r.value), t.closeOnEscape && document.removeEventListener("keydown", i.value);
+ }), (s, a) => (vueExports.openBlock(), vueExports.createElementBlock("div", {
+ ref_key: "root",
+ ref: n
+ }, [
+ vueExports.renderSlot(s.$slots, "default")
+ ], 512));
+ }
+};
+function Q(e) {
+ if (e == null)
+ return window;
+ if (e.toString() !== "[object Window]") {
+ var t = e.ownerDocument;
+ return t && t.defaultView || window;
+ }
+ return e;
+}
+function Xe(e) {
+ var t = Q(e).Element;
+ return e instanceof t || e instanceof Element;
+}
+function re(e) {
+ var t = Q(e).HTMLElement;
+ return e instanceof t || e instanceof HTMLElement;
+}
+function sn(e) {
+ if (typeof ShadowRoot > "u")
+ return false;
+ var t = Q(e).ShadowRoot;
+ return e instanceof t || e instanceof ShadowRoot;
+}
+var ze = Math.max, Vt = Math.min, nt = Math.round;
+function xr() {
+ var e = navigator.userAgentData;
+ return e != null && e.brands && Array.isArray(e.brands) ? e.brands.map(function(t) {
+ return t.brand + "/" + t.version;
+ }).join(" ") : navigator.userAgent;
+}
+function ns() {
+ return !/^((?!chrome|android).)*safari/i.test(xr());
+}
+function it(e, t, r) {
+ t === void 0 && (t = false), r === void 0 && (r = false);
+ var n = e.getBoundingClientRect(), i = 1, s = 1;
+ t && re(e) && (i = e.offsetWidth > 0 && nt(n.width) / e.offsetWidth || 1, s = e.offsetHeight > 0 && nt(n.height) / e.offsetHeight || 1);
+ var a = Xe(e) ? Q(e) : window, o = a.visualViewport, l = !ns() && r, u = (n.left + (l && o ? o.offsetLeft : 0)) / i, c = (n.top + (l && o ? o.offsetTop : 0)) / s, v = n.width / i, g = n.height / s;
+ return {
+ width: v,
+ height: g,
+ top: c,
+ right: u + v,
+ bottom: c + g,
+ left: u,
+ x: u,
+ y: c
+ };
+}
+function an(e) {
+ var t = Q(e), r = t.pageXOffset, n = t.pageYOffset;
+ return {
+ scrollLeft: r,
+ scrollTop: n
+ };
+}
+function sc(e) {
+ return {
+ scrollLeft: e.scrollLeft,
+ scrollTop: e.scrollTop
+ };
+}
+function ac(e) {
+ return e === Q(e) || !re(e) ? an(e) : sc(e);
+}
+function pe(e) {
+ return e ? (e.nodeName || "").toLowerCase() : null;
+}
+function je(e) {
+ return ((Xe(e) ? e.ownerDocument : (
+ // $FlowFixMe[prop-missing]
+ e.document
+ )) || window.document).documentElement;
+}
+function on(e) {
+ return it(je(e)).left + an(e).scrollLeft;
+}
+function Ee(e) {
+ return Q(e).getComputedStyle(e);
+}
+function ln(e) {
+ var t = Ee(e), r = t.overflow, n = t.overflowX, i = t.overflowY;
+ return /auto|scroll|overlay|hidden/.test(r + i + n);
+}
+function oc(e) {
+ var t = e.getBoundingClientRect(), r = nt(t.width) / e.offsetWidth || 1, n = nt(t.height) / e.offsetHeight || 1;
+ return r !== 1 || n !== 1;
+}
+function lc(e, t, r) {
+ r === void 0 && (r = false);
+ var n = re(t), i = re(t) && oc(t), s = je(t), a = it(e, i, r), o = {
+ scrollLeft: 0,
+ scrollTop: 0
+ }, l = {
+ x: 0,
+ y: 0
+ };
+ return (n || !n && !r) && ((pe(t) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
+ ln(s)) && (o = ac(t)), re(t) ? (l = it(t, true), l.x += t.clientLeft, l.y += t.clientTop) : s && (l.x = on(s))), {
+ x: a.left + o.scrollLeft - l.x,
+ y: a.top + o.scrollTop - l.y,
+ width: a.width,
+ height: a.height
+ };
+}
+function is(e) {
+ var t = it(e), r = e.offsetWidth, n = e.offsetHeight;
+ return Math.abs(t.width - r) <= 1 && (r = t.width), Math.abs(t.height - n) <= 1 && (n = t.height), {
+ x: e.offsetLeft,
+ y: e.offsetTop,
+ width: r,
+ height: n
+ };
+}
+function tr(e) {
+ return pe(e) === "html" ? e : (
+ // this is a quicker (but less type safe) way to save quite some bytes from the bundle
+ // $FlowFixMe[incompatible-return]
+ // $FlowFixMe[prop-missing]
+ e.assignedSlot || // step into the shadow DOM of the parent of a slotted node
+ e.parentNode || // DOM Element detected
+ (sn(e) ? e.host : null) || // ShadowRoot detected
+ // $FlowFixMe[incompatible-call]: HTMLElement is a Node
+ je(e)
+ );
+}
+function ss(e) {
+ return ["html", "body", "#document"].indexOf(pe(e)) >= 0 ? e.ownerDocument.body : re(e) && ln(e) ? e : ss(tr(e));
+}
+function yt(e, t) {
+ var r;
+ t === void 0 && (t = []);
+ var n = ss(e), i = n === ((r = e.ownerDocument) == null ? void 0 : r.body), s = Q(n), a = i ? [s].concat(s.visualViewport || [], ln(n) ? n : []) : n, o = t.concat(a);
+ return i ? o : (
+ // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
+ o.concat(yt(tr(a)))
+ );
+}
+function uc(e) {
+ return ["table", "td", "th"].indexOf(pe(e)) >= 0;
+}
+function Bn(e) {
+ return !re(e) || // https://github.com/popperjs/popper-core/issues/837
+ Ee(e).position === "fixed" ? null : e.offsetParent;
+}
+function cc(e) {
+ var t = /firefox/i.test(xr()), r = /Trident/i.test(xr());
+ if (r && re(e)) {
+ var n = Ee(e);
+ if (n.position === "fixed")
+ return null;
+ }
+ var i = tr(e);
+ for (sn(i) && (i = i.host); re(i) && ["html", "body"].indexOf(pe(i)) < 0; ) {
+ var s = Ee(i);
+ if (s.transform !== "none" || s.perspective !== "none" || s.contain === "paint" || ["transform", "perspective"].indexOf(s.willChange) !== -1 || t && s.willChange === "filter" || t && s.filter && s.filter !== "none")
+ return i;
+ i = i.parentNode;
+ }
+ return null;
+}
+function rr(e) {
+ for (var t = Q(e), r = Bn(e); r && uc(r) && Ee(r).position === "static"; )
+ r = Bn(r);
+ return r && (pe(r) === "html" || pe(r) === "body" && Ee(r).position === "static") ? t : r || cc(e) || t;
+}
+var oe = "top", he = "bottom", Re = "right", we = "left", un = "auto", nr = [oe, he, Re, we], st = "start", Ot = "end", dc = "clippingParents", as = "viewport", mt = "popper", fc = "reference", jn = /* @__PURE__ */ nr.reduce(function(e, t) {
+ return e.concat([t + "-" + st, t + "-" + Ot]);
+}, []), pc = /* @__PURE__ */ [].concat(nr, [un]).reduce(function(e, t) {
+ return e.concat([t, t + "-" + st, t + "-" + Ot]);
+}, []), hc = "beforeRead", mc = "read", vc = "afterRead", gc = "beforeMain", yc = "main", bc = "afterMain", wc = "beforeWrite", Sc = "write", Oc = "afterWrite", $c = [hc, mc, vc, gc, yc, bc, wc, Sc, Oc];
+function Ec(e) {
+ var t = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Set(), n = [];
+ e.forEach(function(s) {
+ t.set(s.name, s);
+ });
+ function i(s) {
+ r.add(s.name);
+ var a = [].concat(s.requires || [], s.requiresIfExists || []);
+ a.forEach(function(o) {
+ if (!r.has(o)) {
+ var l = t.get(o);
+ l && i(l);
+ }
+ }), n.push(s);
+ }
+ return e.forEach(function(s) {
+ r.has(s.name) || i(s);
+ }), n;
+}
+function Tc(e) {
+ var t = Ec(e);
+ return $c.reduce(function(r, n) {
+ return r.concat(t.filter(function(i) {
+ return i.phase === n;
+ }));
+ }, []);
+}
+function xc(e) {
+ var t;
+ return function() {
+ return t || (t = new Promise(function(r) {
+ Promise.resolve().then(function() {
+ t = void 0, r(e());
+ });
+ })), t;
+ };
+}
+function _c(e) {
+ var t = e.reduce(function(r, n) {
+ var i = r[n.name];
+ return r[n.name] = i ? Object.assign({}, i, n, {
+ options: Object.assign({}, i.options, n.options),
+ data: Object.assign({}, i.data, n.data)
+ }) : n, r;
+ }, {});
+ return Object.keys(t).map(function(r) {
+ return t[r];
+ });
+}
+function Ic(e, t) {
+ var r = Q(e), n = je(e), i = r.visualViewport, s = n.clientWidth, a = n.clientHeight, o = 0, l = 0;
+ if (i) {
+ s = i.width, a = i.height;
+ var u = ns();
+ (u || !u && t === "fixed") && (o = i.offsetLeft, l = i.offsetTop);
+ }
+ return {
+ width: s,
+ height: a,
+ x: o + on(e),
+ y: l
+ };
+}
+function Ac(e) {
+ var t, r = je(e), n = an(e), i = (t = e.ownerDocument) == null ? void 0 : t.body, s = ze(r.scrollWidth, r.clientWidth, i ? i.scrollWidth : 0, i ? i.clientWidth : 0), a = ze(r.scrollHeight, r.clientHeight, i ? i.scrollHeight : 0, i ? i.clientHeight : 0), o = -n.scrollLeft + on(e), l = -n.scrollTop;
+ return Ee(i || r).direction === "rtl" && (o += ze(r.clientWidth, i ? i.clientWidth : 0) - s), {
+ width: s,
+ height: a,
+ x: o,
+ y: l
+ };
+}
+function Pc(e, t) {
+ var r = t.getRootNode && t.getRootNode();
+ if (e.contains(t))
+ return true;
+ if (r && sn(r)) {
+ var n = t;
+ do {
+ if (n && e.isSameNode(n))
+ return true;
+ n = n.parentNode || n.host;
+ } while (n);
+ }
+ return false;
+}
+function _r(e) {
+ return Object.assign({}, e, {
+ left: e.x,
+ top: e.y,
+ right: e.x + e.width,
+ bottom: e.y + e.height
+ });
+}
+function qc(e, t) {
+ var r = it(e, false, t === "fixed");
+ return r.top = r.top + e.clientTop, r.left = r.left + e.clientLeft, r.bottom = r.top + e.clientHeight, r.right = r.left + e.clientWidth, r.width = e.clientWidth, r.height = e.clientHeight, r.x = r.left, r.y = r.top, r;
+}
+function Mn(e, t, r) {
+ return t === as ? _r(Ic(e, r)) : Xe(t) ? qc(t, r) : _r(Ac(je(e)));
+}
+function Cc(e) {
+ var t = yt(tr(e)), r = ["absolute", "fixed"].indexOf(Ee(e).position) >= 0, n = r && re(e) ? rr(e) : e;
+ return Xe(n) ? t.filter(function(i) {
+ return Xe(i) && Pc(i, n) && pe(i) !== "body";
+ }) : [];
+}
+function Fc(e, t, r, n) {
+ var i = t === "clippingParents" ? Cc(e) : [].concat(t), s = [].concat(i, [r]), a = s[0], o = s.reduce(function(l, u) {
+ var c = Mn(e, u, n);
+ return l.top = ze(c.top, l.top), l.right = Vt(c.right, l.right), l.bottom = Vt(c.bottom, l.bottom), l.left = ze(c.left, l.left), l;
+ }, Mn(e, a, n));
+ return o.width = o.right - o.left, o.height = o.bottom - o.top, o.x = o.left, o.y = o.top, o;
+}
+function Fe(e) {
+ return e.split("-")[0];
+}
+function at(e) {
+ return e.split("-")[1];
+}
+function os(e) {
+ return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y";
+}
+function ls(e) {
+ var t = e.reference, r = e.element, n = e.placement, i = n ? Fe(n) : null, s = n ? at(n) : null, a = t.x + t.width / 2 - r.width / 2, o = t.y + t.height / 2 - r.height / 2, l;
+ switch (i) {
+ case oe:
+ l = {
+ x: a,
+ y: t.y - r.height
+ };
+ break;
+ case he:
+ l = {
+ x: a,
+ y: t.y + t.height
+ };
+ break;
+ case Re:
+ l = {
+ x: t.x + t.width,
+ y: o
+ };
+ break;
+ case we:
+ l = {
+ x: t.x - r.width,
+ y: o
+ };
+ break;
+ default:
+ l = {
+ x: t.x,
+ y: t.y
+ };
+ }
+ var u = i ? os(i) : null;
+ if (u != null) {
+ var c = u === "y" ? "height" : "width";
+ switch (s) {
+ case st:
+ l[u] = l[u] - (t[c] / 2 - r[c] / 2);
+ break;
+ case Ot:
+ l[u] = l[u] + (t[c] / 2 - r[c] / 2);
+ break;
+ }
+ }
+ return l;
+}
+function us() {
+ return {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
+ };
+}
+function kc(e) {
+ return Object.assign({}, us(), e);
+}
+function Lc(e, t) {
+ return t.reduce(function(r, n) {
+ return r[n] = e, r;
+ }, {});
+}
+function cn(e, t) {
+ t === void 0 && (t = {});
+ var r = t, n = r.placement, i = n === void 0 ? e.placement : n, s = r.strategy, a = s === void 0 ? e.strategy : s, o = r.boundary, l = o === void 0 ? dc : o, u = r.rootBoundary, c = u === void 0 ? as : u, v = r.elementContext, g = v === void 0 ? mt : v, f = r.altBoundary, h = f === void 0 ? false : f, m = r.padding, d = m === void 0 ? 0 : m, b = kc(typeof d != "number" ? d : Lc(d, nr)), O = g === mt ? fc : mt, A = e.rects.popper, S = e.elements[h ? O : g], $ = Fc(Xe(S) ? S : S.contextElement || je(e.elements.popper), l, c, a), w = it(e.elements.reference), _ = ls({
+ reference: w,
+ element: A,
+ strategy: "absolute",
+ placement: i
+ }), q = _r(Object.assign({}, A, _)), P = g === mt ? q : w, k = {
+ top: $.top - P.top + b.top,
+ bottom: P.bottom - $.bottom + b.bottom,
+ left: $.left - P.left + b.left,
+ right: P.right - $.right + b.right
+ }, j = e.modifiersData.offset;
+ if (g === mt && j) {
+ var H = j[i];
+ Object.keys(k).forEach(function(F) {
+ var E = [Re, he].indexOf(F) >= 0 ? 1 : -1, T = [oe, he].indexOf(F) >= 0 ? "y" : "x";
+ k[F] += H[T] * E;
+ });
+ }
+ return k;
+}
+var Dn = {
+ placement: "bottom",
+ modifiers: [],
+ strategy: "absolute"
+};
+function Nn() {
+ for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++)
+ t[r] = arguments[r];
+ return !t.some(function(n) {
+ return !(n && typeof n.getBoundingClientRect == "function");
+ });
+}
+function Rc(e) {
+ e === void 0 && (e = {});
+ var t = e, r = t.defaultModifiers, n = r === void 0 ? [] : r, i = t.defaultOptions, s = i === void 0 ? Dn : i;
+ return function(o, l, u) {
+ u === void 0 && (u = s);
+ var c = {
+ placement: "bottom",
+ orderedModifiers: [],
+ options: Object.assign({}, Dn, s),
+ modifiersData: {},
+ elements: {
+ reference: o,
+ popper: l
+ },
+ attributes: {},
+ styles: {}
+ }, v = [], g = false, f = {
+ state: c,
+ setOptions: function(b) {
+ var O = typeof b == "function" ? b(c.options) : b;
+ m(), c.options = Object.assign({}, s, c.options, O), c.scrollParents = {
+ reference: Xe(o) ? yt(o) : o.contextElement ? yt(o.contextElement) : [],
+ popper: yt(l)
+ };
+ var A = Tc(_c([].concat(n, c.options.modifiers)));
+ return c.orderedModifiers = A.filter(function(S) {
+ return S.enabled;
+ }), h(), f.update();
+ },
+ // Sync update – it will always be executed, even if not necessary. This
+ // is useful for low frequency updates where sync behavior simplifies the
+ // logic.
+ // For high frequency updates (e.g. `resize` and `scroll` events), always
+ // prefer the async Popper#update method
+ forceUpdate: function() {
+ if (!g) {
+ var b = c.elements, O = b.reference, A = b.popper;
+ if (Nn(O, A)) {
+ c.rects = {
+ reference: lc(O, rr(A), c.options.strategy === "fixed"),
+ popper: is(A)
+ }, c.reset = false, c.placement = c.options.placement, c.orderedModifiers.forEach(function(k) {
+ return c.modifiersData[k.name] = Object.assign({}, k.data);
+ });
+ for (var S = 0; S < c.orderedModifiers.length; S++) {
+ if (c.reset === true) {
+ c.reset = false, S = -1;
+ continue;
+ }
+ var $ = c.orderedModifiers[S], w = $.fn, _ = $.options, q = _ === void 0 ? {} : _, P = $.name;
+ typeof w == "function" && (c = w({
+ state: c,
+ options: q,
+ name: P,
+ instance: f
+ }) || c);
+ }
+ }
+ }
+ },
+ // Async and optimistically optimized update – it will not be executed if
+ // not necessary (debounced to run at most once-per-tick)
+ update: xc(function() {
+ return new Promise(function(d) {
+ f.forceUpdate(), d(c);
+ });
+ }),
+ destroy: function() {
+ m(), g = true;
+ }
+ };
+ if (!Nn(o, l))
+ return f;
+ f.setOptions(u).then(function(d) {
+ !g && u.onFirstUpdate && u.onFirstUpdate(d);
+ });
+ function h() {
+ c.orderedModifiers.forEach(function(d) {
+ var b = d.name, O = d.options, A = O === void 0 ? {} : O, S = d.effect;
+ if (typeof S == "function") {
+ var $ = S({
+ state: c,
+ name: b,
+ instance: f,
+ options: A
+ }), w = function() {
+ };
+ v.push($ || w);
+ }
+ });
+ }
+ function m() {
+ v.forEach(function(d) {
+ return d();
+ }), v = [];
+ }
+ return f;
+ };
+}
+var Ft = {
+ passive: true
+};
+function Bc(e) {
+ var t = e.state, r = e.instance, n = e.options, i = n.scroll, s = i === void 0 ? true : i, a = n.resize, o = a === void 0 ? true : a, l = Q(t.elements.popper), u = [].concat(t.scrollParents.reference, t.scrollParents.popper);
+ return s && u.forEach(function(c) {
+ c.addEventListener("scroll", r.update, Ft);
+ }), o && l.addEventListener("resize", r.update, Ft), function() {
+ s && u.forEach(function(c) {
+ c.removeEventListener("scroll", r.update, Ft);
+ }), o && l.removeEventListener("resize", r.update, Ft);
+ };
+}
+const jc = {
+ name: "eventListeners",
+ enabled: true,
+ phase: "write",
+ fn: function() {
+ },
+ effect: Bc,
+ data: {}
+};
+function Mc(e) {
+ var t = e.state, r = e.name;
+ t.modifiersData[r] = ls({
+ reference: t.rects.reference,
+ element: t.rects.popper,
+ strategy: "absolute",
+ placement: t.placement
+ });
+}
+const Dc = {
+ name: "popperOffsets",
+ enabled: true,
+ phase: "read",
+ fn: Mc,
+ data: {}
+};
+var Nc = {
+ top: "auto",
+ right: "auto",
+ bottom: "auto",
+ left: "auto"
+};
+function Vc(e, t) {
+ var r = e.x, n = e.y, i = t.devicePixelRatio || 1;
+ return {
+ x: nt(r * i) / i || 0,
+ y: nt(n * i) / i || 0
+ };
+}
+function Vn(e) {
+ var t, r = e.popper, n = e.popperRect, i = e.placement, s = e.variation, a = e.offsets, o = e.position, l = e.gpuAcceleration, u = e.adaptive, c = e.roundOffsets, v = e.isFixed, g = a.x, f = g === void 0 ? 0 : g, h = a.y, m = h === void 0 ? 0 : h, d = typeof c == "function" ? c({
+ x: f,
+ y: m
+ }) : {
+ x: f,
+ y: m
+ };
+ f = d.x, m = d.y;
+ var b = a.hasOwnProperty("x"), O = a.hasOwnProperty("y"), A = we, S = oe, $ = window;
+ if (u) {
+ var w = rr(r), _ = "clientHeight", q = "clientWidth";
+ if (w === Q(r) && (w = je(r), Ee(w).position !== "static" && o === "absolute" && (_ = "scrollHeight", q = "scrollWidth")), w = w, i === oe || (i === we || i === Re) && s === Ot) {
+ S = he;
+ var P = v && w === $ && $.visualViewport ? $.visualViewport.height : (
+ // $FlowFixMe[prop-missing]
+ w[_]
+ );
+ m -= P - n.height, m *= l ? 1 : -1;
+ }
+ if (i === we || (i === oe || i === he) && s === Ot) {
+ A = Re;
+ var k = v && w === $ && $.visualViewport ? $.visualViewport.width : (
+ // $FlowFixMe[prop-missing]
+ w[q]
+ );
+ f -= k - n.width, f *= l ? 1 : -1;
+ }
+ }
+ var j = Object.assign({
+ position: o
+ }, u && Nc), H = c === true ? Vc({
+ x: f,
+ y: m
+ }, Q(r)) : {
+ x: f,
+ y: m
+ };
+ if (f = H.x, m = H.y, l) {
+ var F;
+ return Object.assign({}, j, (F = {}, F[S] = O ? "0" : "", F[A] = b ? "0" : "", F.transform = ($.devicePixelRatio || 1) <= 1 ? "translate(" + f + "px, " + m + "px)" : "translate3d(" + f + "px, " + m + "px, 0)", F));
+ }
+ return Object.assign({}, j, (t = {}, t[S] = O ? m + "px" : "", t[A] = b ? f + "px" : "", t.transform = "", t));
+}
+function Hc(e) {
+ var t = e.state, r = e.options, n = r.gpuAcceleration, i = n === void 0 ? true : n, s = r.adaptive, a = s === void 0 ? true : s, o = r.roundOffsets, l = o === void 0 ? true : o, u = {
+ placement: Fe(t.placement),
+ variation: at(t.placement),
+ popper: t.elements.popper,
+ popperRect: t.rects.popper,
+ gpuAcceleration: i,
+ isFixed: t.options.strategy === "fixed"
+ };
+ t.modifiersData.popperOffsets != null && (t.styles.popper = Object.assign({}, t.styles.popper, Vn(Object.assign({}, u, {
+ offsets: t.modifiersData.popperOffsets,
+ position: t.options.strategy,
+ adaptive: a,
+ roundOffsets: l
+ })))), t.modifiersData.arrow != null && (t.styles.arrow = Object.assign({}, t.styles.arrow, Vn(Object.assign({}, u, {
+ offsets: t.modifiersData.arrow,
+ position: "absolute",
+ adaptive: false,
+ roundOffsets: l
+ })))), t.attributes.popper = Object.assign({}, t.attributes.popper, {
+ "data-popper-placement": t.placement
+ });
+}
+const Uc = {
+ name: "computeStyles",
+ enabled: true,
+ phase: "beforeWrite",
+ fn: Hc,
+ data: {}
+};
+function Wc(e) {
+ var t = e.state;
+ Object.keys(t.elements).forEach(function(r) {
+ var n = t.styles[r] || {}, i = t.attributes[r] || {}, s = t.elements[r];
+ !re(s) || !pe(s) || (Object.assign(s.style, n), Object.keys(i).forEach(function(a) {
+ var o = i[a];
+ o === false ? s.removeAttribute(a) : s.setAttribute(a, o === true ? "" : o);
+ }));
+ });
+}
+function zc(e) {
+ var t = e.state, r = {
+ popper: {
+ position: t.options.strategy,
+ left: "0",
+ top: "0",
+ margin: "0"
+ },
+ arrow: {
+ position: "absolute"
+ },
+ reference: {}
+ };
+ return Object.assign(t.elements.popper.style, r.popper), t.styles = r, t.elements.arrow && Object.assign(t.elements.arrow.style, r.arrow), function() {
+ Object.keys(t.elements).forEach(function(n) {
+ var i = t.elements[n], s = t.attributes[n] || {}, a = Object.keys(t.styles.hasOwnProperty(n) ? t.styles[n] : r[n]), o = a.reduce(function(l, u) {
+ return l[u] = "", l;
+ }, {});
+ !re(i) || !pe(i) || (Object.assign(i.style, o), Object.keys(s).forEach(function(l) {
+ i.removeAttribute(l);
+ }));
+ });
+ };
+}
+const Gc = {
+ name: "applyStyles",
+ enabled: true,
+ phase: "write",
+ fn: Wc,
+ effect: zc,
+ requires: ["computeStyles"]
+};
+var Xc = [jc, Dc, Uc, Gc], Kc = /* @__PURE__ */ Rc({
+ defaultModifiers: Xc
+});
+function Jc(e) {
+ return e === "x" ? "y" : "x";
+}
+function Rt(e, t, r) {
+ return ze(e, Vt(t, r));
+}
+function Qc(e, t, r) {
+ var n = Rt(e, t, r);
+ return n > r ? r : n;
+}
+function Yc(e) {
+ var t = e.state, r = e.options, n = e.name, i = r.mainAxis, s = i === void 0 ? true : i, a = r.altAxis, o = a === void 0 ? false : a, l = r.boundary, u = r.rootBoundary, c = r.altBoundary, v = r.padding, g = r.tether, f = g === void 0 ? true : g, h = r.tetherOffset, m = h === void 0 ? 0 : h, d = cn(t, {
+ boundary: l,
+ rootBoundary: u,
+ padding: v,
+ altBoundary: c
+ }), b = Fe(t.placement), O = at(t.placement), A = !O, S = os(b), $ = Jc(S), w = t.modifiersData.popperOffsets, _ = t.rects.reference, q = t.rects.popper, P = typeof m == "function" ? m(Object.assign({}, t.rects, {
+ placement: t.placement
+ })) : m, k = typeof P == "number" ? {
+ mainAxis: P,
+ altAxis: P
+ } : Object.assign({
+ mainAxis: 0,
+ altAxis: 0
+ }, P), j = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, H = {
+ x: 0,
+ y: 0
+ };
+ if (w) {
+ if (s) {
+ var F, E = S === "y" ? oe : we, T = S === "y" ? he : Re, I = S === "y" ? "height" : "width", C = w[S], ge = C + d[E], U = C - d[T], ct = f ? -q[I] / 2 : 0, It = O === st ? _[I] : q[I], Ie = O === st ? -q[I] : -_[I], Ze = t.elements.arrow, Ae = f && Ze ? is(Ze) : {
+ width: 0,
+ height: 0
+ }, Pe = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : us(), dt = Pe[E], At = Pe[T], Me = Rt(0, _[I], Ae[I]), sr = A ? _[I] / 2 - ct - Me - dt - k.mainAxis : It - Me - dt - k.mainAxis, Ss = A ? -_[I] / 2 + ct + Me + At + k.mainAxis : Ie + Me + At + k.mainAxis, ar = t.elements.arrow && rr(t.elements.arrow), Os = ar ? S === "y" ? ar.clientTop || 0 : ar.clientLeft || 0 : 0, hn = (F = j == null ? void 0 : j[S]) != null ? F : 0, $s = C + sr - hn - Os, Es = C + Ss - hn, mn = Rt(f ? Vt(ge, $s) : ge, C, f ? ze(U, Es) : U);
+ w[S] = mn, H[S] = mn - C;
+ }
+ if (o) {
+ var vn, Ts = S === "x" ? oe : we, xs = S === "x" ? he : Re, De = w[$], Pt = $ === "y" ? "height" : "width", gn = De + d[Ts], yn = De - d[xs], or = [oe, we].indexOf(b) !== -1, bn = (vn = j == null ? void 0 : j[$]) != null ? vn : 0, wn = or ? gn : De - _[Pt] - q[Pt] - bn + k.altAxis, Sn = or ? De + _[Pt] + q[Pt] - bn - k.altAxis : yn, On = f && or ? Qc(wn, De, Sn) : Rt(f ? wn : gn, De, f ? Sn : yn);
+ w[$] = On, H[$] = On - De;
+ }
+ t.modifiersData[n] = H;
+ }
+}
+const Zc = {
+ name: "preventOverflow",
+ enabled: true,
+ phase: "main",
+ fn: Yc,
+ requiresIfExists: ["offset"]
+};
+var ed = {
+ left: "right",
+ right: "left",
+ bottom: "top",
+ top: "bottom"
+};
+function Bt(e) {
+ return e.replace(/left|right|bottom|top/g, function(t) {
+ return ed[t];
+ });
+}
+var td = {
+ start: "end",
+ end: "start"
+};
+function Hn(e) {
+ return e.replace(/start|end/g, function(t) {
+ return td[t];
+ });
+}
+function rd(e, t) {
+ t === void 0 && (t = {});
+ var r = t, n = r.placement, i = r.boundary, s = r.rootBoundary, a = r.padding, o = r.flipVariations, l = r.allowedAutoPlacements, u = l === void 0 ? pc : l, c = at(n), v = c ? o ? jn : jn.filter(function(h) {
+ return at(h) === c;
+ }) : nr, g = v.filter(function(h) {
+ return u.indexOf(h) >= 0;
+ });
+ g.length === 0 && (g = v);
+ var f = g.reduce(function(h, m) {
+ return h[m] = cn(e, {
+ placement: m,
+ boundary: i,
+ rootBoundary: s,
+ padding: a
+ })[Fe(m)], h;
+ }, {});
+ return Object.keys(f).sort(function(h, m) {
+ return f[h] - f[m];
+ });
+}
+function nd(e) {
+ if (Fe(e) === un)
+ return [];
+ var t = Bt(e);
+ return [Hn(e), t, Hn(t)];
+}
+function id(e) {
+ var t = e.state, r = e.options, n = e.name;
+ if (!t.modifiersData[n]._skip) {
+ for (var i = r.mainAxis, s = i === void 0 ? true : i, a = r.altAxis, o = a === void 0 ? true : a, l = r.fallbackPlacements, u = r.padding, c = r.boundary, v = r.rootBoundary, g = r.altBoundary, f = r.flipVariations, h = f === void 0 ? true : f, m = r.allowedAutoPlacements, d = t.options.placement, b = Fe(d), O = b === d, A = l || (O || !h ? [Bt(d)] : nd(d)), S = [d].concat(A).reduce(function(Ae, Pe) {
+ return Ae.concat(Fe(Pe) === un ? rd(t, {
+ placement: Pe,
+ boundary: c,
+ rootBoundary: v,
+ padding: u,
+ flipVariations: h,
+ allowedAutoPlacements: m
+ }) : Pe);
+ }, []), $ = t.rects.reference, w = t.rects.popper, _ = /* @__PURE__ */ new Map(), q = true, P = S[0], k = 0; k < S.length; k++) {
+ var j = S[k], H = Fe(j), F = at(j) === st, E = [oe, he].indexOf(H) >= 0, T = E ? "width" : "height", I = cn(t, {
+ placement: j,
+ boundary: c,
+ rootBoundary: v,
+ altBoundary: g,
+ padding: u
+ }), C = E ? F ? Re : we : F ? he : oe;
+ $[T] > w[T] && (C = Bt(C));
+ var ge = Bt(C), U = [];
+ if (s && U.push(I[H] <= 0), o && U.push(I[C] <= 0, I[ge] <= 0), U.every(function(Ae) {
+ return Ae;
+ })) {
+ P = j, q = false;
+ break;
+ }
+ _.set(j, U);
+ }
+ if (q)
+ for (var ct = h ? 3 : 1, It = function(Pe) {
+ var dt = S.find(function(At) {
+ var Me = _.get(At);
+ if (Me)
+ return Me.slice(0, Pe).every(function(sr) {
+ return sr;
+ });
+ });
+ if (dt)
+ return P = dt, "break";
+ }, Ie = ct; Ie > 0; Ie--) {
+ var Ze = It(Ie);
+ if (Ze === "break")
+ break;
+ }
+ t.placement !== P && (t.modifiersData[n]._skip = true, t.placement = P, t.reset = true);
+ }
+}
+const sd = {
+ name: "flip",
+ enabled: true,
+ phase: "main",
+ fn: id,
+ requiresIfExists: ["offset"],
+ data: {
+ _skip: false
+ }
+}, _e = (e, t) => {
+ const r = e.__vccOpts || e;
+ for (const [n, i] of t)
+ r[n] = i;
+ return r;
+}, ad = {
+ components: {
+ OnClickOutside: rs
+ },
+ props: {
+ spladeId: {
+ type: String,
+ required: true
+ },
+ placement: {
+ type: String,
+ default: "bottom-start",
+ required: false
+ },
+ strategy: {
+ type: String,
+ default: "absolute",
+ required: false
+ },
+ inline: {
+ type: Boolean,
+ default: false,
+ required: false
+ },
+ disabled: {
+ type: Boolean,
+ default: false,
+ required: false
+ },
+ teleport: {
+ type: Boolean,
+ default: false,
+ required: false
+ },
+ closeOnClick: {
+ type: Boolean,
+ default: false,
+ required: false
+ }
+ },
+ data() {
+ return {
+ opened: false,
+ popper: null
+ };
+ },
+ computed: {
+ buttonStyle() {
+ return this.inline ? { display: "inline" } : {};
+ },
+ wrapperStyle() {
+ const e = { position: "relative" };
+ return this.inline && (e.display = "inline"), e;
+ }
+ },
+ watch: {
+ opened() {
+ this.popper.update();
+ }
+ },
+ mounted: async function() {
+ this.teleport && await vueExports.nextTick();
+ const e = this.teleport ? document.querySelector(`div[data-splade-dropdown-id="${this.spladeId}"]`) : this.$refs.tooltip.children[0];
+ this.popper = Kc(this.$refs.button, e, {
+ placement: this.placement,
+ modifiers: [sd, Zc],
+ strategy: this.strategy
+ });
+ },
+ methods: {
+ toggle() {
+ this.opened = !this.opened;
+ },
+ hide() {
+ this.opened = false;
+ }
+ }
+}, od = { ref: "tooltip" };
+function ld(e, t, r, n, i, s) {
+ const a = vueExports.resolveComponent("OnClickOutside");
+ return vueExports.openBlock(), vueExports.createBlock(a, {
+ style: vueExports.normalizeStyle(s.wrapperStyle),
+ do: s.hide,
+ opened: i.opened,
+ "ignore-inner-targets": !r.closeOnClick
+ }, {
+ default: vueExports.withCtx(() => [
+ vueExports.createElementVNode("div", {
+ ref: "button",
+ style: vueExports.normalizeStyle(s.buttonStyle)
+ }, [
+ vueExports.renderSlot(e.$slots, "button", {
+ toggle: s.toggle,
+ disabled: r.disabled
+ })
+ ], 4),
+ vueExports.createElementVNode("div", od, [
+ vueExports.renderSlot(e.$slots, "default", {
+ hide: s.hide,
+ opened: i.opened
+ })
+ ], 512)
+ ]),
+ _: 3
+ }, 8, ["style", "do", "opened", "ignore-inner-targets"]);
+}
+const ud = /* @__PURE__ */ _e(ad, [["render", ld]]), cd = {
+ __name: "DynamicHtml",
+ props: {
+ keepAliveKey: {
+ type: String,
+ required: true
+ },
+ name: {
+ type: String,
+ required: true
+ },
+ passthrough: {
+ type: Object,
+ required: false,
+ default() {
+ return {};
+ }
+ }
+ },
+ setup(e) {
+ const t = vueExports.inject("$splade") || {}, r = vueExports.inject("$spladeOptions") || {};
+ return (n, i) => vueExports.unref(t).isSsr ? (vueExports.openBlock(), vueExports.createBlock(ue, {
+ key: e.keepAliveKey,
+ html: vueExports.unref(t).htmlForDynamicComponent(e.name),
+ passthrough: e.passthrough
+ }, null, 8, ["html", "passthrough"])) : (vueExports.openBlock(), vueExports.createBlock(vueExports.KeepAlive, {
+ key: 0,
+ max: vueExports.unref(r).max_keep_alive
+ }, [
+ (vueExports.openBlock(), vueExports.createBlock(ue, {
+ key: e.keepAliveKey,
+ html: vueExports.unref(t).htmlForDynamicComponent(e.name),
+ passthrough: e.passthrough
+ }, null, 8, ["html", "passthrough"]))
+ ], 1032, ["max"]));
+ }
+};
+function cs(e) {
+ return e && e.length ? e[0] : void 0;
+}
+const dd = {
+ inject: ["stack"],
+ computed: {
+ values() {
+ return p.validationErrors(this.stack);
+ }
+ },
+ render() {
+ const e = this;
+ return this.$slots.default({
+ has(t) {
+ return W(e.values, t);
+ },
+ first(t) {
+ return cs(e.values[t] || []);
+ },
+ all: { ...this.values },
+ ...this.values
+ });
+ }
+}, fd = {
+ inject: ["stack"],
+ props: {
+ private: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ channel: {
+ type: String,
+ required: true
+ },
+ listeners: {
+ type: Array,
+ required: true
+ },
+ preserveScroll: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ emits: ["subscribed", "event"],
+ data() {
+ return {
+ subscribed: false,
+ subscription: null,
+ subscriptions: [],
+ events: [],
+ pendingVisit: null,
+ pendingRefresh: false
+ };
+ },
+ computed: {
+ currentStack() {
+ return p.currentStack.value;
+ }
+ },
+ watch: {
+ currentStack() {
+ this.handlePendingVisit(), this.handlePendingRefresh();
+ },
+ pendingVisit() {
+ this.handlePendingVisit();
+ },
+ pendingRefresh() {
+ this.handlePendingRefresh();
+ }
+ },
+ beforeUnmount() {
+ this.subscription && (window.Echo.leave(this.subscription.subscription.name), this.subscription = null, this.subscriptions = []);
+ },
+ mounted() {
+ this.subscription = this.private ? window.Echo.private(this.channel) : window.Echo.channel(this.channel), this.subscription ? this.bindListeners() : console.error("[Splade Event component] Unable to subscribe to channel: " + this.channel);
+ },
+ methods: {
+ handlePendingVisit() {
+ this.pendingVisit && p.currentStack.value === this.stack && (p.visit(this.pendingVisit), this.pendingVisit = null);
+ },
+ handlePendingRefresh() {
+ this.pendingRefresh && p.currentStack.value === this.stack && (p.refresh(this.pendingRefresh.preserveScroll || this.preserveScroll), this.pendingRefresh = false);
+ },
+ bindListeners() {
+ this.subscription.on("pusher:subscription_succeeded", () => {
+ this.subscribed = true, this.$emit("subscribed");
+ }), this.listeners.forEach((e) => {
+ const t = this.subscription.listen(e, (r) => {
+ this.$emit("event", { name: e, data: r });
+ const n = "splade.preserveScroll", i = "splade.redirect", s = "splade.refresh", a = "splade.toast";
+ let o = null, l = false, u = false, c = [];
+ te(r, (v) => {
+ J(v) && (i in v && (o = v[i]), n in v && (l = v[n]), s in v && (u = v[s]), a in v && c.push(v));
+ }), o ? this.pendingVisit = o : u ? this.pendingRefresh = { preserveScroll: l } : this.events.push({ name: e, data: r }), c.length > 0 && c.forEach((v) => {
+ p.pushToast(v);
+ }), this.$root.$emit(`event.${e}`, r);
+ });
+ this.subscriptions.push(t);
+ });
+ },
+ unsubscribe() {
+ this.subscription && (window.Echo.leave(this.subscription.subscription.name), this.subscription = null, this.subscriptions = []);
+ }
+ },
+ render() {
+ return this.$slots.default({
+ subscribed: this.subscribed,
+ events: this.events
+ });
+ }
+};
+function pd() {
+ this.__data__ = new Te(), this.size = 0;
+}
+function hd(e) {
+ var t = this.__data__, r = t.delete(e);
+ return this.size = t.size, r;
+}
+function md(e) {
+ return this.__data__.get(e);
+}
+function vd(e) {
+ return this.__data__.has(e);
+}
+var gd = 200;
+function yd(e, t) {
+ var r = this.__data__;
+ if (r instanceof Te) {
+ var n = r.__data__;
+ if (!wt || n.length < gd - 1)
+ return n.push([e, t]), this.size = ++r.size, this;
+ r = this.__data__ = new xe(n);
+ }
+ return r.set(e, t), this.size = r.size, this;
+}
+function Se(e) {
+ var t = this.__data__ = new Te(e);
+ this.size = t.size;
+}
+Se.prototype.clear = pd;
+Se.prototype.delete = hd;
+Se.prototype.get = md;
+Se.prototype.has = vd;
+Se.prototype.set = yd;
+var bd = "__lodash_hash_undefined__";
+function wd(e) {
+ return this.__data__.set(e, bd), this;
+}
+function Sd(e) {
+ return this.__data__.has(e);
+}
+function Ht(e) {
+ var t = -1, r = e == null ? 0 : e.length;
+ for (this.__data__ = new xe(); ++t < r; )
+ this.add(e[t]);
+}
+Ht.prototype.add = Ht.prototype.push = wd;
+Ht.prototype.has = Sd;
+function Od(e, t) {
+ for (var r = -1, n = e == null ? 0 : e.length; ++r < n; )
+ if (t(e[r], r, e))
+ return true;
+ return false;
+}
+function $d(e, t) {
+ return e.has(t);
+}
+var Ed = 1, Td = 2;
+function ds(e, t, r, n, i, s) {
+ var a = r & Ed, o = e.length, l = t.length;
+ if (o != l && !(a && l > o))
+ return false;
+ var u = s.get(e), c = s.get(t);
+ if (u && c)
+ return u == t && c == e;
+ var v = -1, g = true, f = r & Td ? new Ht() : void 0;
+ for (s.set(e, t), s.set(t, e); ++v < o; ) {
+ var h = e[v], m = t[v];
+ if (n)
+ var d = a ? n(m, h, v, t, e, s) : n(h, m, v, e, t, s);
+ if (d !== void 0) {
+ if (d)
+ continue;
+ g = false;
+ break;
+ }
+ if (f) {
+ if (!Od(t, function(b, O) {
+ if (!$d(f, O) && (h === b || i(h, b, r, n, s)))
+ return f.push(O);
+ })) {
+ g = false;
+ break;
+ }
+ } else if (!(h === m || i(h, m, r, n, s))) {
+ g = false;
+ break;
+ }
+ }
+ return s.delete(e), s.delete(t), g;
+}
+var xd = ve.Uint8Array;
+const Un = xd;
+function _d(e) {
+ var t = -1, r = Array(e.size);
+ return e.forEach(function(n, i) {
+ r[++t] = [i, n];
+ }), r;
+}
+function Id(e) {
+ var t = -1, r = Array(e.size);
+ return e.forEach(function(n) {
+ r[++t] = n;
+ }), r;
+}
+var Ad = 1, Pd = 2, qd = "[object Boolean]", Cd = "[object Date]", Fd = "[object Error]", kd = "[object Map]", Ld = "[object Number]", Rd = "[object RegExp]", Bd = "[object Set]", jd = "[object String]", Md = "[object Symbol]", Dd = "[object ArrayBuffer]", Nd = "[object DataView]", Wn = ke ? ke.prototype : void 0, vr = Wn ? Wn.valueOf : void 0;
+function Vd(e, t, r, n, i, s, a) {
+ switch (r) {
+ case Nd:
+ if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset)
+ return false;
+ e = e.buffer, t = t.buffer;
+ case Dd:
+ return !(e.byteLength != t.byteLength || !s(new Un(e), new Un(t)));
+ case qd:
+ case Cd:
+ case Ld:
+ return Kr(+e, +t);
+ case Fd:
+ return e.name == t.name && e.message == t.message;
+ case Rd:
+ case jd:
+ return e == t + "";
+ case kd:
+ var o = _d;
+ case Bd:
+ var l = n & Ad;
+ if (o || (o = Id), e.size != t.size && !l)
+ return false;
+ var u = a.get(e);
+ if (u)
+ return u == t;
+ n |= Pd, a.set(e, t);
+ var c = ds(o(e), o(t), n, i, s, a);
+ return a.delete(e), c;
+ case Md:
+ if (vr)
+ return vr.call(e) == vr.call(t);
+ }
+ return false;
+}
+function Hd(e, t) {
+ for (var r = -1, n = t.length, i = e.length; ++r < n; )
+ e[i + r] = t[r];
+ return e;
+}
+function Ud(e, t, r) {
+ var n = t(e);
+ return M(e) ? n : Hd(n, r(e));
+}
+function fs(e, t) {
+ for (var r = -1, n = e == null ? 0 : e.length, i = 0, s = []; ++r < n; ) {
+ var a = e[r];
+ t(a, r, e) && (s[i++] = a);
+ }
+ return s;
+}
+function Wd() {
+ return [];
+}
+var zd = Object.prototype, Gd = zd.propertyIsEnumerable, zn = Object.getOwnPropertySymbols, Xd = zn ? function(e) {
+ return e == null ? [] : (e = Object(e), fs(zn(e), function(t) {
+ return Gd.call(e, t);
+ }));
+} : Wd;
+const Kd = Xd;
+function Gn(e) {
+ return Ud(e, Wt, Kd);
+}
+var Jd = 1, Qd = Object.prototype, Yd = Qd.hasOwnProperty;
+function Zd(e, t, r, n, i, s) {
+ var a = r & Jd, o = Gn(e), l = o.length, u = Gn(t), c = u.length;
+ if (l != c && !a)
+ return false;
+ for (var v = l; v--; ) {
+ var g = o[v];
+ if (!(a ? g in t : Yd.call(t, g)))
+ return false;
+ }
+ var f = s.get(e), h = s.get(t);
+ if (f && h)
+ return f == t && h == e;
+ var m = true;
+ s.set(e, t), s.set(t, e);
+ for (var d = a; ++v < l; ) {
+ g = o[v];
+ var b = e[g], O = t[g];
+ if (n)
+ var A = a ? n(O, b, g, t, e, s) : n(b, O, g, e, t, s);
+ if (!(A === void 0 ? b === O || i(b, O, r, n, s) : A)) {
+ m = false;
+ break;
+ }
+ d || (d = g == "constructor");
+ }
+ if (m && !d) {
+ var S = e.constructor, $ = t.constructor;
+ S != $ && "constructor" in e && "constructor" in t && !(typeof S == "function" && S instanceof S && typeof $ == "function" && $ instanceof $) && (m = false);
+ }
+ return s.delete(e), s.delete(t), m;
+}
+var ef = Qe(ve, "DataView");
+const Ir = ef;
+var tf = Qe(ve, "Promise");
+const Ar = tf;
+var rf = Qe(ve, "Set");
+const Pr = rf;
+var nf = Qe(ve, "WeakMap");
+const qr = nf;
+var Xn = "[object Map]", sf = "[object Object]", Kn = "[object Promise]", Jn = "[object Set]", Qn = "[object WeakMap]", Yn = "[object DataView]", af = Je(Ir), of = Je(wt), lf = Je(Ar), uf = Je(Pr), cf = Je(qr), Ve = Be;
+(Ir && Ve(new Ir(new ArrayBuffer(1))) != Yn || wt && Ve(new wt()) != Xn || Ar && Ve(Ar.resolve()) != Kn || Pr && Ve(new Pr()) != Jn || qr && Ve(new qr()) != Qn) && (Ve = function(e) {
+ var t = Be(e), r = t == sf ? e.constructor : void 0, n = r ? Je(r) : "";
+ if (n)
+ switch (n) {
+ case af:
+ return Yn;
+ case of:
+ return Xn;
+ case lf:
+ return Kn;
+ case uf:
+ return Jn;
+ case cf:
+ return Qn;
+ }
+ return t;
+});
+const Zn = Ve;
+var df = 1, ei = "[object Arguments]", ti = "[object Array]", kt = "[object Object]", ff = Object.prototype, ri = ff.hasOwnProperty;
+function pf(e, t, r, n, i, s) {
+ var a = M(e), o = M(t), l = a ? ti : Zn(e), u = o ? ti : Zn(t);
+ l = l == ei ? kt : l, u = u == ei ? kt : u;
+ var c = l == kt, v = u == kt, g = l == u;
+ if (g && yr(e)) {
+ if (!yr(t))
+ return false;
+ a = true, c = false;
+ }
+ if (g && !c)
+ return s || (s = new Se()), a || hi(e) ? ds(e, t, r, n, i, s) : Vd(e, t, l, r, n, i, s);
+ if (!(r & df)) {
+ var f = c && ri.call(e, "__wrapped__"), h = v && ri.call(t, "__wrapped__");
+ if (f || h) {
+ var m = f ? e.value() : e, d = h ? t.value() : t;
+ return s || (s = new Se()), i(m, d, r, n, s);
+ }
+ }
+ return g ? (s || (s = new Se()), Zd(e, t, r, n, i, s)) : false;
+}
+function ir(e, t, r, n, i) {
+ return e === t ? true : e == null || t == null || !Le(e) && !Le(t) ? e !== e && t !== t : pf(e, t, r, n, ir, i);
+}
+var hf = 1, mf = 2;
+function vf(e, t, r, n) {
+ var i = r.length, s = i, a = !n;
+ if (e == null)
+ return !s;
+ for (e = Object(e); i--; ) {
+ var o = r[i];
+ if (a && o[2] ? o[1] !== e[o[0]] : !(o[0] in e))
+ return false;
+ }
+ for (; ++i < s; ) {
+ o = r[i];
+ var l = o[0], u = e[l], c = o[1];
+ if (a && o[2]) {
+ if (u === void 0 && !(l in e))
+ return false;
+ } else {
+ var v = new Se();
+ if (n)
+ var g = n(u, c, l, e, t, v);
+ if (!(g === void 0 ? ir(c, u, hf | mf, n, v) : g))
+ return false;
+ }
+ }
+ return true;
+}
+function ps(e) {
+ return e === e && !J(e);
+}
+function gf(e) {
+ for (var t = Wt(e), r = t.length; r--; ) {
+ var n = t[r], i = e[n];
+ t[r] = [n, i, ps(i)];
+ }
+ return t;
+}
+function hs(e, t) {
+ return function(r) {
+ return r == null ? false : r[e] === t && (t !== void 0 || e in Object(r));
+ };
+}
+function yf(e) {
+ var t = gf(e);
+ return t.length == 1 && t[0][2] ? hs(t[0][0], t[0][1]) : function(r) {
+ return r === e || vf(r, e, t);
+ };
+}
+function bf(e, t) {
+ return e != null && t in Object(e);
+}
+function wf(e, t) {
+ return e != null && ki(e, t, bf);
+}
+var Sf = 1, Of = 2;
+function $f(e, t) {
+ return Xr(e) && ps(t) ? hs($t(e), t) : function(r) {
+ var n = be(r, e);
+ return n === void 0 && n === t ? wf(r, e) : ir(t, n, Sf | Of);
+ };
+}
+function Ef(e) {
+ return function(t) {
+ return t == null ? void 0 : t[e];
+ };
+}
+function Tf(e) {
+ return function(t) {
+ return es(t, e);
+ };
+}
+function xf(e) {
+ return Xr(e) ? Ef($t(e)) : Tf(e);
+}
+function _t(e) {
+ return typeof e == "function" ? e : e == null ? vi : typeof e == "object" ? M(e) ? $f(e[0], e[1]) : yf(e) : xf(e);
+}
+function _f(e) {
+ return function(t, r, n) {
+ var i = Object(t);
+ if (!Ut(t)) {
+ var s = _t(r);
+ t = Wt(t), r = function(o) {
+ return s(i[o], o, i);
+ };
+ }
+ var a = e(t, r, n);
+ return a > -1 ? i[s ? t[a] : a] : void 0;
+ };
+}
+function If(e, t, r, n) {
+ for (var i = e.length, s = r + (n ? 1 : -1); n ? s-- : ++s < i; )
+ if (t(e[s], s, e))
+ return s;
+ return -1;
+}
+var ni = 1 / 0, Af = 17976931348623157e292;
+function Pf(e) {
+ if (!e)
+ return e === 0 ? e : 0;
+ if (e = Tr(e), e === ni || e === -ni) {
+ var t = e < 0 ? -1 : 1;
+ return t * Af;
+ }
+ return e === e ? e : 0;
+}
+function dn(e) {
+ var t = Pf(e), r = t % 1;
+ return t === t ? r ? t - r : t : 0;
+}
+var qf = Math.max;
+function Cf(e, t, r) {
+ var n = e == null ? 0 : e.length;
+ if (!n)
+ return -1;
+ var i = r == null ? 0 : dn(r);
+ return i < 0 && (i = qf(n + i, 0)), If(e, _t(t), i);
+}
+var Ff = _f(Cf);
+const fn = Ff, kf = {
+ props: {
+ form: {
+ type: Object,
+ required: true
+ },
+ field: {
+ type: String,
+ required: true
+ },
+ multiple: {
+ type: Boolean,
+ required: true
+ },
+ filepond: {
+ type: [Boolean, Object],
+ required: false,
+ default: true
+ },
+ jsFilepondOptions: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ placeholder: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ preview: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ server: {
+ type: [Boolean, String],
+ required: false,
+ default: false
+ },
+ accept: {
+ type: Array,
+ required: false,
+ default: () => []
+ },
+ minFileSize: {
+ type: [Boolean, Number, String],
+ required: false,
+ default: false
+ },
+ maxFileSize: {
+ type: [Boolean, Number, String],
+ required: false,
+ default: false
+ },
+ minImageWidth: {
+ type: [Boolean, Number],
+ required: false,
+ default: false
+ },
+ maxImageWidth: {
+ type: [Boolean, Number],
+ required: false,
+ default: false
+ },
+ minImageHeight: {
+ type: [Boolean, Number],
+ required: false,
+ default: false
+ },
+ maxImageHeight: {
+ type: [Boolean, Number],
+ required: false,
+ default: false
+ },
+ minImageResolution: {
+ type: [Boolean, Number],
+ required: false,
+ default: false
+ },
+ maxImageResolution: {
+ type: [Boolean, Number],
+ required: false,
+ default: false
+ },
+ existingSuffix: {
+ type: String,
+ required: false,
+ default: "_existing"
+ },
+ orderSuffix: {
+ type: String,
+ required: false,
+ default: "_order"
+ },
+ dusk: {
+ type: String,
+ required: false,
+ default: null
+ }
+ },
+ emits: ["start-uploading", "stop-uploading"],
+ data() {
+ return {
+ inputElement: null,
+ filepondInstance: null,
+ filenames: [],
+ uploadedFiles: [],
+ hadExistingFiles: false
+ };
+ },
+ computed: {
+ existingField() {
+ return this.field + this.existingSuffix;
+ },
+ orderField() {
+ return this.field + this.orderSuffix;
+ },
+ handlesExistingFiles() {
+ return this.existingSuffix && this.hadExistingFiles;
+ }
+ },
+ mounted() {
+ this.inputElement = this.$refs.file.querySelector('input[type="file"]');
+ const e = this.form[this.field];
+ this.hadExistingFiles = this.multiple && e.length > 0 || !this.multiple && e, this.form.$put(this.field, this.multiple ? [] : null), this.filepond && (this.setExisting(e), this.initFilepond(e || []).then(() => {
+ this.form.$registerFilepond(this.field, this.addFileToFilepond, this.addFilesToFilepond);
+ }));
+ },
+ methods: {
+ /*
+ * This extracts the encrypted string from the backend data.
+ */
+ extractMetadataFromExistingFile(e) {
+ return e ? se(e) ? e : M(e) ? e.map(this.extractMetadataFromExistingFile) : J(e) ? e.options.metadata.metadata : null : null;
+ },
+ /**
+ * This sets the existing files on the form.
+ */
+ setExisting(e) {
+ this.handlesExistingFiles && (this.form.$put(this.existingField, this.extractMetadataFromExistingFile(e)), this.setOrder());
+ },
+ /**
+ * This determines the order of all files, existing and new, and sets it on the form.
+ */
+ setOrder() {
+ if (!this.multiple || !this.filepondInstance)
+ return;
+ const t = this.filepondInstance.getFiles().filter((n) => !n.getMetadata("identifier")), r = this.filepondInstance.getFiles().map((n) => {
+ const i = n.getMetadata("identifier");
+ return i ? "existing-file-" + i : "new-file-" + t.indexOf(n);
+ });
+ this.form.$put(this.orderField, r);
+ },
+ /**
+ * This is meant for external URLs.
+ */
+ addFileToFilepond(e) {
+ e && this.filepondInstance.addFile(e);
+ },
+ addFilesToFilepond(e) {
+ e.forEach((t) => this.addFileToFilepond(t));
+ },
+ loadFilepondPlugins() {
+ const e = [];
+ return this.preview && (e.push(import("filepond-plugin-image-exif-orientation")), e.push(import("filepond-plugin-image-preview"))), this.accept.length > 0 && e.push(import("filepond-plugin-file-validate-type")), (this.minFileSize || this.maxFileSize) && e.push(import("filepond-plugin-file-validate-size")), (this.minImageWidth || this.maxImageWidth || this.minImageHeight || this.maxImageHeight || this.minImageResolution || this.maxImageResolution) && e.push(import("filepond-plugin-image-validate-size")), Promise.all(e);
+ },
+ initFilepond(e) {
+ const t = this.inputElement.getAttribute("name"), r = this;
+ return new Promise((n) => {
+ import("filepond").then((i) => {
+ const s = Object.assign({}, r.filepond, r.jsFilepondOptions, {
+ oninit() {
+ const a = setInterval(() => {
+ if (r.filepondInstance.status <= 2)
+ clearInterval(a);
+ else
+ return;
+ r.setOrder();
+ const o = r.filepondInstance.element.querySelector('input[type="file"]');
+ o.hasAttribute("name") || o.setAttribute("name", t), r.dusk && r.filepondInstance.element.setAttribute("dusk", r.dusk), o.setAttribute("data-server", !!r.server), r.multiple && r.filepondInstance.element.addEventListener("moveFile", function(l) {
+ r.filepondInstance.moveFile(l.detail[0], l.detail[1]), r.setOrder();
+ }), n();
+ }, 15);
+ },
+ onaddfile(a, o) {
+ a || o.origin !== i.FileOrigin.LOCAL && (r.server ? r.$emit("start-uploading", [o.id]) : r.addFiles([o.file]), r.setOrder());
+ },
+ onremovefile(a, o) {
+ a || (r.handlesExistingFiles && (r.multiple ? r.setExisting(r.form[r.existingField].filter((l) => o.getMetadata("metadata") !== l)) : r.setExisting(null)), r.removeFile(o.file));
+ },
+ onprocessfile(a, o) {
+ a || (r.uploadedFiles.push({
+ file: o.file,
+ id: o.serverId
+ }), r.addFiles([o.serverId]), r.$emit("stop-uploading", [o.id]));
+ },
+ onreorderfiles() {
+ r.setOrder();
+ }
+ });
+ this.hadExistingFiles && (s.files = this.multiple ? e : [e]), this.accept.length > 0 && (s.acceptedFileTypes = this.accept), this.minFileSize && (s.minFileSize = this.minFileSize), this.maxFileSize && (s.maxFileSize = this.maxFileSize), this.minImageWidth && (s.imageValidateSizeMinWidth = this.minImageWidth), this.maxImageWidth && (s.imageValidateSizeMaxWidth = this.maxImageWidth), this.minImageHeight && (s.imageValidateSizeMinHeight = this.minImageHeight), this.maxImageHeight && (s.imageValidateSizeMaxHeight = this.maxImageHeight), this.minImageResolution && (s.imageValidateSizeMinResolution = this.minImageResolution), this.maxImageResolution && (s.imageValidateSizeMaxResolution = this.maxImageResolution), s.server = {
+ // This handles to loading of the file preview of existing files.
+ load: (a, o, l, u, c) => {
+ const g = ne.CancelToken.source();
+ return ne({
+ url: a.preview_url,
+ method: "GET",
+ cancelToken: g.token,
+ responseType: "blob"
+ }).then((f) => {
+ const h = new File([f.data], a.name, { type: a.type });
+ o(h);
+ }).catch(function(f) {
+ axios.isCancel(f) || l(f);
+ }), {
+ abort: () => {
+ g.cancel(), c();
+ }
+ };
+ }
+ }, this.server && (s.server.process = (a, o, l, u, c, v, g) => {
+ const f = new FormData();
+ f.append("file", o, o.name);
+ const m = ne.CancelToken.source();
+ ne({
+ url: r.server,
+ method: "POST",
+ data: f,
+ cancelToken: m.token,
+ onUploadProgress: (d) => {
+ v(d.lengthComputable, d.loaded, d.total);
+ }
+ }).then((d) => {
+ d.status >= 200 && d.status < 300 ? u(d.data) : c(d.statusText);
+ }).catch(function(d) {
+ var b;
+ axios.isCancel(d) ? g() : c((b = d.response) == null ? void 0 : b.statusText);
+ });
+ }, s.server.revert = (a, o, l) => {
+ ne({
+ url: r.server,
+ method: "POST",
+ data: { _method: "DELETE", file: a }
+ }).then(() => {
+ o();
+ }).catch(function(u) {
+ var c;
+ l((c = u.response) == null ? void 0 : c.statusText);
+ });
+ }), (s.itemInsertLocation === "before" || s.itemInsertLocation === "after") && (s.itemInsertLocationFreedom = false), this.loadFilepondPlugins(i).then((a) => {
+ a.length > 0 && i.registerPlugin(...a.map((o) => o.default)), this.filepondInstance = i.create(this.inputElement, s);
+ });
+ });
+ });
+ },
+ removeFile(e) {
+ this.server && (e = fn(this.uploadedFiles, (t) => t.file === e).serverId), this.form.$put(this.field, this.multiple ? this.form[this.field].filter((t) => t !== e) : null);
+ },
+ addFiles(e) {
+ if (this.multiple) {
+ const t = this.form[this.field];
+ e.forEach((r) => {
+ t.push(r);
+ }), this.form.$put(this.field, t);
+ } else
+ this.form.$put(this.field, e[0]), this.setExisting(null);
+ this.filepond || this.updateFilenames();
+ },
+ updateFilenames() {
+ this.filenames = [];
+ const e = this.form[this.field];
+ this.multiple ? e.forEach((t) => {
+ this.filenames.push(t.name);
+ }) : e && this.filenames.push(e.name);
+ },
+ handleFileInput(e) {
+ this.form.$put(this.field, this.multiple ? [] : null);
+ const t = Object.values(e.target.files);
+ this.addFiles(t);
+ }
+ }
+}, Lf = { ref: "file" };
+function Rf(e, t, r, n, i, s) {
+ return vueExports.openBlock(), vueExports.createElementBlock("div", Lf, [
+ vueExports.renderSlot(e.$slots, "default", {
+ handleFileInput: s.handleFileInput,
+ filenames: i.filenames
+ })
+ ], 512);
+}
+const Bf = /* @__PURE__ */ _e(kf, [["render", Rf]]), jf = {
+ inject: ["stack"],
+ computed: {
+ values() {
+ return p.flashData(this.stack);
+ }
+ },
+ render() {
+ const e = this;
+ return this.$slots.default({
+ has(t) {
+ return W(e.values, t);
+ },
+ ...this.values
+ });
+ }
+};
+function pn(e, t, r) {
+ e = e || {}, t = t || new FormData(), r = r || null;
+ for (const n in e)
+ Object.prototype.hasOwnProperty.call(e, n) && vs(t, ms(r, n), e[n]);
+ return t;
+}
+function ms(e, t) {
+ return e ? e + "[" + t + "]" : t;
+}
+function vs(e, t, r) {
+ if (Array.isArray(r))
+ return Array.from(r.keys()).forEach((n) => vs(e, ms(t, n.toString()), r[n]));
+ if (r instanceof Date)
+ return e.append(t, r.toISOString());
+ if (r instanceof File)
+ return e.append(t, r, r.name);
+ if (r instanceof Blob)
+ return e.append(t, r);
+ if (typeof r == "boolean")
+ return e.append(t, r ? "1" : "0");
+ if (typeof r == "string")
+ return e.append(t, r);
+ if (typeof r == "number")
+ return e.append(t, `${r}`);
+ if (r == null)
+ return e.append(t, "");
+ pn(r, e, t);
+}
+var Mf = "[object Boolean]";
+function gs(e) {
+ return e === true || e === false || Le(e) && Be(e) == Mf;
+}
+function ys(e, t) {
+ var r = {};
+ return t = _t(t), jr(e, function(n, i, s) {
+ ts(r, i, t(n, i, s));
+ }), r;
+}
+function bs(e, t, r) {
+ return e === e && (r !== void 0 && (e = e <= r ? e : r), t !== void 0 && (e = e >= t ? e : t)), e;
+}
+function et(e, t, r) {
+ return e = Qr(e), r = r == null ? 0 : bs(dn(r), 0, e.length), t = Qt(t), e.slice(r, r + t.length) == t;
+}
+const Df = {
+ inject: ["stack"],
+ props: {
+ spladeId: {
+ type: String,
+ required: true,
+ default: ""
+ },
+ action: {
+ type: String,
+ required: false,
+ default() {
+ return p.isSsr ? "" : location.href;
+ }
+ },
+ method: {
+ type: String,
+ required: false,
+ default: "POST"
+ },
+ default: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ confirmDanger: {
+ type: [Boolean, String],
+ required: false,
+ default: false
+ },
+ confirm: {
+ type: [Boolean, String],
+ required: false,
+ default: (e) => e.confirmDanger
+ },
+ confirmText: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ confirmButton: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ cancelButton: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ requirePasswordOnce: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ requirePassword: {
+ type: [Boolean, String],
+ required: false,
+ default: (e) => e.requirePasswordOnce
+ },
+ background: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ stay: {
+ type: Boolean,
+ require: false,
+ default: false
+ },
+ restoreOnSuccess: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ resetOnSuccess: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ scrollOnError: {
+ type: Boolean,
+ required: false,
+ default: true
+ },
+ submitOnChange: {
+ type: [Boolean, Array],
+ required: false,
+ default: false
+ },
+ escapeValidationMessages: {
+ type: Boolean,
+ required: false,
+ default: true
+ },
+ keepModal: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ preserveScroll: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ debounce: {
+ type: Number,
+ required: false,
+ default: 0
+ },
+ acceptHeader: {
+ type: String,
+ required: false,
+ default: "application/json"
+ },
+ headers: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ blob: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ emits: ["success", "error", "reset", "restored"],
+ data() {
+ return {
+ isMounted: false,
+ missingAttributes: [],
+ values: Object.assign({}, { ...this.default }),
+ processing: false,
+ processingInBackground: false,
+ wasSuccessful: false,
+ recentlySuccessful: false,
+ recentlySuccessfulTimeoutId: null,
+ wasUnsuccessful: false,
+ recentlyUnsuccessful: false,
+ recentlyUnsuccessfulTimeoutId: null,
+ formElement: null,
+ elementsUploading: [],
+ fileponds: {},
+ debounceFunction: null,
+ response: null
+ };
+ },
+ computed: {
+ $all() {
+ return this.values;
+ },
+ $uploading() {
+ return this.elementsUploading.length > 0;
+ },
+ /*
+ * Fetches the raw validation errors from the Splade
+ * instances based on the current stack.
+ */
+ rawErrors() {
+ return p.validationErrors(this.stack);
+ },
+ /*
+ * Flattens the raw errors.
+ */
+ errors() {
+ return ys(this.rawErrors, (e) => e.join(`
+`));
+ }
+ },
+ created() {
+ this.debounceFunction = er(() => {
+ this.request(this.background);
+ }, this.debounce);
+ },
+ /*
+ * It loops through all missing attributes and tries to
+ * find a sensible default for that attribute.
+ */
+ mounted() {
+ let e = document.querySelector(`form[data-splade-id="${this.spladeId}"]`);
+ e || (e = document), this.formElement = e, this.missingAttributes.forEach((r) => {
+ let n = "";
+ const i = e.querySelector(`[name="${r}"]`);
+ i ? n = i.type === "checkbox" ? false : "" : e.querySelector(`[name="${r}[]"]`) ? n = [] : (e.querySelector(`[name^="${r}."]`) || e.querySelector(`[name^="${r}["]`)) && (n = {}), this.$put(r, n);
+ }), this.missingAttributes = [], this.submitOnChange === true ? this.$watch("values", () => {
+ this.background && (this.processingInBackground = true), this.$nextTick(() => this.debounce ? this.debounceFunction() : this.request(this.background));
+ }, { deep: true }) : M(this.submitOnChange) && this.submitOnChange.forEach((r) => {
+ this.$watch(`values.${r}`, () => {
+ this.background && (this.processingInBackground = true), this.$nextTick(() => this.debounce ? this.debounceFunction() : this.request(this.background));
+ }, { deep: true });
+ }), this.isMounted = true;
+ const t = this.formElement.querySelector("[autofocus]");
+ t && this.focusAndScrollToElement(t);
+ },
+ methods: {
+ $startUploading(e) {
+ this.elementsUploading.push(e[0]);
+ },
+ $stopUploading(e) {
+ this.elementsUploading = this.elementsUploading.filter((t) => t != e[0]);
+ },
+ hasError(e) {
+ return e in this.errors;
+ },
+ $registerFilepond(e, t, r) {
+ this.fileponds[e] = {
+ addFile: t,
+ addFiles: r
+ };
+ },
+ $addFile(e, t) {
+ if (!this.fileponds[e])
+ return console.log("Filepond instance not found");
+ this.fileponds[e].addFile(t);
+ },
+ $addFiles(e, t) {
+ if (!this.fileponds[e])
+ return console.log("Filepond instance not found");
+ this.fileponds[e].addFiles(t);
+ },
+ $fileAsUrl(e) {
+ const t = this.values[e];
+ if (!t)
+ return "";
+ var r = URL.createObjectURL(t), n = new XMLHttpRequest();
+ n.open("GET", r, false), n.overrideMimeType("text/plain; charset=x-user-defined"), n.send(), URL.revokeObjectURL(r);
+ for (var i = "", s = 0; s < n.responseText.length; s++)
+ i += String.fromCharCode(n.responseText.charCodeAt(s) & 255);
+ return "data:" + t.type + ";base64," + btoa(i);
+ },
+ $errorAttributes(e) {
+ return {
+ [this.escapeValidationMessages ? "textContent" : "innerHTML"]: this.errors[e]
+ };
+ },
+ reset() {
+ this.values = {}, this.$emit("reset");
+ },
+ restore() {
+ this.values = Object.assign({}, { ...this.default }), this.$emit("restored");
+ },
+ $put(e, t) {
+ return St(this.values, e, t);
+ },
+ focusAndScrollToElement(e) {
+ let t = true;
+ if (e._flatpickr && (t = false), e.tagName === "SELECT" && e.getAttribute("data-choice") && (t = false), t) {
+ const r = new IntersectionObserver((n) => {
+ let [i] = n;
+ i.isIntersecting && (setTimeout(() => i.target.focus(), 150), r.disconnect());
+ });
+ r.observe(e);
+ }
+ e.scrollIntoView({
+ behavior: "smooth",
+ block: "end",
+ inline: "nearest"
+ });
+ },
+ /*
+ * If a confirmation is needed, it first shows the
+ * confirmation dialog and waits for the promise
+ * before it performs the request.
+ */
+ submit(e) {
+ if (this.$uploading) {
+ console.log("Not submitting because there are still files uploading");
+ return;
+ }
+ if (e) {
+ const t = e.submitter;
+ t && t.name && this.$put(t.name, t.value);
+ }
+ if (!this.confirm)
+ return this.request();
+ p.confirm(
+ gs(this.confirm) ? "" : this.confirm,
+ this.confirmText,
+ this.confirmButton,
+ this.cancelButton,
+ !!this.requirePassword,
+ this.requirePasswordOnce,
+ !!this.confirmDanger
+ ).then((t) => {
+ if (!this.requirePassword) {
+ this.request();
+ return;
+ }
+ this.method.toUpperCase() !== "GET" && t && this.$put(
+ se(this.requirePassword) && this.requirePassword ? this.requirePassword : "password",
+ t
+ ), this.request();
+ }).catch(() => {
+ });
+ },
+ /*
+ * Maps the values into a FormData instance and then
+ * performs an async request.
+ */
+ async request(e) {
+ if (typeof e > "u" && (e = false), this.$uploading) {
+ console.log("Not submitting because there are still files uploading");
+ return;
+ }
+ await this.$nextTick(), this.background ? this.processingInBackground = true : this.processing = true, this.response = null, this.wasSuccessful = false, this.recentlySuccessful = false, clearTimeout(this.recentlySuccessfulTimeoutId), this.wasUnsuccessful = false, this.recentlyUnsuccessful = false, clearTimeout(this.recentlyUnsuccessfulTimeoutId);
+ const t = this.values instanceof FormData ? this.values : pn(this.values), r = {};
+ this.acceptHeader && (r.Accept = this.acceptHeader), (this.stay || e) && (r["X-Splade-Prevent-Refresh"] = true), this.preserveScroll && (r["X-Splade-Preserve-Scroll"] = true), this.stack > 0 && this.keepModal && (r["X-Splade-Modal"] = p.stackType(this.stack), r["X-Splade-Modal-Target"] = this.stack);
+ let n = this.method.toUpperCase();
+ n !== "GET" && n !== "POST" && (t.append("_method", n), n = "POST");
+ const i = (s) => {
+ this.$emit("success", s), this.restoreOnSuccess && this.restore(), this.resetOnSuccess && this.reset(), this.processing = false, this.processingInBackground = false, this.wasSuccessful = true, this.recentlySuccessful = true, this.recentlySuccessfulTimeoutId = setTimeout(() => this.recentlySuccessful = false, 2e3), this.response = s.data;
+ };
+ if (this.action === "#")
+ return i(Object.fromEntries(t));
+ p.request(this.action, n, t, { ...r, ...this.headers }, false, this.blob).then(i).catch(async (s) => {
+ if (this.processing = false, this.processingInBackground = false, this.wasUnsuccessful = true, this.recentlyUnsuccessful = true, this.recentlyUnsuccessfulTimeoutId = setTimeout(() => this.recentlyUnsuccessful = false, 2e3), this.$emit("error", s), !this.scrollOnError)
+ return;
+ await this.$nextTick();
+ const a = fn(Object.keys(this.errors), (o) => this.formElement.querySelector(`[data-validation-key="${o}"]`));
+ a && this.focusAndScrollToElement(
+ this.formElement.querySelector(`[data-validation-key="${a}"]`)
+ );
+ });
+ }
+ },
+ render() {
+ const e = this;
+ return this.$slots.default(
+ new Proxy(
+ {},
+ {
+ ownKeys() {
+ return Object.keys(e.values);
+ },
+ get(t, r) {
+ const n = [
+ "$all",
+ "$attrs",
+ "$put",
+ "$startUploading",
+ "$stopUploading",
+ "$uploading",
+ "$errorAttributes",
+ "$registerFilepond",
+ "$addFile",
+ "$addFiles",
+ "$fileAsUrl",
+ "$response",
+ "errors",
+ "restore",
+ "reset",
+ "hasError",
+ "processing",
+ "processingInBackground",
+ "rawErrors",
+ "submit",
+ "wasSuccessful",
+ "recentlySuccessful",
+ "wasUnsuccessful",
+ "recentlyUnsuccessful"
+ ];
+ return r === "$response" ? e.response : n.includes(r) || et(r, "__v_") ? e[r] : (!e.isMounted && !W(e.values, r) && (e.missingAttributes.push(r), e.$put(r, "")), be(e.values, r));
+ },
+ set(t, r, n) {
+ return e.$put(r, n);
+ }
+ }
+ )
+ );
+ }
+}, Nf = {
+ props: {
+ flatpickr: {
+ type: [Boolean, Object],
+ required: false,
+ default: false
+ },
+ jsFlatpickrOptions: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ modelValue: {
+ type: [String, Number],
+ required: false
+ }
+ },
+ emits: ["update:modelValue"],
+ data() {
+ return {
+ disabled: false,
+ element: null,
+ flatpickrInstance: null,
+ observer: null
+ };
+ },
+ watch: {
+ modelValue(e) {
+ this.flatpickrInstance && this.flatpickrInstance.setDate(e);
+ }
+ },
+ mounted() {
+ this.element = this.$refs.input.querySelector("input"), this.flatpickr && this.initFlatpickr(this.element), this.disabled = this.element.disabled;
+ const e = this;
+ this.observer = new MutationObserver(function(t) {
+ t.forEach(function(r) {
+ r.attributeName === "disabled" && (e.disabled = r.target.disabled);
+ });
+ }), this.observer.observe(this.element, { attributes: true });
+ },
+ /*
+ * Destroy the observer and Flatpickr instance to prevent memory leaks.
+ */
+ beforeUnmount() {
+ this.observer.disconnect(), this.flatpickrInstance && this.flatpickrInstance.destroy();
+ },
+ methods: {
+ initFlatpickr(e) {
+ import("flatpickr").then((t) => {
+ this.flatpickrInstance = t.default(
+ e,
+ Object.assign({}, this.flatpickr, this.jsFlatpickrOptions, {
+ onChange: (r, n) => {
+ this.flatpickrInstance.config.mode === "range" && this.flatpickrInstance.selectedDates.length < 2 || n != this.modelValue && this.$emit("update:modelValue", n);
+ }
+ })
+ ), this.modelValue && this.flatpickrInstance.setDate(this.modelValue);
+ });
+ }
+ }
+}, Vf = { ref: "input" };
+function Hf(e, t, r, n, i, s) {
+ return vueExports.openBlock(), vueExports.createElementBlock("div", Vf, [
+ vueExports.renderSlot(e.$slots, "default", { disabled: i.disabled })
+ ], 512);
+}
+const Uf = /* @__PURE__ */ _e(Nf, [["render", Hf]]), Wf = {
+ props: {
+ options: {
+ type: Object,
+ required: false,
+ default() {
+ return {};
+ }
+ },
+ jsOptions: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ modelValue: {
+ type: [String, Number],
+ required: false
+ },
+ dusk: {
+ type: String,
+ required: false,
+ default: null
+ }
+ },
+ emits: ["update:modelValue"],
+ data() {
+ return {
+ instance: null
+ };
+ },
+ mounted() {
+ const e = this.$refs.jodit.querySelector("textarea");
+ import("jodit").then((t) => {
+ const r = Object.assign({ defaultMode: t.default.Jodit.MODE_WYSIWYG }, this.options, this.jsOptions);
+ this.instance = t.default.Jodit.make(e, r), this.instance.value = this.modelValue, this.instance.events.on("change", (n) => this.$emit("update:modelValue", n)), this.dusk && this.instance.editor.setAttribute("dusk", this.dusk);
+ });
+ },
+ beforeUnmount() {
+ this.instance.destruct();
+ }
+}, zf = { ref: "jodit" };
+function Gf(e, t, r, n, i, s) {
+ return vueExports.openBlock(), vueExports.createElementBlock("div", zf, [
+ vueExports.renderSlot(e.$slots, "default")
+ ], 512);
+}
+const Xf = /* @__PURE__ */ _e(Wf, [["render", Gf]]), Kf = {
+ components: { Render: ue },
+ props: {
+ name: {
+ type: String,
+ required: true
+ },
+ url: {
+ type: String,
+ required: false,
+ default() {
+ return p.isSsr ? "" : window.location.href;
+ }
+ },
+ show: {
+ type: Boolean,
+ required: false,
+ default: true
+ },
+ passthrough: {
+ type: Object,
+ required: false,
+ default() {
+ return {};
+ }
+ }
+ },
+ emits: ["loaded"],
+ data() {
+ return {
+ html: null
+ };
+ },
+ watch: {
+ show(e) {
+ e ? this.request() : this.html = null;
+ }
+ },
+ mounted() {
+ this.show && this.request();
+ },
+ methods: {
+ async request() {
+ this.html = null, p.lazy(this.url, this.name).then((e) => {
+ this.html = e.data.html, this.$emit("loaded");
+ });
+ }
+ }
+};
+function Jf(e, t, r, n, i, s) {
+ const a = vueExports.resolveComponent("Render");
+ return i.html ? (vueExports.openBlock(), vueExports.createBlock(a, {
+ key: 0,
+ html: i.html,
+ passthrough: r.passthrough
+ }, null, 8, ["html", "passthrough"])) : r.show ? vueExports.renderSlot(e.$slots, "default", { key: 1 }) : vueExports.createCommentVNode("", true);
+}
+const Qf = /* @__PURE__ */ _e(Kf, [["render", Jf]]), Yf = ["href"], Zf = {
+ __name: "Link",
+ props: {
+ href: {
+ type: String,
+ required: false,
+ default: "#"
+ },
+ method: {
+ type: String,
+ required: false,
+ default: "GET"
+ },
+ data: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ headers: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ replace: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ confirmDanger: {
+ type: [Boolean, String],
+ required: false,
+ default: false
+ },
+ confirm: {
+ type: [Boolean, String],
+ required: false,
+ default: (e) => e.confirmDanger
+ },
+ confirmText: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ confirmButton: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ cancelButton: {
+ type: String,
+ required: false,
+ default: ""
+ },
+ requirePasswordOnce: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ requirePassword: {
+ type: [Boolean, String],
+ required: false,
+ default: (e) => e.requirePasswordOnce
+ },
+ modal: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ slideover: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ away: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ keepModal: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ preserveScroll: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ setup(e) {
+ const t = vueExports.inject("stack"), r = vueExports.ref(null), n = e;
+ function i() {
+ if (r.value = null, !n.confirm)
+ return s();
+ p.confirm(
+ gs(n.confirm) ? "" : n.confirm,
+ n.confirmText,
+ n.confirmButton,
+ n.cancelButton,
+ !!n.requirePassword,
+ n.requirePasswordOnce,
+ !!n.confirmDanger
+ ).then((a) => {
+ if (!n.requirePassword) {
+ s();
+ return;
+ }
+ a && (r.value = a), s();
+ }).catch(() => {
+ });
+ }
+ function s() {
+ if (n.away)
+ return window.location = n.href;
+ const o = t > 0 && n.keepModal;
+ if (n.modal && !o)
+ return p.modal(n.href);
+ if (n.slideover && !o)
+ return p.slideover(n.href);
+ if (et(n.href, "#")) {
+ if (p.openPreloadedModal(n.href.substring(1)))
+ return;
+ console.log("No preloaded modal found for " + n.href);
+ }
+ let l = n.method.trim().toUpperCase();
+ const u = {
+ ...n.headers
+ };
+ if (o && (u["X-Splade-Modal"] = p.stackType(t), u["X-Splade-Modal-Target"] = t), n.preserveScroll && (u["X-Splade-Preserve-Scroll"] = true), l === "GET")
+ return n.replace ? p.replace(n.href, u) : p.visit(n.href, u);
+ const c = n.data instanceof FormData ? n.data : pn(n.data);
+ l !== "POST" && (c.append("_method", l), l = "POST"), r.value && (c.append(se(n.requirePassword) && n.requirePassword ? n.requirePassword : "password", r.value), r.value = null), p.request(n.href, l, c, u, n.replace);
+ }
+ return (a, o) => (vueExports.openBlock(), vueExports.createElementBlock("a", {
+ href: e.href,
+ onClick: vueExports.withModifiers(i, ["exact", "prevent"])
+ }, [
+ vueExports.renderSlot(a.$slots, "default")
+ ], 8, Yf));
+ }
+}, ep = {
+ provide() {
+ return {
+ stack: this.stack
+ };
+ },
+ props: {
+ closeButton: {
+ type: Boolean,
+ required: false,
+ default: true
+ },
+ type: {
+ type: String,
+ required: true
+ },
+ stack: {
+ type: Number,
+ required: true
+ },
+ onTopOfStack: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ maxWidth: {
+ type: String,
+ required: false,
+ default: (e) => e.type === "modal" ? "2xl" : "md"
+ },
+ position: {
+ type: String,
+ required: false,
+ default: (e) => e.type === "modal" ? "center" : "right"
+ },
+ name: {
+ type: String,
+ required: false,
+ default: null
+ },
+ animate: {
+ type: Boolean,
+ required: false,
+ default: true
+ }
+ },
+ emits: ["close"],
+ data() {
+ return {
+ staticAnimate: true,
+ isOpen: false
+ };
+ },
+ mounted() {
+ this.staticAnimate = this.animate, this.setIsOpen(true);
+ },
+ methods: {
+ emitClose() {
+ this.$emit("close");
+ },
+ close() {
+ this.setIsOpen(false);
+ },
+ setIsOpen(e) {
+ e || (this.staticAnimate = true), this.isOpen = e;
+ }
+ },
+ render() {
+ return this.$slots.default({
+ type: this.type,
+ isOpen: this.isOpen,
+ setIsOpen: this.setIsOpen,
+ close: this.close,
+ stack: this.stack,
+ onTopOfStack: this.onTopOfStack,
+ maxWidth: this.maxWidth,
+ emitClose: this.emitClose,
+ closeButton: this.closeButton,
+ animate: this.staticAnimate,
+ position: this.position,
+ // These HeadlessUI exports will be removed in v1.0
+ Dialog: en,
+ DialogPanel: tn,
+ TransitionRoot: ut,
+ TransitionChild: lt
+ });
+ }
+}, tp = {
+ __name: "PreloadedModal",
+ props: {
+ name: {
+ type: String,
+ required: true
+ },
+ html: {
+ type: String,
+ required: true
+ },
+ type: {
+ type: String,
+ required: false,
+ default: "modal"
+ },
+ opened: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ setup(e) {
+ const t = e;
+ return p.registerPreloadedModal(t.name, t.html, t.type), t.opened && p.openPreloadedModal(t.name), () => {
+ };
+ }
+}, rp = {
+ components: { Render: ue },
+ props: {
+ name: {
+ type: String,
+ required: true
+ },
+ on: {
+ type: Array,
+ required: true
+ },
+ url: {
+ type: String,
+ required: false,
+ default() {
+ return p.isSsr ? "" : window.location.href;
+ }
+ },
+ poll: {
+ type: Number,
+ required: false,
+ default: null
+ },
+ passthrough: {
+ type: Object,
+ required: false,
+ default() {
+ return {};
+ }
+ }
+ },
+ emits: ["loaded"],
+ data() {
+ return {
+ html: null,
+ loading: false
+ };
+ },
+ mounted() {
+ this.on.forEach((e) => {
+ this.$splade.on(e, this.request);
+ }), this.poll && setTimeout(() => {
+ this.request();
+ }, this.poll);
+ },
+ methods: {
+ async request() {
+ this.loading = true, p.rehydrate(this.url, this.name).then((e) => {
+ this.html = e.data.html, this.loading = false, this.$emit("loaded"), this.poll && setTimeout(() => {
+ this.request();
+ }, this.poll);
+ });
+ }
+ }
+};
+function np(e, t, r, n, i, s) {
+ const a = vueExports.resolveComponent("Render");
+ return i.html ? (vueExports.openBlock(), vueExports.createBlock(a, {
+ key: 0,
+ html: i.html,
+ passthrough: r.passthrough
+ }, null, 8, ["html", "passthrough"])) : i.loading ? vueExports.renderSlot(e.$slots, "placeholder", { key: 1 }) : vueExports.renderSlot(e.$slots, "default", { key: 2 });
+}
+const ip = /* @__PURE__ */ _e(rp, [["render", np]]), sp = {
+ props: {
+ script: {
+ type: String,
+ required: true
+ }
+ },
+ mounted() {
+ var e = new Function("obj", "with (obj) { " + this.script + "}");
+ e = e.bind(this, this), e(this.script);
+ },
+ render() {
+ return "";
+ }
+};
+function ap(e, t) {
+ var r = -1, n = Ut(e) ? Array(e.length) : [];
+ return Mr(e, function(i, s, a) {
+ n[++r] = t(i, s, a);
+ }), n;
+}
+function ws(e, t) {
+ var r = M(e) ? Fi : ap;
+ return r(e, _t(t));
+}
+const op = {
+ inject: ["stack"],
+ props: {
+ choices: {
+ type: [Boolean, Object],
+ required: false,
+ default: false
+ },
+ jsChoicesOptions: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ multiple: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ modelValue: {
+ type: [String, Number, Array],
+ required: false
+ },
+ placeholder: {
+ type: [Boolean, Object],
+ required: false,
+ default: false
+ },
+ dusk: {
+ type: String,
+ required: false,
+ default: null
+ },
+ remoteUrl: {
+ type: String,
+ required: false,
+ default: null
+ },
+ optionValue: {
+ type: String,
+ required: false,
+ default: null
+ },
+ optionLabel: {
+ type: String,
+ required: false,
+ default: null
+ },
+ remoteRoot: {
+ type: String,
+ required: false,
+ default: null
+ },
+ selectFirstRemoteOption: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ resetOnNewRemoteUrl: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ emits: ["update:modelValue"],
+ data() {
+ return {
+ choicesInstance: null,
+ element: null,
+ placeholderText: null,
+ headlessListener: null,
+ selectChangeListener: null,
+ selectShowDropdownListener: null,
+ loading: false
+ };
+ },
+ computed: {
+ /*
+ * Returns a boolean whether a selection has been made.
+ */
+ hasSelection() {
+ return this.multiple ? Array.isArray(this.modelValue) ? this.modelValue.length > 0 : false : !(this.modelValue === null || this.modelValue === "" || this.modelValue === void 0);
+ }
+ },
+ watch: {
+ /*
+ * When the model value changes, and it's a new
+ * section, apply it to the Choices instance.
+ */
+ modelValue(e, t) {
+ if (!this.choicesInstance && this.multiple && M(e)) {
+ const r = e.filter((n) => n !== "" && n !== null && n !== void 0);
+ if (JSON.stringify(r) != JSON.stringify(e)) {
+ this.$emit("update:modelValue", r);
+ return;
+ }
+ }
+ if (this.choicesInstance) {
+ if (JSON.stringify(e) == JSON.stringify(t))
+ return;
+ this.setValueOnChoices(e);
+ }
+ },
+ remoteUrl: {
+ handler() {
+ this.loadRemoteOptions();
+ }
+ }
+ },
+ mounted() {
+ if (this.element = this.$refs.select.querySelector("select"), this.choices)
+ return this.initChoices(this.element).then(() => {
+ this.loadRemoteOptions();
+ });
+ this.stack > 0 && this.element.addEventListener("change", () => {
+ this.element.blur();
+ }), this.loadRemoteOptions();
+ },
+ /*
+ * Destroy the Choices.js instance to prevent memory leaks.
+ */
+ beforeUnmount() {
+ this.destroyChoicesInstance();
+ },
+ methods: {
+ async setOptionsFromRemote(e) {
+ this.destroyChoicesInstance();
+ let t = [];
+ this.placeholder && t.push(this.placeholder), t = this.normalizeOptions(e, t);
+ var r, n = this.element.options.length - 1;
+ for (r = n; r >= 0; r--)
+ this.element.remove(r);
+ let i = false;
+ if (te(t, (s) => {
+ var a = document.createElement("option");
+ a.value = s.value, a.text = s.label, s.value === `${this.modelValue}` && s.value !== "" && (i = true), s.disabled && (a.disabled = s.disabled), s.placeholder && (a.placeholder = s.placeholder), this.element.appendChild(a);
+ }), this.resetOnNewRemoteUrl && (i = false), !i && this.selectFirstRemoteOption) {
+ const s = this.placeholder ? t[1] : t[0];
+ s && (this.$emit("update:modelValue", this.multiple ? [s.value] : s.value), await this.$nextTick(), i = true);
+ }
+ if (i || this.$emit("update:modelValue", this.multiple ? [] : ""), this.choices)
+ return this.initChoices(this.element).then(() => {
+ this.loading = false;
+ });
+ i ? this.element.value = this.modelValue : this.$nextTick(() => {
+ this.element.selectedIndex = 0;
+ });
+ },
+ /*
+ * Loads the options from a remote URL. It removes all current options from the select
+ * element, and then adds the new options. If the components uses Choices.js,
+ * it will first destroy the instance and then re-initialize it.
+ */
+ loadRemoteOptions() {
+ this.remoteUrl && (this.loading = true, ne({
+ url: this.remoteUrl,
+ method: "GET",
+ headers: {
+ Accept: "application/json"
+ }
+ }).then((e) => {
+ this.setOptionsFromRemote(this.remoteRoot ? be(e.data, this.remoteRoot) : e.data);
+ }).catch(() => {
+ this.setOptionsFromRemote([]);
+ }).finally(() => {
+ this.loading = false;
+ }));
+ },
+ /**
+ * Removes the event listeners and then destroys the Choices.js instance.
+ */
+ destroyChoicesInstance() {
+ var e;
+ this.choices && this.choicesInstance && (this.headlessListener && ((e = document.querySelector("#headlessui-portal-root")) == null || e.removeEventListener("click", this.headlessListener, { capture: true }), this.headlessListener = null), this.selectChangeListener && this.element.removeEventListener("change", this.selectChangeListener), this.selectShowDropdownListener && this.element.removeEventListener("showDropdown", this.selectShowDropdownListener), this.choicesInstance.destroy(), this.choicesInstance = null);
+ },
+ /**
+ * Transforms the options from the remote URL into an array of objects.
+ */
+ normalizeOptions(e, t) {
+ const r = M(e);
+ if (!r && J(e))
+ if (this.optionValue && this.optionLabel) {
+ let n = be(e, this.optionValue);
+ se(n) || (n = `${n}`), t.push({
+ value: n,
+ label: be(e, this.optionLabel)
+ });
+ } else
+ te(e, (n, i) => {
+ se(i) || (i = `${i}`), t.push({ label: n, value: i });
+ });
+ else
+ r && e.forEach((n) => {
+ this.normalizeOptions(n, t);
+ });
+ return t;
+ },
+ /*
+ * Set the given value on the Choices.js instance.
+ */
+ setValueOnChoices(e) {
+ Array.isArray(e) && (e = ws(e, (t) => `${t}`), this.choicesInstance.removeActiveItems()), e == null ? e = "" : Array.isArray(e) || (e = `${e}`), this.choicesInstance.setChoiceByValue(e), this.updateHasSelectionAttribute(), this.handlePlaceholderVisibility();
+ },
+ /*
+ * Returns the internal Choices.js item that is currently selected.
+ */
+ getItemOfCurrentModel() {
+ const e = this.modelValue;
+ return fn(this.choicesInstance._store.choices, (t) => t.value == e);
+ },
+ /*
+ * This method handles the visibility of the placeholder
+ * and applies some additional minor styling.
+ */
+ handlePlaceholderVisibility() {
+ if (!this.multiple)
+ return;
+ const e = this.choicesInstance.containerInner.element.querySelector(
+ "input.choices__input"
+ );
+ this.placeholderText = e.placeholder ? e.placeholder : this.placeholderText;
+ const t = this.choicesInstance.getValue().length;
+ e.placeholder = t ? "" : this.placeholderText ? this.placeholderText : "", e.style.minWidth = "0", e.style.width = t ? "1px" : "auto", e.style.paddingTop = t ? "0px" : "1px", e.style.paddingBottom = t ? "0px" : "1px";
+ },
+ /*
+ * Instantiate Choices.js with the combined PHP and JS options.
+ */
+ initChoices(e) {
+ return new Promise((t) => {
+ const r = Array.from(
+ e.querySelectorAll("option:not([placeholder])")
+ ).length, n = this;
+ import("choices.js").then((i) => {
+ const s = Object.assign({}, this.choices, this.jsChoicesOptions, {
+ callbackOnInit: function() {
+ const a = this;
+ n.stack > 0 && (n.headlessListener = function(o) {
+ if (!n.choicesInstance)
+ return;
+ const l = n.choicesInstance.dropdown.isActive, u = n.choicesInstance.containerOuter.element.contains(o.target);
+ !l && u ? n.choicesInstance.showDropdown() : l && !u && n.choicesInstance.hideDropdown();
+ }, document.querySelector("#headlessui-portal-root").addEventListener("click", n.headlessListener, { capture: true })), a.containerInner.element.setAttribute(
+ "data-select-name",
+ e.name
+ ), e.hasAttribute("dusk") && e.removeAttribute("dusk"), n.dusk && (a.containerInner.element.setAttribute("dusk", n.dusk), a.choiceList.element.setAttribute("dusk", `${n.dusk}-listbox`)), n.selectChangeListener = function() {
+ let o = a.getValue(true);
+ if (o == null && (o = ""), n.$emit("update:modelValue", o), !n.multiple || r < 1)
+ return;
+ a.getValue().length >= r && a.hideDropdown();
+ }, e.addEventListener("change", n.selectChangeListener), a.containerInner.element.addEventListener("hideDropdownFromDusk", function() {
+ a.hideDropdown();
+ }), n.selectShowDropdownListener = function() {
+ if (n.multiple || !n.modelValue)
+ return;
+ const o = n.getItemOfCurrentModel(), l = a.dropdown.element.querySelector(
+ `.choices__item[data-id="${o.id}"]`
+ );
+ a.choiceList.scrollToChildElement(l, 1), a._highlightChoice(l);
+ }, e.addEventListener("showDropdown", n.selectShowDropdownListener), n.choicesInstance = a, n.setValueOnChoices(n.modelValue), t();
+ }
+ });
+ new i.default(e, s);
+ });
+ });
+ },
+ /*
+ * Update the 'data-has-selection' attribute based on the current selection.
+ */
+ updateHasSelectionAttribute() {
+ this.choicesInstance.containerInner.element.setAttribute(
+ "data-has-selection",
+ this.hasSelection
+ );
+ }
+ }
+}, lp = { ref: "select" };
+function up(e, t, r, n, i, s) {
+ return vueExports.openBlock(), vueExports.createElementBlock("div", lp, [
+ vueExports.renderSlot(e.$slots, "default", { loading: i.loading })
+ ], 512);
+}
+const cp = /* @__PURE__ */ _e(op, [["render", up]]), dp = {
+ inject: ["stack"],
+ render() {
+ const e = p.validationErrors(this.stack), t = p.flashData(this.stack), r = p.sharedData.value, n = ys(e, (i) => i.join(`
+`));
+ return this.$slots.default({
+ flash: t,
+ errors: n,
+ rawErrors: e,
+ shared: r,
+ hasError(i) {
+ return i in e;
+ },
+ hasFlash(i) {
+ return W(t, i);
+ },
+ hasShared(i) {
+ return W(r, i);
+ },
+ hasErrors: Object.keys(e).length > 0
+ });
+ }
+};
+function fp(e, t, r) {
+ e = Qr(e), t = Qt(t);
+ var n = e.length;
+ r = r === void 0 ? n : bs(dn(r), 0, n);
+ var i = r;
+ return r -= t.length, r >= 0 && e.slice(r, i) == t;
+}
+function pp(e, t) {
+ var r = [];
+ return Mr(e, function(n, i, s) {
+ t(n, i, s) && r.push(n);
+ }), r;
+}
+function hp(e, t) {
+ var r = M(e) ? fs : pp;
+ return r(e, _t(t));
+}
+function ii(e, t) {
+ return ir(e, t);
+}
+const mp = {
+ inject: ["stack"],
+ props: {
+ spladeId: {
+ type: String,
+ required: true
+ },
+ baseUrl: {
+ type: String,
+ required: false,
+ default() {
+ return window.location.pathname;
+ }
+ },
+ striped: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ columns: {
+ type: Object,
+ required: true
+ },
+ defaultVisibleToggleableColumns: {
+ type: Array,
+ required: true
+ },
+ searchDebounce: {
+ type: Number,
+ required: false,
+ default: 350
+ },
+ itemsOnThisPage: {
+ type: Number,
+ required: false,
+ default: 0
+ },
+ itemsOnAllPages: {
+ type: Number,
+ required: false,
+ default: 0
+ },
+ paginationScroll: {
+ type: String,
+ required: false,
+ default: "top"
+ }
+ },
+ data() {
+ return {
+ selectedItems: [],
+ visibleColumns: [],
+ forcedVisibleSearchInputs: [],
+ debounceUpdateQuery: null,
+ isLoading: false,
+ processingAction: false
+ };
+ },
+ computed: {
+ /**
+ * Returns a boolean whether the currently toggled columns
+ * differ from the default set of visible columns.
+ */
+ columnsAreToggled() {
+ return !ii(this.visibleColumns, this.defaultVisibleToggleableColumns);
+ },
+ /*
+ * Returns a boolean whether there are Search Inputs visible
+ * that are not (yet) in the query string.
+ */
+ hasForcedVisibleSearchInputs() {
+ return this.forcedVisibleSearchInputs.length > 0;
+ },
+ allItemsFromAllPagesAreSelected() {
+ return this.selectedItems.length === 1 && this.selectedItems[0] === "*";
+ },
+ allVisibleItemsAreSelected() {
+ const e = this.selectedItems.length;
+ return e === 1 && this.selectedItems[0] === "*" || e > 0 && e === this.itemsOnThisPage;
+ },
+ hasSelectedItems() {
+ return this.selectedItems.length > 0;
+ },
+ totalSelectedItems() {
+ const e = this.selectedItems.length;
+ return e === 1 && this.selectedItems[0] === "*" ? this.itemsOnAllPages : e;
+ },
+ scrollToHeadRememberKey() {
+ return `spladeTableScrollToHead-${this.spladeId}`;
+ }
+ },
+ created() {
+ this.debounceUpdateQuery = er(function(e, t, r) {
+ this.updateQuery(e, t, r);
+ }, this.searchDebounce);
+ },
+ mounted() {
+ const e = this.getCurrentQuery(), t = e.columns || [];
+ te(e, (r, n) => {
+ if (et(n, "filter[") && !r) {
+ const i = n.split("["), s = i[1].substring(0, i[1].length - 1);
+ this.forcedVisibleSearchInputs = [...this.forcedVisibleSearchInputs, s];
+ }
+ }), t.length === 0 ? this.visibleColumns = this.defaultVisibleToggleableColumns : this.visibleColumns = t, p.restore(this.scrollToHeadRememberKey) && this.$nextTick(() => {
+ document.querySelector(`div[data-splade-id="${this.spladeId}"]`).scrollIntoView({
+ behavior: "smooth",
+ block: "start",
+ inline: "nearest"
+ });
+ }), p.forget(this.scrollToHeadRememberKey);
+ },
+ methods: {
+ navigate(e, t) {
+ const r = {
+ "X-Splade-Modal": p.stackType(this.stack),
+ "X-Splade-Modal-Target": this.stack,
+ "X-Splade-Prevent-View-Transition": true
+ };
+ (this.paginationScroll !== "top" || !t) && (r["X-Splade-Preserve-Scroll"] = true), p.request(e, "GET", {}, r, false).then(() => {
+ !p.isSsr && this.paginationScroll === "head" && t && p.remember(this.scrollToHeadRememberKey, true);
+ });
+ },
+ visitLink(e, t, r) {
+ var n, i;
+ if (!(((n = r == null ? void 0 : r.target) == null ? void 0 : n.tagName) === "A" || ((i = r == null ? void 0 : r.target) == null ? void 0 : i.tagName) === "BUTTON"))
+ return t === "modal" ? p.modal(e) : t === "slideover" ? p.slideover(e) : p.visit(e);
+ },
+ /**
+ * Resets the table to its initial state.
+ */
+ reset() {
+ this.forcedVisibleSearchInputs = [], this.visibleColumns = this.defaultVisibleToggleableColumns;
+ let e = this.getCurrentQuery();
+ e.columns = [], e.page = null, e.perPage = null, e.sort = null, te(e, (t, r) => {
+ et(r, "filter[") && (e[r] = null);
+ }), this.visitWithQueryObject(e, null, true);
+ },
+ /*
+ * Returns a boolean whether the given key is visible.
+ */
+ columnIsVisible(e) {
+ return this.visibleColumns.includes(e);
+ },
+ /*
+ * Toggles the column key.
+ */
+ toggleColumn(e) {
+ const t = !this.columnIsVisible(e), r = hp(this.columns, (i) => i.can_be_hidden ? i.key === e ? t : this.visibleColumns.includes(i.key) : true);
+ let n = ws(r, (i) => i.key).sort();
+ ii(n, this.defaultVisibleToggleableColumns) && (n = []), this.visibleColumns = n.length === 0 ? this.defaultVisibleToggleableColumns : n, this.updateQuery("columns", n, null, false);
+ },
+ /**
+ * Removes the key from being forcefully visible, and sets the value to null.
+ */
+ disableSearchInput(e) {
+ this.forcedVisibleSearchInputs = this.forcedVisibleSearchInputs.filter((t) => t != e), this.updateQuery(`filter[${e}]`, null);
+ },
+ /*
+ * Forces the given Search Input key to be visible, and focuses the input element.
+ */
+ showSearchInput(e) {
+ this.forcedVisibleSearchInputs = [...this.forcedVisibleSearchInputs, e], vueExports.nextTick(() => {
+ document.querySelector(`[name="searchInput-${e}"]`).focus();
+ });
+ },
+ /*
+ * Returns a boolean whether the key should be visible.
+ */
+ isForcedVisible(e) {
+ return this.forcedVisibleSearchInputs.includes(e);
+ },
+ /*
+ * Parses the window's current query as an object.
+ */
+ getCurrentQuery() {
+ const e = window.location.search;
+ if (!e)
+ return {};
+ let t = {};
+ return e.substring(1).split("&").forEach((r) => {
+ const n = decodeURIComponent(r).split("=");
+ let i = n[0];
+ if (!fp(i, "]")) {
+ t[i] = n[1];
+ return;
+ }
+ const s = i.split("["), a = s[1].substring(0, s[1].length - 1);
+ parseInt(a) == a ? (i = s[0], M(t[i]) || (t[i] = []), t[i].push(n[1])) : t[i] = n[1];
+ }), t;
+ },
+ /*
+ * Update the current query
+ */
+ updateQuery(e, t, r, n) {
+ typeof n > "u" && (n = true);
+ let i = this.getCurrentQuery();
+ i[e] = t, (et(e, "perPage") || et(e, "filter[")) && delete i.page, this.visitWithQueryObject(i, r, n);
+ },
+ visitWithQueryObject(e, t, r) {
+ var l;
+ typeof r > "u" && (r = true);
+ let n = {};
+ te(e, (u, c) => {
+ if (!M(u)) {
+ n[c] = u;
+ return;
+ }
+ u.length !== 0 && u.forEach((v, g) => {
+ n[`${c}[${g}]`] = v;
+ });
+ });
+ let i = "";
+ te(n, (u, c) => {
+ u === null || u === [] || (i && (i += "&"), i += `${c}=${u}`);
+ }), i && (i = "?" + i);
+ const s = this.baseUrl + i;
+ if (!r)
+ return this.stack > 0 ? void 0 : p.replaceUrlOfCurrentPage(s);
+ this.isLoading = true;
+ let a = null;
+ typeof t < "u" && t && (a = (l = document.querySelector(`[name="${t.name}"]`)) == null ? void 0 : l.value);
+ const o = this.stack > 0 ? {
+ "X-Splade-Modal": p.stackType(this.stack),
+ "X-Splade-Modal-Target": this.stack
+ } : {};
+ p.replace(s, o).then(() => {
+ this.isLoading = false, typeof t < "u" && t && vueExports.nextTick(() => {
+ const u = document.querySelector(`[name="${t.name}"]`);
+ u.focus(), a && (u.value = a);
+ });
+ });
+ },
+ async performBulkAction(e, t, r, n, i, s) {
+ typeof s > "u" && (s = false);
+ let a = null;
+ if (t)
+ try {
+ a = await p.confirm(t === true ? "" : t, r, n, i, !!s);
+ } catch {
+ return false;
+ }
+ this.isLoading = true;
+ const o = { ids: this.selectedItems };
+ if (s) {
+ const l = se(s) && s ? s : "password";
+ o[l] = a;
+ }
+ p.request(e, "POST", o, {}, false).then((l) => {
+ l.data;
+ }).catch(() => {
+ this.isLoading = false;
+ });
+ },
+ setSelectedItems(e) {
+ this.selectedItems = M(e) ? e : [];
+ },
+ itemIsSelected(e) {
+ return this.selectedItems.length == 1 && this.selectedItems[0] == "*" ? true : this.selectedItems.includes(e);
+ },
+ setSelectedItem(e, t) {
+ t ? this.selectedItems.push(e) : this.selectedItems = this.selectedItems.filter((r) => r !== e);
+ }
+ },
+ render() {
+ return this.$slots.default({
+ columnIsVisible: this.columnIsVisible,
+ columnsAreToggled: this.columnsAreToggled,
+ debounceUpdateQuery: this.debounceUpdateQuery,
+ disableSearchInput: this.disableSearchInput,
+ hasForcedVisibleSearchInputs: this.hasForcedVisibleSearchInputs,
+ isForcedVisible: this.isForcedVisible,
+ reset: this.reset,
+ showSearchInput: this.showSearchInput,
+ striped: this.striped,
+ toggleColumn: this.toggleColumn,
+ updateQuery: this.updateQuery,
+ navigate: this.navigate,
+ visit: this.visitLink,
+ totalSelectedItems: this.totalSelectedItems,
+ allItemsFromAllPagesAreSelected: this.allItemsFromAllPagesAreSelected,
+ allVisibleItemsAreSelected: this.allVisibleItemsAreSelected,
+ hasSelectedItems: this.hasSelectedItems,
+ setSelectedItems: this.setSelectedItems,
+ itemIsSelected: this.itemIsSelected,
+ setSelectedItem: this.setSelectedItem,
+ performBulkAction: this.performBulkAction,
+ processingAction: this.processingAction,
+ isLoading: this.isLoading
+ });
+ }
+}, vp = {
+ inheritAttrs: false,
+ data() {
+ return {
+ isMounted: false,
+ Teleport: vueExports.Teleport
+ };
+ },
+ /*
+ * Only render the Teleport component after this component is mounted.
+ * Otherwise, the target won't be available in the DOM yet.
+ */
+ mounted() {
+ this.isMounted = true;
+ }
+};
+function gp(e, t, r, n, i, s) {
+ return vueExports.withDirectives((vueExports.openBlock(), vueExports.createBlock(vueExports.resolveDynamicComponent(i.isMounted ? i.Teleport : "div"), vueExports.normalizeProps(vueExports.guardReactiveProps(e.$attrs)), {
+ default: vueExports.withCtx(() => [
+ vueExports.renderSlot(e.$slots, "default")
+ ]),
+ _: 3
+ }, 16)), [
+ [vueExports.vShow, i.isMounted]
+ ]);
+}
+const yp = /* @__PURE__ */ _e(vp, [["render", gp]]), bp = {
+ props: {
+ autosize: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ modelValue: {
+ type: [String, Number],
+ required: false
+ }
+ },
+ data() {
+ return {
+ autosizeInstance: null,
+ element: null
+ };
+ },
+ watch: {
+ modelValue() {
+ !this.autosize || !this.autosizeInstance || import("autosize").then((e) => {
+ vueExports.nextTick(() => e.default.update(this.element));
+ });
+ }
+ },
+ mounted() {
+ this.element = this.$refs.textarea.querySelector("textarea"), this.autosize && import("autosize").then((e) => {
+ this.autosizeInstance = e.default(this.element);
+ });
+ },
+ /*
+ * Destroy the Autsize instance to prevent memory leaks.
+ */
+ beforeUnmount() {
+ this.autosize && this.autosizeInstance && import("autosize").then((e) => {
+ e.default.destroy(this.element);
+ });
+ }
+}, wp = { ref: "textarea" };
+function Sp(e, t, r, n, i, s) {
+ return vueExports.openBlock(), vueExports.createElementBlock("div", wp, [
+ vueExports.renderSlot(e.$slots, "default")
+ ], 512);
+}
+const Op = /* @__PURE__ */ _e(bp, [["render", Sp]]), $p = {
+ props: {
+ toastKey: {
+ type: Number,
+ required: true
+ },
+ autoDismiss: {
+ type: Number,
+ required: false,
+ default: 0
+ }
+ },
+ emits: ["dismiss"],
+ data() {
+ return {
+ show: true
+ };
+ },
+ mounted() {
+ this.autoDismiss && setTimeout(() => {
+ this.setShow(false);
+ }, this.autoDismiss * 1e3);
+ },
+ methods: {
+ setShow(e) {
+ this.show = e;
+ },
+ emitDismiss() {
+ this.$emit("dismiss");
+ }
+ },
+ render() {
+ return this.$slots.default({
+ key: this.toastKey,
+ show: this.show,
+ setShow: this.setShow,
+ emitDismiss: this.emitDismiss,
+ // These HeadlessUI exports will be removed in v1.0
+ TransitionRoot: ut,
+ TransitionChild: lt
+ });
+ }
+}, Ep = [
+ "left-top",
+ "center-top",
+ "right-top",
+ "left-center",
+ "center-center",
+ "right-center",
+ "left-bottom",
+ "center-bottom",
+ "right-bottom"
+], Tp = {
+ computed: {
+ /*
+ * Retrieves the toasts from the Splade instance.
+ */
+ toasts: function() {
+ return p.toastsReversed.value;
+ },
+ /*
+ * Determine whether a backdrop should be shown.
+ */
+ hasBackdrop: function() {
+ return p.toasts.value.filter((e) => !e.dismissed && e.backdrop && e.html).length > 0;
+ }
+ },
+ methods: {
+ dismissToast(e) {
+ p.dismissToast(e);
+ }
+ },
+ render() {
+ return this.$slots.default({
+ positions: Ep,
+ toasts: this.toasts,
+ dismissToast: this.dismissToast,
+ hasBackdrop: this.hasBackdrop,
+ Render: ue,
+ // These HeadlessUI exports will be removed in v1.0
+ TransitionRoot: ut,
+ TransitionChild: lt
+ });
+ }
+}, xp = {
+ props: {
+ default: {
+ type: Object,
+ required: true
+ }
+ },
+ data() {
+ return {
+ toggles: { ...this.default }
+ };
+ },
+ methods: {
+ toggled(e) {
+ return this.toggles[e] ?? false;
+ },
+ toggle(e) {
+ this.setToggle(e, !this.toggled(e));
+ },
+ setToggle(e, t) {
+ this.toggles[e] = t;
+ }
+ },
+ render() {
+ const e = this;
+ return this.$slots.default(
+ new Proxy(
+ {},
+ {
+ ownKeys() {
+ return Object.keys(e.toggles);
+ },
+ get(t, r) {
+ const n = Object.keys(e.toggles);
+ if (n.length === 1 && cs(n) === "default") {
+ if (r === "toggled")
+ return e.toggled("default");
+ if (r === "setToggle")
+ return (i) => {
+ e.setToggle("default", i);
+ };
+ if (r === "toggle")
+ return () => {
+ e.toggle("default");
+ };
+ }
+ return r === "setToggle" ? (i, s) => {
+ e.setToggle(i, s);
+ } : r === "toggle" ? (i) => {
+ e.toggle(i);
+ } : e.toggled(r);
+ }
+ }
+ )
+ );
+ }
+}, _p = {
+ render() {
+ return this.$slots.default({
+ TransitionRoot: ut,
+ TransitionChild: lt
+ });
+ }
+}, Ip = {
+ props: {
+ backendRoute: {
+ type: String,
+ required: true
+ },
+ default: {
+ type: Object,
+ required: false,
+ default: () => ({})
+ },
+ initialInstance: {
+ type: String,
+ required: true
+ },
+ initialSignature: {
+ type: String,
+ required: true
+ },
+ methods: {
+ type: Array,
+ required: true
+ },
+ originalUrl: {
+ type: String,
+ required: true
+ },
+ verb: {
+ type: String,
+ required: true
+ }
+ },
+ emits: ["success", "error"],
+ data() {
+ return {
+ instance: this.initialInstance,
+ signature: this.initialSignature,
+ values: Object.assign({}, this.default)
+ };
+ },
+ render() {
+ const e = this, t = {
+ props: new Proxy(this.values, {
+ ownKeys: function() {
+ return Object.keys(e.values);
+ },
+ get: (r, n) => be(e.values, n),
+ set: (r, n, i) => {
+ St(e.values, n, i);
+ }
+ })
+ };
+ return this.methods.forEach((r) => {
+ t[r] = async (...n) => {
+ n.length === 1 && be(n, "0._vts") && (n = []);
+ let i = null;
+ try {
+ i = await ne.post(this.backendRoute, {
+ instance: this.instance,
+ signature: this.signature,
+ url: this.originalUrl,
+ verb: this.verb,
+ props: this.values,
+ method: r,
+ data: n
+ }, { headers: {
+ "X-Requested-With": "XMLHttpRequest",
+ Accept: "text/html, application/xhtml+xml"
+ } }), this.$emit("success", i.data);
+ } catch (s) {
+ this.$emit("error", s.response.data), p.onServerError(s.response.data);
+ return;
+ }
+ return this.instance = i.data.instance, this.signature = i.data.signature, te(i.data.data, (s, a) => {
+ St(this.values, a, s);
+ }), i.data.redirect ? p.visit(i.data.redirect) : (i.data.toasts.forEach((s) => {
+ p.pushToast(s);
+ }), i.data.result);
+ };
+ }), this.$slots.default(t);
+ }
+}, Ap = {
+ created: (e, t) => {
+ if (p.isSsr)
+ return;
+ const r = `preserveScroll-${t.arg}`, n = p.restore(r);
+ n && vueExports.nextTick(() => {
+ typeof e.scrollTo == "function" ? e.scrollTo(n.left, n.top) : (e.scrollTop = n.top, e.scrollLeft = n.left);
+ });
+ const i = function() {
+ p.remember(r, {
+ top: e.scrollTop,
+ left: e.scrollLeft
+ });
+ };
+ e.addEventListener("scroll", er(i, 100)), i();
+ }
+}, Cr = {
+ /**
+ * Inject the default Progress Bar CSS into the HTML Head.
+ */
+ injectCSS(e) {
+ const t = document.createElement("style");
+ t.type = "text/css", t.textContent = `
+ #nprogress {
+ pointer-events: none;
+ }
+ #nprogress .bar {
+ background: ${e};
+ position: fixed;
+ z-index: 1031;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 2px;
+ }
+ #nprogress .peg {
+ display: block;
+ position: absolute;
+ right: 0px;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px ${e}, 0 0 5px ${e};
+ opacity: 1.0;
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+ }
+ #nprogress .spinner {
+ display: block;
+ position: fixed;
+ z-index: 1031;
+ top: 15px;
+ right: 15px;
+ }
+ #nprogress .spinner-icon {
+ width: 18px;
+ height: 18px;
+ box-sizing: border-box;
+ border: solid 2px transparent;
+ border-top-color: ${e};
+ border-left-color: ${e};
+ border-radius: 50%;
+ -webkit-animation: nprogress-spinner 400ms linear infinite;
+ animation: nprogress-spinner 400ms linear infinite;
+ }
+ .nprogress-custom-parent {
+ overflow: hidden;
+ position: relative;
+ }
+ .nprogress-custom-parent #nprogress .spinner,
+ .nprogress-custom-parent #nprogress .bar {
+ position: absolute;
+ }
+ @-webkit-keyframes nprogress-spinner {
+ 0% { -webkit-transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(360deg); }
+ }
+ @keyframes nprogress-spinner {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+ }
+ `, document.head.appendChild(t);
+ },
+ timeout: null,
+ /**
+ * Starts the progress bar with the configured timeout.
+ */
+ start(e, t, r) {
+ Cr.timeout = setTimeout(() => r.start(), t);
+ },
+ /**
+ * Updates the progress bar to the percentage from the event.
+ */
+ progress(e, t) {
+ t.isStarted() && e.detail.progress.percentage && t.set(Math.max(t.status, e.detail.progress.percentage / 100 * 0.9));
+ },
+ /**
+ * Clears the timeout and hides the bar.
+ */
+ stop(e, t) {
+ clearTimeout(Cr.timeout), t.done(), t.remove();
+ },
+ /**
+ * Initializes the progress bar and registers event listeners for Splade request events.
+ */
+ init(e) {
+ const t = this;
+ import("nprogress").then((r) => {
+ let n = 0;
+ document.addEventListener("splade:internal:request", (s) => {
+ n++, n === 1 && t.start(s, e.delay, r.default);
+ });
+ const i = (s) => {
+ n--, n === 0 ? t.stop(s, r.default) : n < 0 && (n = 0);
+ };
+ document.addEventListener("splade:internal:request-progress", (s) => t.progress(s, r.default)), document.addEventListener("splade:internal:request-response", (s) => i(s)), document.addEventListener("splade:internal:request-error", (s) => i(s)), r.default.configure({ showSpinner: e.spinner }), e.css && this.injectCSS(e.color);
+ });
+ }
+}, Fp = {
+ /**
+ * Registers all Splade components and makes the configured
+ * options and the Splade core globally available.
+ */
+ install: (e, t) => {
+ t = t || {}, t.max_keep_alive = W(t, "max_keep_alive") ? t.max_keep_alive : 10, t.prefix = W(t, "prefix") ? t.prefix : "Splade", t.transform_anchors = W(t, "transform_anchors") ? t.transform_anchors : false, t.link_component = W(t, "link_component") ? t.link_component : "Link", t.progress_bar = W(t, "progress_bar") ? t.progress_bar : false, t.components = W(t, "components") ? t.components : {}, t.view_transitions = W(t, "view_transitions") ? t.view_transitions : false, t.suppress_compile_errors = W(t, "suppress_compile_errors") ? t.suppress_compile_errors : false;
+ const r = t.prefix;
+ if (e.component(`${r}Button`, Ul).component(`${r}Confirm`, Bu).component(`${r}DataStores`, Uu).component(`${r}Data`, Hu).component(`${r}Defer`, nc).component(`${r}Dialog`, ic).component(`${r}Dropdown`, ud).component(`${r}DynamicHtml`, cd).component(`${r}Errors`, dd).component(`${r}Event`, fd).component(`${r}File`, Bf).component(`${r}Flash`, jf).component(`${r}Form`, Df).component(`${r}Input`, Uf).component(`${r}JoditEditor`, Xf).component(`${r}VueBridge`, Ip).component(`${r}Lazy`, Qf).component(`${r}Modal`, ep).component(`${r}OnClickOutside`, rs).component(`${r}PreloadedModal`, tp).component(`${r}Rehydrate`, ip).component(`${r}Render`, ue).component(`${r}Script`, sp).component(`${r}Select`, cp).component(`${r}State`, dp).component(`${r}Table`, mp).component(`${r}Teleport`, yp).component(`${r}Textarea`, Op).component(`${r}Toast`, $p).component(`${r}Toasts`, Tp).component(`${r}Toggle`, xp).component(`${r}Transition`, _p).component(t.link_component, Zf).directive(`${r}PreserveScroll`, Ap), Object.defineProperty(e.config.globalProperties, "$splade", { get: () => p }), Object.defineProperty(e.config.globalProperties, "$spladeOptions", { get: () => Object.assign({}, { ...t }) }), e.provide("$splade", e.config.globalProperties.$splade), e.provide("$spladeOptions", e.config.globalProperties.$spladeOptions), t.progress_bar) {
+ const n = {
+ delay: 250,
+ color: "#4B5563",
+ css: true,
+ spinner: false
+ };
+ J(t.progress_bar) || (t.progress_bar = {}), ["delay", "color", "css", "spinner"].forEach((i) => {
+ W(t.progress_bar, i) || (t.progress_bar[i] = n[i]);
+ }), Cr.init(t.progress_bar);
+ }
+ t.suppress_compile_errors && (e.config.compilerOptions.onError = (n) => {
+ import("./assets/CompilerErrorMessages-6b34f14b-6b34f14b.mjs").then((i) => {
+ console.error({
+ message: i.default[n.code] || "Unknown compiler error",
+ lineNumber: n.lineNumber,
+ compileError: n
+ });
+ });
+ }), te(t.components, (n, i) => {
+ e.component(i, n);
+ });
+ }
+};
+function kp(e, t, r) {
+ const n = {};
+ process.argv.slice(2).forEach((s) => {
+ const a = s.replace(/^-+/, "").split("=");
+ n[a[0]] = a.length === 2 ? a[1] : true;
+ });
+ const i = n.port || 9e3;
+ e(async (s, a) => {
+ if (s.method == "POST") {
+ let o = "";
+ s.on("data", (l) => o += l), s.on("end", async () => {
+ const l = JSON.parse(o), u = r({
+ components: l.components,
+ initialDynamics: l.dynamics,
+ initialHtml: l.html,
+ initialSpladeData: l.splade
+ }), c = await t(u);
+ a.writeHead(200, { "Content-Type": "application/json", Server: "Splade SSR" }), a.write(JSON.stringify({ body: c })), a.end();
+ });
+ }
+ }).listen(i, () => console.log(`Splade SSR server started on port ${i}.`));
+}
+kp(createServer, renderToString, (props) => {
+ return vueExports.createSSRApp({
+ render: Cp(props)
+ }).use(Fp);
+});
diff --git a/composer.json b/composer.json
index 8851edc..6234683 100644
--- a/composer.json
+++ b/composer.json
@@ -1,13 +1,24 @@
{
- "name": "laravel/laravel",
+ "name": "tomatophp/tomato",
"type": "project",
- "description": "The skeleton application for the Laravel framework.",
- "keywords": ["laravel", "framework"],
+ "description": "TomatoPHP is built to make it easy to develop web apps and API by generating files of CRUD operations and support helpers of tonnes of functions to make it easy to manage and use framework services.",
+ "keywords": [
+ "framework",
+ "laravel",
+ "splade",
+ "tomato",
+ "blade",
+ "vuejs"
+ ],
"license": "MIT",
"require": {
"php": "^8.2",
+ "ext-bcmath": "*",
+ "ext-sqlite3": "*",
"laravel/framework": "^11.0",
- "laravel/tinker": "^2.9"
+ "laravel/tinker": "^2.9",
+ "tomatophp/tomato-admin": "^1.2",
+ "tomatophp/tomato-translations": "^1.2"
},
"require-dev": {
"fakerphp/faker": "^1.23",
@@ -28,7 +39,8 @@
},
"autoload-dev": {
"psr-4": {
- "Tests\\": "tests/"
+ "Tests\\": "tests/",
+ "Modules\\" : "Modules/"
}
},
"scripts": {
diff --git a/composer.lock b/composer.lock
index 735ee6d..61e13c3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,212 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "fc988501b10afbbcc9a565db47aa7499",
+ "content-hash": "2c884d420ba8183c7d533bff9d293e26",
"packages": [
+ {
+ "name": "bacon/bacon-qr-code",
+ "version": "2.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Bacon/BaconQrCode.git",
+ "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22",
+ "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22",
+ "shasum": ""
+ },
+ "require": {
+ "dasprid/enum": "^1.0.3",
+ "ext-iconv": "*",
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "phly/keep-a-changelog": "^2.1",
+ "phpunit/phpunit": "^7 | ^8 | ^9",
+ "spatie/phpunit-snapshot-assertions": "^4.2.9",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "suggest": {
+ "ext-imagick": "to generate QR code images"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "BaconQrCode\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Ben Scholzen 'DASPRiD'",
+ "email": "mail@dasprids.de",
+ "homepage": "https://dasprids.de/",
+ "role": "Developer"
+ }
+ ],
+ "description": "BaconQrCode is a QR code generator for PHP.",
+ "homepage": "https://github.com/Bacon/BaconQrCode",
+ "support": {
+ "issues": "https://github.com/Bacon/BaconQrCode/issues",
+ "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8"
+ },
+ "time": "2022-12-07T17:46:57+00:00"
+ },
+ {
+ "name": "blade-ui-kit/blade-heroicons",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/blade-ui-kit/blade-heroicons.git",
+ "reference": "a265dbcf2a098121aad05752d0bba9f59022e4ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/a265dbcf2a098121aad05752d0bba9f59022e4ba",
+ "reference": "a265dbcf2a098121aad05752d0bba9f59022e4ba",
+ "shasum": ""
+ },
+ "require": {
+ "blade-ui-kit/blade-icons": "^1.6",
+ "illuminate/support": "^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "BladeUI\\Heroicons\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "description": "A package to easily make use of Heroicons in your Laravel Blade views.",
+ "homepage": "https://github.com/blade-ui-kit/blade-heroicons",
+ "keywords": [
+ "Heroicons",
+ "blade",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/blade-ui-kit/blade-heroicons/issues",
+ "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/driesvints",
+ "type": "github"
+ },
+ {
+ "url": "https://www.paypal.com/paypalme/driesvints",
+ "type": "paypal"
+ }
+ ],
+ "time": "2024-02-07T16:33:46+00:00"
+ },
+ {
+ "name": "blade-ui-kit/blade-icons",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/blade-ui-kit/blade-icons.git",
+ "reference": "89660d93f9897d231e9113ba203cd17f4c5efade"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/89660d93f9897d231e9113ba203cd17f4c5efade",
+ "reference": "89660d93f9897d231e9113ba203cd17f4c5efade",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/view": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^7.4|^8.0",
+ "symfony/console": "^5.3|^6.0|^7.0",
+ "symfony/finder": "^5.3|^6.0|^7.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5.1",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^9.0|^10.5|^11.0"
+ },
+ "bin": [
+ "bin/blade-icons-generate"
+ ],
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "BladeUI\\Icons\\BladeIconsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "BladeUI\\Icons\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dries Vints",
+ "homepage": "https://driesvints.com"
+ }
+ ],
+ "description": "A package to easily make use of icons in your Laravel Blade views.",
+ "homepage": "https://github.com/blade-ui-kit/blade-icons",
+ "keywords": [
+ "blade",
+ "icons",
+ "laravel",
+ "svg"
+ ],
+ "support": {
+ "issues": "https://github.com/blade-ui-kit/blade-icons/issues",
+ "source": "https://github.com/blade-ui-kit/blade-icons"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/driesvints",
+ "type": "github"
+ },
+ {
+ "url": "https://www.paypal.com/paypalme/driesvints",
+ "type": "paypal"
+ }
+ ],
+ "time": "2024-02-07T16:09:20+00:00"
+ },
{
"name": "brick/math",
"version": "0.11.0",
@@ -61,6 +265,59 @@
],
"time": "2023-01-15T23:15:59+00:00"
},
+ {
+ "name": "calebporzio/sushi",
+ "version": "v2.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/calebporzio/sushi.git",
+ "reference": "20aad4e9d9ea74df64a86f6d327e55bdfc92d204"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/calebporzio/sushi/zipball/20aad4e9d9ea74df64a86f6d327e55bdfc92d204",
+ "reference": "20aad4e9d9ea74df64a86f6d327e55bdfc92d204",
+ "shasum": ""
+ },
+ "require": {
+ "ext-sqlite3": "*",
+ "illuminate/database": "^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "illuminate/support": "^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0",
+ "php": "^7.1.3|^8.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.9 || ^3.1.4",
+ "orchestra/testbench": "3.8.* || 3.9.* || ^4.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0",
+ "phpunit/phpunit": "^7.5 || ^8.4 || ^9.0 || ^10.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Sushi\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Caleb Porzio",
+ "email": "calebporzio@gmail.com"
+ }
+ ],
+ "description": "Eloquent's missing \"array\" driver.",
+ "support": {
+ "source": "https://github.com/calebporzio/sushi/tree/v2.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/calebporzio",
+ "type": "github"
+ }
+ ],
+ "time": "2024-02-05T14:40:50+00:00"
+ },
{
"name": "carbonphp/carbon-doctrine-types",
"version": "3.2.0",
@@ -130,6 +387,137 @@
],
"time": "2024-02-09T16:56:22+00:00"
},
+ {
+ "name": "composer/semver",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "ircs://irc.libera.chat:6697/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-08-31T09:50:34+00:00"
+ },
+ {
+ "name": "dasprid/enum",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/DASPRiD/Enum.git",
+ "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016",
+ "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1 <9.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7 | ^8 | ^9",
+ "squizlabs/php_codesniffer": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DASPRiD\\Enum\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Ben Scholzen 'DASPRiD'",
+ "email": "mail@dasprids.de",
+ "homepage": "https://dasprids.de/",
+ "role": "Developer"
+ }
+ ],
+ "description": "PHP 7.1 enum implementation",
+ "keywords": [
+ "enum",
+ "map"
+ ],
+ "support": {
+ "issues": "https://github.com/DASPRiD/Enum/issues",
+ "source": "https://github.com/DASPRiD/Enum/tree/1.0.5"
+ },
+ "time": "2023-08-25T16:18:39+00:00"
+ },
{
"name": "dflydev/dot-access-data",
"version": "v3.0.2",
@@ -502,22 +890,146 @@
"time": "2023-10-06T06:47:41+00:00"
},
{
- "name": "fruitcake/php-cors",
- "version": "v1.3.0",
+ "name": "ezyang/htmlpurifier",
+ "version": "v4.17.0",
"source": {
"type": "git",
- "url": "https://github.com/fruitcake/php-cors.git",
- "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b"
+ "url": "https://github.com/ezyang/htmlpurifier.git",
+ "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b",
- "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c",
+ "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c",
"shasum": ""
},
"require": {
- "php": "^7.4|^8.0",
- "symfony/http-foundation": "^4.4|^5.4|^6|^7"
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+ },
+ "require-dev": {
+ "cerdic/css-tidy": "^1.7 || ^2.0",
+ "simpletest/simpletest": "dev-master"
+ },
+ "suggest": {
+ "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
+ "ext-bcmath": "Used for unit conversion and imagecrash protection",
+ "ext-iconv": "Converts text to and from non-UTF-8 encodings",
+ "ext-tidy": "Used for pretty-printing HTML"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "library/HTMLPurifier.composer.php"
+ ],
+ "psr-0": {
+ "HTMLPurifier": "library/"
+ },
+ "exclude-from-classmap": [
+ "/library/HTMLPurifier/Language/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Edward Z. Yang",
+ "email": "admin@htmlpurifier.org",
+ "homepage": "http://ezyang.com"
+ }
+ ],
+ "description": "Standards compliant HTML filter written in PHP",
+ "homepage": "http://htmlpurifier.org/",
+ "keywords": [
+ "html"
+ ],
+ "support": {
+ "issues": "https://github.com/ezyang/htmlpurifier/issues",
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0"
+ },
+ "time": "2023-11-17T15:01:25+00:00"
+ },
+ {
+ "name": "firebase/php-jwt",
+ "version": "v6.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/firebase/php-jwt.git",
+ "reference": "a49db6f0a5033aef5143295342f1c95521b075ff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/firebase/php-jwt/zipball/a49db6f0a5033aef5143295342f1c95521b075ff",
+ "reference": "a49db6f0a5033aef5143295342f1c95521b075ff",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4||^8.0"
+ },
+ "require-dev": {
+ "guzzlehttp/guzzle": "^6.5||^7.4",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.5",
+ "psr/cache": "^1.0||^2.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0"
+ },
+ "suggest": {
+ "ext-sodium": "Support EdDSA (Ed25519) signatures",
+ "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Firebase\\JWT\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Neuman Vong",
+ "email": "neuman+pear@twilio.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Anant Narayanan",
+ "email": "anant@php.net",
+ "role": "Developer"
+ }
+ ],
+ "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
+ "homepage": "https://github.com/firebase/php-jwt",
+ "keywords": [
+ "jwt",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/firebase/php-jwt/issues",
+ "source": "https://github.com/firebase/php-jwt/tree/v6.10.0"
+ },
+ "time": "2023-12-01T16:26:39+00:00"
+ },
+ {
+ "name": "fruitcake/php-cors",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruitcake/php-cors.git",
+ "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b",
+ "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4|^8.0",
+ "symfony/http-foundation": "^4.4|^5.4|^6|^7"
},
"require-dev": {
"phpstan/phpstan": "^1.4",
@@ -573,425 +1085,451 @@
"time": "2023-10-12T05:21:21+00:00"
},
{
- "name": "graham-campbell/result-type",
- "version": "v1.1.2",
+ "name": "google/auth",
+ "version": "v1.37.1",
"source": {
"type": "git",
- "url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862"
+ "url": "https://github.com/googleapis/google-auth-library-php.git",
+ "reference": "1a7de77b72e6ac60dccf0e6478c4c1005bb0ff46"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862",
- "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862",
+ "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/1a7de77b72e6ac60dccf0e6478c4c1005bb0ff46",
+ "reference": "1a7de77b72e6ac60dccf0e6478c4c1005bb0ff46",
"shasum": ""
},
"require": {
- "php": "^7.2.5 || ^8.0",
- "phpoption/phpoption": "^1.9.2"
+ "firebase/php-jwt": "^6.0",
+ "guzzlehttp/guzzle": "^6.5.8||^7.4.5",
+ "guzzlehttp/psr7": "^2.4.5",
+ "php": "^7.4||^8.0",
+ "psr/cache": "^1.0||^2.0||^3.0",
+ "psr/http-message": "^1.1||^2.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+ "guzzlehttp/promises": "^2.0",
+ "kelvinmo/simplejwt": "0.7.1",
+ "phpseclib/phpseclib": "^3.0",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.0.0",
+ "sebastian/comparator": ">=1.2.3",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "suggest": {
+ "phpseclib/phpseclib": "May be used in place of OpenSSL for signing strings or for token management. Please require version ^2."
},
"type": "library",
"autoload": {
"psr-4": {
- "GrahamCampbell\\ResultType\\": "src/"
+ "Google\\Auth\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- }
+ "Apache-2.0"
],
- "description": "An Implementation Of The Result Type",
+ "description": "Google Auth Library for PHP",
+ "homepage": "http://github.com/google/google-auth-library-php",
"keywords": [
- "Graham Campbell",
- "GrahamCampbell",
- "Result Type",
- "Result-Type",
- "result"
+ "Authentication",
+ "google",
+ "oauth2"
],
"support": {
- "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2"
+ "docs": "https://googleapis.github.io/google-auth-library-php/main/",
+ "issues": "https://github.com/googleapis/google-auth-library-php/issues",
+ "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.37.1"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
- "type": "tidelift"
- }
- ],
- "time": "2023-11-12T22:16:48+00:00"
+ "time": "2024-04-03T18:41:12+00:00"
},
{
- "name": "guzzlehttp/guzzle",
- "version": "7.8.1",
+ "name": "google/cloud-core",
+ "version": "v1.58.0",
"source": {
"type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "41042bc7ab002487b876a0683fc8dce04ddce104"
+ "url": "https://github.com/googleapis/google-cloud-php-core.git",
+ "reference": "2ea91dab93f9281c97e28691c0d9d806c5b61359"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104",
- "reference": "41042bc7ab002487b876a0683fc8dce04ddce104",
+ "url": "https://api.github.com/repos/googleapis/google-cloud-php-core/zipball/2ea91dab93f9281c97e28691c0d9d806c5b61359",
+ "reference": "2ea91dab93f9281c97e28691c0d9d806c5b61359",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
- "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
- "php": "^7.2.5 || ^8.0",
- "psr/http-client": "^1.0",
- "symfony/deprecation-contracts": "^2.2 || ^3.0"
- },
- "provide": {
- "psr/http-client-implementation": "1.0"
+ "google/auth": "^1.34",
+ "google/gax": "^1.30",
+ "guzzlehttp/guzzle": "^6.5.8|^7.4.4",
+ "guzzlehttp/promises": "^1.4||^2.0",
+ "guzzlehttp/psr7": "^2.6",
+ "monolog/monolog": "^2.9|^3.0",
+ "php": "^8.0",
+ "psr/http-message": "^1.0|^2.0",
+ "rize/uri-template": "~0.3"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "ext-curl": "*",
- "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
- "php-http/message-factory": "^1.1",
- "phpunit/phpunit": "^8.5.36 || ^9.6.15",
- "psr/log": "^1.1 || ^2.0 || ^3.0"
+ "erusev/parsedown": "^1.6",
+ "google/cloud-common-protos": "~0.5",
+ "opis/closure": "^3",
+ "phpdocumentor/reflection": "^5.3.3",
+ "phpdocumentor/reflection-docblock": "^5.3",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.0",
+ "squizlabs/php_codesniffer": "2.*"
},
"suggest": {
- "ext-curl": "Required for CURL handler support",
- "ext-intl": "Required for Internationalized Domain Name (IDN) support",
- "psr/log": "Required for using the Log middleware"
+ "opis/closure": "May be used to serialize closures to process jobs in the batch daemon. Please require version ^3.",
+ "symfony/lock": "Required for the Spanner cached based session pool. Please require the following commit: 3.3.x-dev#1ba6ac9"
},
+ "bin": [
+ "bin/google-cloud-batch"
+ ],
"type": "library",
"extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
+ "component": {
+ "id": "cloud-core",
+ "target": "googleapis/google-cloud-php-core.git",
+ "path": "Core",
+ "entry": "src/ServiceBuilder.php"
}
},
"autoload": {
- "files": [
- "src/functions_include.php"
- ],
"psr-4": {
- "GuzzleHttp\\": "src/"
+ "Google\\Cloud\\Core\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Jeremy Lindblom",
- "email": "jeremeamia@gmail.com",
- "homepage": "https://github.com/jeremeamia"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "psr-18",
- "psr-7",
- "rest",
- "web service"
+ "Apache-2.0"
],
+ "description": "Google Cloud PHP shared dependency, providing functionality useful to all components.",
"support": {
- "issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.8.1"
+ "source": "https://github.com/googleapis/google-cloud-php-core/tree/v1.58.0"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
- "type": "tidelift"
- }
- ],
- "time": "2023-12-03T20:35:24+00:00"
+ "time": "2024-04-19T22:39:11+00:00"
},
{
- "name": "guzzlehttp/promises",
- "version": "2.0.2",
+ "name": "google/cloud-translate",
+ "version": "v1.17.5",
"source": {
"type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
+ "url": "https://github.com/googleapis/google-cloud-php-translate.git",
+ "reference": "64a61041a5fed98a36c1b3ddd2b32ed554992776"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
- "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
+ "url": "https://api.github.com/repos/googleapis/google-cloud-php-translate/zipball/64a61041a5fed98a36c1b3ddd2b32ed554992776",
+ "reference": "64a61041a5fed98a36c1b3ddd2b32ed554992776",
"shasum": ""
},
"require": {
- "php": "^7.2.5 || ^8.0"
+ "google/cloud-core": "^1.52.7",
+ "google/gax": "^1.30",
+ "php": "^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.36 || ^9.6.15"
+ "erusev/parsedown": "^1.6",
+ "phpdocumentor/reflection": "^5.3.3",
+ "phpdocumentor/reflection-docblock": "^5.3",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.0",
+ "squizlabs/php_codesniffer": "2.*"
+ },
+ "suggest": {
+ "ext-grpc": "The gRPC extension enables use of the performant gRPC transport",
+ "ext-protobuf": "Provides a significant increase in throughput over the pure PHP protobuf implementation. See https://cloud.google.com/php/grpc for installation instructions."
},
"type": "library",
"extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
+ "component": {
+ "id": "cloud-translate",
+ "target": "googleapis/google-cloud-php-translate.git",
+ "path": "Translate",
+ "entry": "src/TranslateClient.php"
}
},
"autoload": {
"psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
+ "Google\\Cloud\\Translate\\": "src",
+ "GPBMetadata\\Google\\Cloud\\Translate\\": "metadata"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "Apache-2.0"
],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
+ "description": "Cloud Translation Client for PHP",
+ "support": {
+ "source": "https://github.com/googleapis/google-cloud-php-translate/tree/v1.17.5"
+ },
+ "time": "2024-04-19T22:39:11+00:00"
+ },
+ {
+ "name": "google/common-protos",
+ "version": "v4.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/googleapis/common-protos-php.git",
+ "reference": "f8588298a0a204aef2db15ce501530e476ec883f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/googleapis/common-protos-php/zipball/f8588298a0a204aef2db15ce501530e476ec883f",
+ "reference": "f8588298a0a204aef2db15ce501530e476ec883f",
+ "shasum": ""
+ },
+ "require": {
+ "google/protobuf": "^v3.25.3||^4.26.1",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Google\\Api\\": "src/Api",
+ "Google\\Iam\\": "src/Iam",
+ "Google\\Rpc\\": "src/Rpc",
+ "Google\\Type\\": "src/Type",
+ "Google\\Cloud\\": "src/Cloud",
+ "GPBMetadata\\Google\\Api\\": "metadata/Api",
+ "GPBMetadata\\Google\\Iam\\": "metadata/Iam",
+ "GPBMetadata\\Google\\Rpc\\": "metadata/Rpc",
+ "GPBMetadata\\Google\\Type\\": "metadata/Type",
+ "GPBMetadata\\Google\\Cloud\\": "metadata/Cloud",
+ "GPBMetadata\\Google\\Logging\\": "metadata/Logging"
}
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
],
- "description": "Guzzle promises library",
+ "description": "Google API Common Protos for PHP",
+ "homepage": "https://github.com/googleapis/common-protos-php",
"keywords": [
- "promise"
+ "google"
],
"support": {
- "issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/2.0.2"
+ "issues": "https://github.com/googleapis/common-protos-php/issues",
+ "source": "https://github.com/googleapis/common-protos-php/tree/v4.6.0"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
- "type": "tidelift"
+ "time": "2024-04-03T19:11:54+00:00"
+ },
+ {
+ "name": "google/gax",
+ "version": "v1.31.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/googleapis/gax-php.git",
+ "reference": "35cc3d3633b4ba6099543aa79d87945e14218cdf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/googleapis/gax-php/zipball/35cc3d3633b4ba6099543aa79d87945e14218cdf",
+ "reference": "35cc3d3633b4ba6099543aa79d87945e14218cdf",
+ "shasum": ""
+ },
+ "require": {
+ "google/auth": "^1.34.0",
+ "google/common-protos": "^4.4",
+ "google/grpc-gcp": "^0.4",
+ "google/longrunning": "~0.2",
+ "google/protobuf": "^v3.25.3||^4.26.1",
+ "grpc/grpc": "^1.13",
+ "guzzlehttp/promises": "^2.0",
+ "guzzlehttp/psr7": "^2.0",
+ "php": "^8.0",
+ "ramsey/uuid": "^4.0"
+ },
+ "conflict": {
+ "ext-protobuf": "<3.7.0"
+ },
+ "require-dev": {
+ "phpspec/prophecy-phpunit": "^2.1",
+ "phpunit/phpunit": "^9.6",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Google\\ApiCore\\": "src",
+ "GPBMetadata\\ApiCore\\": "metadata/ApiCore"
}
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
],
- "time": "2023-12-03T20:19:20+00:00"
+ "description": "Google API Core for PHP",
+ "homepage": "https://github.com/googleapis/gax-php",
+ "keywords": [
+ "google"
+ ],
+ "support": {
+ "issues": "https://github.com/googleapis/gax-php/issues",
+ "source": "https://github.com/googleapis/gax-php/tree/v1.31.0"
+ },
+ "time": "2024-04-22T14:29:53+00:00"
},
{
- "name": "guzzlehttp/psr7",
- "version": "2.6.2",
+ "name": "google/grpc-gcp",
+ "version": "v0.4.0",
"source": {
"type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221"
+ "url": "https://github.com/GoogleCloudPlatform/grpc-gcp-php.git",
+ "reference": "2a80dbf690922aa52bb6bb79b9a32a9637a5c2d9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221",
- "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221",
+ "url": "https://api.github.com/repos/GoogleCloudPlatform/grpc-gcp-php/zipball/2a80dbf690922aa52bb6bb79b9a32a9637a5c2d9",
+ "reference": "2a80dbf690922aa52bb6bb79b9a32a9637a5c2d9",
"shasum": ""
},
"require": {
- "php": "^7.2.5 || ^8.0",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.1 || ^2.0",
- "ralouphie/getallheaders": "^3.0"
- },
- "provide": {
- "psr/http-factory-implementation": "1.0",
- "psr/http-message-implementation": "1.0"
+ "google/auth": "^1.3",
+ "google/protobuf": "^v3.25.3||^4.26.1",
+ "grpc/grpc": "^v1.13.0",
+ "php": "^8.0",
+ "psr/cache": "^1.0.1||^2.0.0||^3.0.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "http-interop/http-factory-tests": "^0.9",
- "phpunit/phpunit": "^8.5.36 || ^9.6.15"
+ "google/cloud-spanner": "^1.7",
+ "phpunit/phpunit": "^9.0"
},
- "suggest": {
- "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Grpc\\Gcp\\": "src/"
+ },
+ "classmap": [
+ "src/generated/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "description": "gRPC GCP library for channel management",
+ "support": {
+ "issues": "https://github.com/GoogleCloudPlatform/grpc-gcp-php/issues",
+ "source": "https://github.com/GoogleCloudPlatform/grpc-gcp-php/tree/v0.4.0"
+ },
+ "time": "2024-04-03T16:37:55+00:00"
+ },
+ {
+ "name": "google/longrunning",
+ "version": "0.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/googleapis/php-longrunning.git",
+ "reference": "67b80d36df06eaf5000fea010c77307e72fa0985"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/googleapis/php-longrunning/zipball/67b80d36df06eaf5000fea010c77307e72fa0985",
+ "reference": "67b80d36df06eaf5000fea010c77307e72fa0985",
+ "shasum": ""
+ },
+ "require-dev": {
+ "google/gax": "^1.30",
+ "phpunit/phpunit": "^9.0"
},
"type": "library",
"extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
+ "component": {
+ "id": "longrunning",
+ "path": "LongRunning",
+ "entry": null,
+ "target": "googleapis/php-longrunning"
}
},
"autoload": {
"psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
+ "Google\\LongRunning\\": "src/LongRunning",
+ "Google\\ApiCore\\LongRunning\\": "src/ApiCore/LongRunning",
+ "GPBMetadata\\Google\\Longrunning\\": "metadata/Longrunning"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "Apache-2.0"
],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://sagikazarmark.hu"
+ "description": "Google LongRunning Client for PHP",
+ "support": {
+ "source": "https://github.com/googleapis/php-longrunning/tree/v0.4.1"
+ },
+ "time": "2024-04-19T22:39:11+00:00"
+ },
+ {
+ "name": "google/protobuf",
+ "version": "v4.26.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/protocolbuffers/protobuf-php.git",
+ "reference": "5c46b0eb09e7ad3e6efef3c5a85e2a34108c52ae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/5c46b0eb09e7ad3e6efef3c5a85e2a34108c52ae",
+ "reference": "5c46b0eb09e7ad3e6efef3c5a85e2a34108c52ae",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=5.0.0"
+ },
+ "suggest": {
+ "ext-bcmath": "Need to support JSON deserialization"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Google\\Protobuf\\": "src/Google/Protobuf",
+ "GPBMetadata\\Google\\Protobuf\\": "src/GPBMetadata/Google/Protobuf"
}
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
],
- "description": "PSR-7 message implementation that also provides common utility methods",
+ "description": "proto library for PHP",
+ "homepage": "https://developers.google.com/protocol-buffers/",
"keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
+ "proto"
],
"support": {
- "issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.6.2"
+ "source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.26.1"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
- "type": "tidelift"
- }
- ],
- "time": "2023-12-03T20:05:35+00:00"
+ "time": "2024-03-27T19:56:50+00:00"
},
{
- "name": "guzzlehttp/uri-template",
- "version": "v1.0.3",
+ "name": "graham-campbell/result-type",
+ "version": "v1.1.2",
"source": {
"type": "git",
- "url": "https://github.com/guzzle/uri-template.git",
- "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c"
+ "url": "https://github.com/GrahamCampbell/Result-Type.git",
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c",
- "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862",
+ "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
- "symfony/polyfill-php80": "^1.24"
+ "phpoption/phpoption": "^1.9.2"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.36 || ^9.6.15",
- "uri-template/tests": "1.0.0"
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
},
"type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- }
- },
"autoload": {
"psr-4": {
- "GuzzleHttp\\UriTemplate\\": "src"
+ "GrahamCampbell\\ResultType\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1003,31 +1541,185 @@
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
}
],
- "description": "A polyfill class for uri_template of PHP",
+ "description": "An Implementation Of The Result Type",
"keywords": [
- "guzzlehttp",
- "uri-template"
+ "Graham Campbell",
+ "GrahamCampbell",
+ "Result Type",
+ "Result-Type",
+ "result"
],
"support": {
- "issues": "https://github.com/guzzle/uri-template/issues",
- "source": "https://github.com/guzzle/uri-template/tree/v1.0.3"
+ "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-11-12T22:16:48+00:00"
+ },
+ {
+ "name": "grpc/grpc",
+ "version": "1.57.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/grpc/grpc-php.git",
+ "reference": "b610c42022ed3a22f831439cb93802f2a4502fdf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/grpc/grpc-php/zipball/b610c42022ed3a22f831439cb93802f2a4502fdf",
+ "reference": "b610c42022ed3a22f831439cb93802f2a4502fdf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "google/auth": "^v1.3.0"
+ },
+ "suggest": {
+ "ext-protobuf": "For better performance, install the protobuf C extension.",
+ "google/protobuf": "To get started using grpc quickly, install the native protobuf library."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Grpc\\": "src/lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "description": "gRPC library for PHP",
+ "homepage": "https://grpc.io",
+ "keywords": [
+ "rpc"
+ ],
+ "support": {
+ "source": "https://github.com/grpc/grpc-php/tree/v1.57.0"
+ },
+ "time": "2023-08-14T23:57:54+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "7.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "41042bc7ab002487b876a0683fc8dce04ddce104"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104",
+ "reference": "41042bc7ab002487b876a0683fc8dce04ddce104",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
+ "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0",
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "ext-curl": "*",
+ "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
+ "php-http/message-factory": "^1.1",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
+ },
+ "suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Jeremy Lindblom",
+ "email": "jeremeamia@gmail.com",
+ "homepage": "https://github.com/jeremeamia"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "psr-18",
+ "psr-7",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/7.8.1"
},
"funding": [
{
@@ -1039,97 +1731,509 @@
"type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template",
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
"type": "tidelift"
}
],
- "time": "2023-12-03T19:50:20+00:00"
+ "time": "2023-12-03T20:35:24+00:00"
},
{
- "name": "laravel/framework",
- "version": "v11.5.0",
+ "name": "guzzlehttp/promises",
+ "version": "2.0.2",
"source": {
"type": "git",
- "url": "https://github.com/laravel/framework.git",
- "reference": "e3c24268f1404805e15099b9f035fe310cb30753"
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/e3c24268f1404805e15099b9f035fe310cb30753",
- "reference": "e3c24268f1404805e15099b9f035fe310cb30753",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
+ "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
"shasum": ""
},
"require": {
- "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
- "composer-runtime-api": "^2.2",
- "doctrine/inflector": "^2.0.5",
- "dragonmantank/cron-expression": "^3.3.2",
- "egulias/email-validator": "^3.2.1|^4.0",
- "ext-ctype": "*",
- "ext-filter": "*",
- "ext-hash": "*",
- "ext-mbstring": "*",
- "ext-openssl": "*",
- "ext-session": "*",
- "ext-tokenizer": "*",
- "fruitcake/php-cors": "^1.3",
- "guzzlehttp/guzzle": "^7.8",
- "guzzlehttp/uri-template": "^1.0",
- "laravel/prompts": "^0.1.18",
- "laravel/serializable-closure": "^1.3",
- "league/commonmark": "^2.2.1",
- "league/flysystem": "^3.8.0",
- "monolog/monolog": "^3.0",
- "nesbot/carbon": "^2.72.2|^3.0",
- "nunomaduro/termwind": "^2.0",
- "php": "^8.2",
- "psr/container": "^1.1.1|^2.0.1",
- "psr/log": "^1.0|^2.0|^3.0",
- "psr/simple-cache": "^1.0|^2.0|^3.0",
- "ramsey/uuid": "^4.7",
- "symfony/console": "^7.0",
- "symfony/error-handler": "^7.0",
- "symfony/finder": "^7.0",
- "symfony/http-foundation": "^7.0",
- "symfony/http-kernel": "^7.0",
- "symfony/mailer": "^7.0",
- "symfony/mime": "^7.0",
- "symfony/polyfill-php83": "^1.28",
- "symfony/process": "^7.0",
- "symfony/routing": "^7.0",
- "symfony/uid": "^7.0",
- "symfony/var-dumper": "^7.0",
- "tijsverkoyen/css-to-inline-styles": "^2.2.5",
- "vlucas/phpdotenv": "^5.4.1",
- "voku/portable-ascii": "^2.0"
+ "php": "^7.2.5 || ^8.0"
},
- "conflict": {
- "mockery/mockery": "1.6.8",
- "tightenco/collect": "<5.5.33"
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15"
},
- "provide": {
- "psr/container-implementation": "1.1|2.0",
- "psr/simple-cache-implementation": "1.0|2.0|3.0"
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
},
- "replace": {
- "illuminate/auth": "self.version",
- "illuminate/broadcasting": "self.version",
- "illuminate/bus": "self.version",
- "illuminate/cache": "self.version",
- "illuminate/collections": "self.version",
- "illuminate/conditionable": "self.version",
- "illuminate/config": "self.version",
- "illuminate/console": "self.version",
- "illuminate/container": "self.version",
- "illuminate/contracts": "self.version",
- "illuminate/cookie": "self.version",
- "illuminate/database": "self.version",
- "illuminate/encryption": "self.version",
- "illuminate/events": "self.version",
- "illuminate/filesystem": "self.version",
- "illuminate/hashing": "self.version",
- "illuminate/http": "self.version",
- "illuminate/log": "self.version",
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-03T20:19:20+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "2.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221",
+ "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "ralouphie/getallheaders": "^3.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.6.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-03T20:05:35+00:00"
+ },
+ {
+ "name": "guzzlehttp/uri-template",
+ "version": "v1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/uri-template.git",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "symfony/polyfill-php80": "^1.24"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15",
+ "uri-template/tests": "1.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\UriTemplate\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ }
+ ],
+ "description": "A polyfill class for uri_template of PHP",
+ "keywords": [
+ "guzzlehttp",
+ "uri-template"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/uri-template/issues",
+ "source": "https://github.com/guzzle/uri-template/tree/v1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-12-03T19:50:20+00:00"
+ },
+ {
+ "name": "kirschbaum-development/eloquent-power-joins",
+ "version": "3.5.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
+ "reference": "6de51d9ec43af34e77bd1d9908173de1416a0aed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/6de51d9ec43af34e77bd1d9908173de1416a0aed",
+ "reference": "6de51d9ec43af34e77bd1d9908173de1416a0aed",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/database": "^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "laravel/legacy-factories": "^1.0@dev",
+ "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0",
+ "phpunit/phpunit": "^8.0|^9.0|^10.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Kirschbaum\\PowerJoins\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Luis Dalmolin",
+ "email": "luis.nh@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "The Laravel magic applied to joins.",
+ "homepage": "https://github.com/kirschbaum-development/eloquent-power-joins",
+ "keywords": [
+ "eloquent",
+ "join",
+ "laravel",
+ "mysql"
+ ],
+ "support": {
+ "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
+ "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.6"
+ },
+ "time": "2024-04-09T00:35:30+00:00"
+ },
+ {
+ "name": "laravel/fortify",
+ "version": "v1.21.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/fortify.git",
+ "reference": "405388fd399264715573e23ed2f368fbce426da3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/fortify/zipball/405388fd399264715573e23ed2f368fbce426da3",
+ "reference": "405388fd399264715573e23ed2f368fbce426da3",
+ "shasum": ""
+ },
+ "require": {
+ "bacon/bacon-qr-code": "^2.0",
+ "ext-json": "*",
+ "illuminate/support": "^10.0|^11.0",
+ "php": "^8.1",
+ "pragmarx/google2fa": "^8.0",
+ "symfony/console": "^6.0|^7.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.0",
+ "orchestra/testbench": "^8.16|^9.0",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Laravel\\Fortify\\FortifyServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Fortify\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Backend controllers and scaffolding for Laravel authentication.",
+ "keywords": [
+ "auth",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/fortify/issues",
+ "source": "https://github.com/laravel/fortify"
+ },
+ "time": "2024-03-19T20:08:25+00:00"
+ },
+ {
+ "name": "laravel/framework",
+ "version": "v11.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/framework.git",
+ "reference": "e3c24268f1404805e15099b9f035fe310cb30753"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/e3c24268f1404805e15099b9f035fe310cb30753",
+ "reference": "e3c24268f1404805e15099b9f035fe310cb30753",
+ "shasum": ""
+ },
+ "require": {
+ "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12",
+ "composer-runtime-api": "^2.2",
+ "doctrine/inflector": "^2.0.5",
+ "dragonmantank/cron-expression": "^3.3.2",
+ "egulias/email-validator": "^3.2.1|^4.0",
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "ext-session": "*",
+ "ext-tokenizer": "*",
+ "fruitcake/php-cors": "^1.3",
+ "guzzlehttp/guzzle": "^7.8",
+ "guzzlehttp/uri-template": "^1.0",
+ "laravel/prompts": "^0.1.18",
+ "laravel/serializable-closure": "^1.3",
+ "league/commonmark": "^2.2.1",
+ "league/flysystem": "^3.8.0",
+ "monolog/monolog": "^3.0",
+ "nesbot/carbon": "^2.72.2|^3.0",
+ "nunomaduro/termwind": "^2.0",
+ "php": "^8.2",
+ "psr/container": "^1.1.1|^2.0.1",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "ramsey/uuid": "^4.7",
+ "symfony/console": "^7.0",
+ "symfony/error-handler": "^7.0",
+ "symfony/finder": "^7.0",
+ "symfony/http-foundation": "^7.0",
+ "symfony/http-kernel": "^7.0",
+ "symfony/mailer": "^7.0",
+ "symfony/mime": "^7.0",
+ "symfony/polyfill-php83": "^1.28",
+ "symfony/process": "^7.0",
+ "symfony/routing": "^7.0",
+ "symfony/uid": "^7.0",
+ "symfony/var-dumper": "^7.0",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.5",
+ "vlucas/phpdotenv": "^5.4.1",
+ "voku/portable-ascii": "^2.0"
+ },
+ "conflict": {
+ "mockery/mockery": "1.6.8",
+ "tightenco/collect": "<5.5.33"
+ },
+ "provide": {
+ "psr/container-implementation": "1.1|2.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0"
+ },
+ "replace": {
+ "illuminate/auth": "self.version",
+ "illuminate/broadcasting": "self.version",
+ "illuminate/bus": "self.version",
+ "illuminate/cache": "self.version",
+ "illuminate/collections": "self.version",
+ "illuminate/conditionable": "self.version",
+ "illuminate/config": "self.version",
+ "illuminate/console": "self.version",
+ "illuminate/container": "self.version",
+ "illuminate/contracts": "self.version",
+ "illuminate/cookie": "self.version",
+ "illuminate/database": "self.version",
+ "illuminate/encryption": "self.version",
+ "illuminate/events": "self.version",
+ "illuminate/filesystem": "self.version",
+ "illuminate/hashing": "self.version",
+ "illuminate/http": "self.version",
+ "illuminate/log": "self.version",
"illuminate/macroable": "self.version",
"illuminate/mail": "self.version",
"illuminate/notifications": "self.version",
@@ -1148,197 +2252,1608 @@
"spatie/once": "*"
},
"require-dev": {
- "ably/ably-php": "^1.0",
- "aws/aws-sdk-php": "^3.235.5",
- "ext-gmp": "*",
- "fakerphp/faker": "^1.23",
- "league/flysystem-aws-s3-v3": "^3.0",
- "league/flysystem-ftp": "^3.0",
- "league/flysystem-path-prefixing": "^3.3",
- "league/flysystem-read-only": "^3.3",
- "league/flysystem-sftp-v3": "^3.0",
- "mockery/mockery": "^1.6",
- "nyholm/psr7": "^1.2",
- "orchestra/testbench-core": "^9.0.6",
- "pda/pheanstalk": "^5.0",
- "phpstan/phpstan": "^1.4.7",
- "phpunit/phpunit": "^10.5|^11.0",
- "predis/predis": "^2.0.2",
- "resend/resend-php": "^0.10.0",
- "symfony/cache": "^7.0",
- "symfony/http-client": "^7.0",
- "symfony/psr-http-message-bridge": "^7.0"
+ "ably/ably-php": "^1.0",
+ "aws/aws-sdk-php": "^3.235.5",
+ "ext-gmp": "*",
+ "fakerphp/faker": "^1.23",
+ "league/flysystem-aws-s3-v3": "^3.0",
+ "league/flysystem-ftp": "^3.0",
+ "league/flysystem-path-prefixing": "^3.3",
+ "league/flysystem-read-only": "^3.3",
+ "league/flysystem-sftp-v3": "^3.0",
+ "mockery/mockery": "^1.6",
+ "nyholm/psr7": "^1.2",
+ "orchestra/testbench-core": "^9.0.6",
+ "pda/pheanstalk": "^5.0",
+ "phpstan/phpstan": "^1.4.7",
+ "phpunit/phpunit": "^10.5|^11.0",
+ "predis/predis": "^2.0.2",
+ "resend/resend-php": "^0.10.0",
+ "symfony/cache": "^7.0",
+ "symfony/http-client": "^7.0",
+ "symfony/psr-http-message-bridge": "^7.0"
+ },
+ "suggest": {
+ "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
+ "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).",
+ "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).",
+ "ext-apcu": "Required to use the APC cache driver.",
+ "ext-fileinfo": "Required to use the Filesystem class.",
+ "ext-ftp": "Required to use the Flysystem FTP driver.",
+ "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
+ "ext-memcached": "Required to use the memcache cache driver.",
+ "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.",
+ "ext-pdo": "Required to use all database features.",
+ "ext-posix": "Required to use all features of the queue worker.",
+ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
+ "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
+ "filp/whoops": "Required for friendly error pages in development (^2.14.3).",
+ "laravel/tinker": "Required to use the tinker console command (^2.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
+ "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
+ "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
+ "league/flysystem-read-only": "Required to use read-only disks (^3.3)",
+ "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
+ "mockery/mockery": "Required to use mocking (^1.6).",
+ "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
+ "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).",
+ "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).",
+ "predis/predis": "Required to use the predis connector (^2.0.2).",
+ "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
+ "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^7.0).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).",
+ "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).",
+ "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).",
+ "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "11.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Illuminate/Collections/helpers.php",
+ "src/Illuminate/Events/functions.php",
+ "src/Illuminate/Filesystem/functions.php",
+ "src/Illuminate/Foundation/helpers.php",
+ "src/Illuminate/Support/helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\": "src/Illuminate/",
+ "Illuminate\\Support\\": [
+ "src/Illuminate/Macroable/",
+ "src/Illuminate/Collections/",
+ "src/Illuminate/Conditionable/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Laravel Framework.",
+ "homepage": "https://laravel.com",
+ "keywords": [
+ "framework",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2024-04-23T15:11:31+00:00"
+ },
+ {
+ "name": "laravel/jetstream",
+ "version": "v5.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/jetstream.git",
+ "reference": "dea945f708b42ecd3548b8c0ff2a914d271a26c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/jetstream/zipball/dea945f708b42ecd3548b8c0ff2a914d271a26c0",
+ "reference": "dea945f708b42ecd3548b8c0ff2a914d271a26c0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/console": "^11.0",
+ "illuminate/support": "^11.0",
+ "laravel/fortify": "^1.20",
+ "mobiledetect/mobiledetectlib": "^4.8",
+ "php": "^8.2.0",
+ "symfony/console": "^7.0"
+ },
+ "require-dev": {
+ "inertiajs/inertia-laravel": "^1.0",
+ "laravel/sanctum": "^4.0",
+ "livewire/livewire": "^3.3",
+ "mockery/mockery": "^1.0",
+ "orchestra/testbench": "^9.0",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.4"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Laravel\\Jetstream\\JetstreamServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Jetstream\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Tailwind scaffolding for the Laravel framework.",
+ "keywords": [
+ "auth",
+ "laravel",
+ "tailwind"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/jetstream/issues",
+ "source": "https://github.com/laravel/jetstream"
+ },
+ "time": "2024-04-10T19:17:56+00:00"
+ },
+ {
+ "name": "laravel/prompts",
+ "version": "v0.1.20",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/prompts.git",
+ "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/bf9a360c484976692de0f3792f30066f4f4b34a2",
+ "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "illuminate/collections": "^10.0|^11.0",
+ "php": "^8.1",
+ "symfony/console": "^6.2|^7.0"
+ },
+ "conflict": {
+ "illuminate/console": ">=10.17.0 <10.25.0",
+ "laravel/framework": ">=10.17.0 <10.25.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.5",
+ "pestphp/pest": "^2.3",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-mockery": "^1.1"
+ },
+ "suggest": {
+ "ext-pcntl": "Required for the spinner to be animated."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
+ "psr-4": {
+ "Laravel\\Prompts\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/prompts/issues",
+ "source": "https://github.com/laravel/prompts/tree/v0.1.20"
+ },
+ "time": "2024-04-18T00:45:25+00:00"
+ },
+ {
+ "name": "laravel/sanctum",
+ "version": "v4.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/sanctum.git",
+ "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/sanctum/zipball/9cfc0ce80cabad5334efff73ec856339e8ec1ac1",
+ "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/console": "^11.0",
+ "illuminate/contracts": "^11.0",
+ "illuminate/database": "^11.0",
+ "illuminate/support": "^11.0",
+ "php": "^8.2",
+ "symfony/console": "^7.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.6",
+ "orchestra/testbench": "^9.0",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.5"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Laravel\\Sanctum\\SanctumServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Sanctum\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.",
+ "keywords": [
+ "auth",
+ "laravel",
+ "sanctum"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/sanctum/issues",
+ "source": "https://github.com/laravel/sanctum"
+ },
+ "time": "2024-04-10T19:39:58+00:00"
+ },
+ {
+ "name": "laravel/serializable-closure",
+ "version": "v1.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/serializable-closure.git",
+ "reference": "3dbf8a8e914634c48d389c1234552666b3d43754"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754",
+ "reference": "3dbf8a8e914634c48d389c1234552666b3d43754",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3|^8.0"
+ },
+ "require-dev": {
+ "nesbot/carbon": "^2.61",
+ "pestphp/pest": "^1.21.3",
+ "phpstan/phpstan": "^1.8.2",
+ "symfony/var-dumper": "^5.4.11"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\SerializableClosure\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ },
+ {
+ "name": "Nuno Maduro",
+ "email": "nuno@laravel.com"
+ }
+ ],
+ "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
+ "keywords": [
+ "closure",
+ "laravel",
+ "serializable"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/serializable-closure/issues",
+ "source": "https://github.com/laravel/serializable-closure"
+ },
+ "time": "2023-11-08T14:08:06+00:00"
+ },
+ {
+ "name": "laravel/tinker",
+ "version": "v2.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/tinker.git",
+ "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe",
+ "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+ "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+ "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+ "php": "^7.2.5|^8.0",
+ "psy/psysh": "^0.11.1|^0.12.0",
+ "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.3|^1.4.2",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^8.5.8|^9.3.3"
+ },
+ "suggest": {
+ "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)."
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Laravel\\Tinker\\TinkerServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Tinker\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Powerful REPL for the Laravel framework.",
+ "keywords": [
+ "REPL",
+ "Tinker",
+ "laravel",
+ "psysh"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/tinker/issues",
+ "source": "https://github.com/laravel/tinker/tree/v2.9.0"
+ },
+ "time": "2024-01-04T16:10:04+00:00"
+ },
+ {
+ "name": "league/commonmark",
+ "version": "2.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/commonmark.git",
+ "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf",
+ "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "league/config": "^1.1.1",
+ "php": "^7.4 || ^8.0",
+ "psr/event-dispatcher": "^1.0",
+ "symfony/deprecation-contracts": "^2.1 || ^3.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
+ "cebe/markdown": "^1.0",
+ "commonmark/cmark": "0.30.3",
+ "commonmark/commonmark.js": "0.30.0",
+ "composer/package-versions-deprecated": "^1.8",
+ "embed/embed": "^4.4",
+ "erusev/parsedown": "^1.0",
+ "ext-json": "*",
+ "github/gfm": "0.29.0",
+ "michelf/php-markdown": "^1.4 || ^2.0",
+ "nyholm/psr7": "^1.5",
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
+ "scrutinizer/ocular": "^1.8.1",
+ "symfony/finder": "^5.3 | ^6.0 || ^7.0",
+ "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0",
+ "unleashedtech/php-coding-standard": "^3.1.1",
+ "vimeo/psalm": "^4.24.0 || ^5.0.0"
+ },
+ "suggest": {
+ "symfony/yaml": "v2.3+ required if using the Front Matter extension"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\CommonMark\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
+ "homepage": "https://commonmark.thephpleague.com",
+ "keywords": [
+ "commonmark",
+ "flavored",
+ "gfm",
+ "github",
+ "github-flavored",
+ "markdown",
+ "md",
+ "parser"
+ ],
+ "support": {
+ "docs": "https://commonmark.thephpleague.com/",
+ "forum": "https://github.com/thephpleague/commonmark/discussions",
+ "issues": "https://github.com/thephpleague/commonmark/issues",
+ "rss": "https://github.com/thephpleague/commonmark/releases.atom",
+ "source": "https://github.com/thephpleague/commonmark"
+ },
+ "funding": [
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-02-02T11:59:32+00:00"
+ },
+ {
+ "name": "league/config",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/config.git",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "shasum": ""
+ },
+ "require": {
+ "dflydev/dot-access-data": "^3.0.1",
+ "nette/schema": "^1.2",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.5",
+ "scrutinizer/ocular": "^1.8.1",
+ "unleashedtech/php-coding-standard": "^3.1",
+ "vimeo/psalm": "^4.7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Config\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Define configuration arrays with strict schemas and access values with dot notation",
+ "homepage": "https://config.thephpleague.com",
+ "keywords": [
+ "array",
+ "config",
+ "configuration",
+ "dot",
+ "dot-access",
+ "nested",
+ "schema"
+ ],
+ "support": {
+ "docs": "https://config.thephpleague.com/",
+ "issues": "https://github.com/thephpleague/config/issues",
+ "rss": "https://github.com/thephpleague/config/releases.atom",
+ "source": "https://github.com/thephpleague/config"
+ },
+ "funding": [
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ }
+ ],
+ "time": "2022-12-11T20:36:23+00:00"
+ },
+ {
+ "name": "league/flysystem",
+ "version": "3.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "4729745b1ab737908c7d055148c9a6b3e959832f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f",
+ "reference": "4729745b1ab737908c7d055148c9a6b3e959832f",
+ "shasum": ""
+ },
+ "require": {
+ "league/flysystem-local": "^3.0.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
+ },
+ "conflict": {
+ "async-aws/core": "<1.19.0",
+ "async-aws/s3": "<1.14.0",
+ "aws/aws-sdk-php": "3.209.31 || 3.210.0",
+ "guzzlehttp/guzzle": "<7.0",
+ "guzzlehttp/ringphp": "<1.1.1",
+ "phpseclib/phpseclib": "3.0.15",
+ "symfony/http-client": "<5.2"
+ },
+ "require-dev": {
+ "async-aws/s3": "^1.5 || ^2.0",
+ "async-aws/simple-s3": "^1.1 || ^2.0",
+ "aws/aws-sdk-php": "^3.295.10",
+ "composer/semver": "^3.0",
+ "ext-fileinfo": "*",
+ "ext-ftp": "*",
+ "ext-zip": "*",
+ "friendsofphp/php-cs-fixer": "^3.5",
+ "google/cloud-storage": "^1.23",
+ "microsoft/azure-storage-blob": "^1.1",
+ "phpseclib/phpseclib": "^3.0.36",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.5.11|^10.0",
+ "sabre/dav": "^4.6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "File storage abstraction for PHP",
+ "keywords": [
+ "WebDAV",
+ "aws",
+ "cloud",
+ "file",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "s3",
+ "sftp",
+ "storage"
+ ],
+ "support": {
+ "issues": "https://github.com/thephpleague/flysystem/issues",
+ "source": "https://github.com/thephpleague/flysystem/tree/3.27.0"
+ },
+ "funding": [
+ {
+ "url": "https://ecologi.com/frankdejonge",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-07T19:17:50+00:00"
+ },
+ {
+ "name": "league/flysystem-local",
+ "version": "3.25.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem-local.git",
+ "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92",
+ "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "league/flysystem": "^3.0.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\Local\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Local filesystem adapter for Flysystem.",
+ "keywords": [
+ "Flysystem",
+ "file",
+ "files",
+ "filesystem",
+ "local"
+ ],
+ "support": {
+ "source": "https://github.com/thephpleague/flysystem-local/tree/3.25.1"
+ },
+ "funding": [
+ {
+ "url": "https://ecologi.com/frankdejonge",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-15T19:58:44+00:00"
+ },
+ {
+ "name": "league/mime-type-detection",
+ "version": "1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/mime-type-detection.git",
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "phpstan/phpstan": "^0.12.68",
+ "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\MimeTypeDetection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Mime-type detection for Flysystem",
+ "support": {
+ "issues": "https://github.com/thephpleague/mime-type-detection/issues",
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-28T23:22:08+00:00"
+ },
+ {
+ "name": "maatwebsite/excel",
+ "version": "3.1.55",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/SpartnerNL/Laravel-Excel.git",
+ "reference": "6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260",
+ "reference": "6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^3.3",
+ "ext-json": "*",
+ "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0",
+ "php": "^7.0||^8.0",
+ "phpoffice/phpspreadsheet": "^1.18",
+ "psr/simple-cache": "^1.0||^2.0||^3.0"
+ },
+ "require-dev": {
+ "laravel/scout": "^7.0||^8.0||^9.0||^10.0",
+ "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0",
+ "predis/predis": "^1.1"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Maatwebsite\\Excel\\ExcelServiceProvider"
+ ],
+ "aliases": {
+ "Excel": "Maatwebsite\\Excel\\Facades\\Excel"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Maatwebsite\\Excel\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Patrick Brouwers",
+ "email": "patrick@spartner.nl"
+ }
+ ],
+ "description": "Supercharged Excel exports and imports in Laravel",
+ "keywords": [
+ "PHPExcel",
+ "batch",
+ "csv",
+ "excel",
+ "export",
+ "import",
+ "laravel",
+ "php",
+ "phpspreadsheet"
+ ],
+ "support": {
+ "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues",
+ "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.55"
+ },
+ "funding": [
+ {
+ "url": "https://laravel-excel.com/commercial-support",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/patrickbrouwers",
+ "type": "github"
+ }
+ ],
+ "time": "2024-02-20T08:27:10+00:00"
+ },
+ {
+ "name": "maennchen/zipstream-php",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maennchen/ZipStream-PHP.git",
+ "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1",
+ "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "ext-zlib": "*",
+ "php-64bit": "^8.1"
+ },
+ "require-dev": {
+ "ext-zip": "*",
+ "friendsofphp/php-cs-fixer": "^3.16",
+ "guzzlehttp/guzzle": "^7.5",
+ "mikey179/vfsstream": "^1.6",
+ "php-coveralls/php-coveralls": "^2.5",
+ "phpunit/phpunit": "^10.0",
+ "vimeo/psalm": "^5.0"
+ },
+ "suggest": {
+ "guzzlehttp/psr7": "^2.4",
+ "psr/http-message": "^2.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "ZipStream\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paul Duncan",
+ "email": "pabs@pablotron.org"
+ },
+ {
+ "name": "Jonatan Männchen",
+ "email": "jonatan@maennchen.ch"
+ },
+ {
+ "name": "Jesse Donat",
+ "email": "donatj@gmail.com"
+ },
+ {
+ "name": "András Kolesár",
+ "email": "kolesar@kolesar.hu"
+ }
+ ],
+ "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
+ "keywords": [
+ "stream",
+ "zip"
+ ],
+ "support": {
+ "issues": "https://github.com/maennchen/ZipStream-PHP/issues",
+ "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/maennchen",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/zipstream",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2023-06-21T14:59:35+00:00"
+ },
+ {
+ "name": "markbaker/complex",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/MarkBaker/PHPComplex.git",
+ "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
+ "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Complex\\": "classes/src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mark Baker",
+ "email": "mark@lange.demon.co.uk"
+ }
+ ],
+ "description": "PHP Class for working with complex numbers",
+ "homepage": "https://github.com/MarkBaker/PHPComplex",
+ "keywords": [
+ "complex",
+ "mathematics"
+ ],
+ "support": {
+ "issues": "https://github.com/MarkBaker/PHPComplex/issues",
+ "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2"
+ },
+ "time": "2022-12-06T16:21:08+00:00"
+ },
+ {
+ "name": "markbaker/matrix",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/MarkBaker/PHPMatrix.git",
+ "reference": "728434227fe21be27ff6d86621a1b13107a2562c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c",
+ "reference": "728434227fe21be27ff6d86621a1b13107a2562c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpdocumentor/phpdocumentor": "2.*",
+ "phploc/phploc": "^4.0",
+ "phpmd/phpmd": "2.*",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "sebastian/phpcpd": "^4.0",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Matrix\\": "classes/src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mark Baker",
+ "email": "mark@demon-angel.eu"
+ }
+ ],
+ "description": "PHP Class for working with matrices",
+ "homepage": "https://github.com/MarkBaker/PHPMatrix",
+ "keywords": [
+ "mathematics",
+ "matrix",
+ "vector"
+ ],
+ "support": {
+ "issues": "https://github.com/MarkBaker/PHPMatrix/issues",
+ "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1"
+ },
+ "time": "2022-12-02T22:17:43+00:00"
+ },
+ {
+ "name": "mobiledetect/mobiledetectlib",
+ "version": "4.8.06",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/serbanghita/Mobile-Detect.git",
+ "reference": "af088b54cecc13b3264edca7da93a89ba7aa2d9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/af088b54cecc13b3264edca7da93a89ba7aa2d9e",
+ "reference": "af088b54cecc13b3264edca7da93a89ba7aa2d9e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0",
+ "psr/simple-cache": "^2 || ^3"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^v3.35.1",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^9.6",
+ "squizlabs/php_codesniffer": "^3.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Detection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Serban Ghita",
+ "email": "serbanghita@gmail.com",
+ "homepage": "http://mobiledetect.net",
+ "role": "Developer"
+ }
+ ],
+ "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
+ "homepage": "https://github.com/serbanghita/Mobile-Detect",
+ "keywords": [
+ "detect mobile devices",
+ "mobile",
+ "mobile detect",
+ "mobile detector",
+ "php mobile detect"
+ ],
+ "support": {
+ "issues": "https://github.com/serbanghita/Mobile-Detect/issues",
+ "source": "https://github.com/serbanghita/Mobile-Detect/tree/4.8.06"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/serbanghita",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-01T22:28:42+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "^2.0 || ^3.0"
+ },
+ "provide": {
+ "psr/log-implementation": "3.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "elasticsearch/elasticsearch": "^7 || ^8",
+ "ext-json": "*",
+ "graylog2/gelf-php": "^1.4.2 || ^2.0",
+ "guzzlehttp/guzzle": "^7.4.5",
+ "guzzlehttp/psr7": "^2.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.4",
+ "phpunit/phpunit": "^10.5.17",
+ "predis/predis": "^1.1 || ^2",
+ "ruflin/elastica": "^7",
+ "symfony/mailer": "^5.4 || ^6",
+ "symfony/mime": "^5.4 || ^6"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "https://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-04-12T21:02:21+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "7219739c4e01d4680c980545821733b6ed8ee880"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7219739c4e01d4680c980545821733b6ed8ee880",
+ "reference": "7219739c4e01d4680c980545821733b6ed8ee880",
+ "shasum": ""
+ },
+ "require": {
+ "carbonphp/carbon-doctrine-types": "*",
+ "ext-json": "*",
+ "php": "^8.1",
+ "psr/clock": "^1.0",
+ "symfony/clock": "^6.3 || ^7.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^3.6.3 || ^4.0",
+ "doctrine/orm": "^2.15.2 || ^3.0",
+ "friendsofphp/php-cs-fixer": "^3.52.1",
+ "kylekatarnls/multi-tester": "^2.5.3",
+ "ondrejmirtes/better-reflection": "^6.25.0.4",
+ "phpmd/phpmd": "^2.15.0",
+ "phpstan/extension-installer": "^1.3.1",
+ "phpstan/phpstan": "^1.10.65",
+ "phpunit/phpunit": "^10.5.15",
+ "squizlabs/php_codesniffer": "^3.9.0"
+ },
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev",
+ "dev-2.x": "2.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "https://markido.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "https://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "https://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "docs": "https://carbon.nesbot.com/docs",
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-04-18T16:35:06+00:00"
+ },
+ {
+ "name": "nette/schema",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/schema.git",
+ "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
+ "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.3"
+ },
+ "require-dev": {
+ "nette/tester": "^2.4",
+ "phpstan/phpstan-nette": "^1.0",
+ "tracy/tracy": "^2.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "📐 Nette Schema: validating data structures against a given Schema.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "config",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/schema/issues",
+ "source": "https://github.com/nette/schema/tree/v1.3.0"
+ },
+ "time": "2023-12-11T11:54:22+00:00"
+ },
+ {
+ "name": "nette/utils",
+ "version": "v4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/utils.git",
+ "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0 <8.4"
+ },
+ "conflict": {
+ "nette/finder": "<3",
+ "nette/schema": "<1.2.2"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "dev-master",
+ "nette/tester": "^2.5",
+ "phpstan/phpstan": "^1.0",
+ "tracy/tracy": "^2.9"
},
"suggest": {
- "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
- "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).",
- "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).",
- "ext-apcu": "Required to use the APC cache driver.",
- "ext-fileinfo": "Required to use the Filesystem class.",
- "ext-ftp": "Required to use the Flysystem FTP driver.",
- "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
- "ext-memcached": "Required to use the memcache cache driver.",
- "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.",
- "ext-pdo": "Required to use all database features.",
- "ext-posix": "Required to use all features of the queue worker.",
- "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
- "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
- "filp/whoops": "Required for friendly error pages in development (^2.14.3).",
- "laravel/tinker": "Required to use the tinker console command (^2.0).",
- "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
- "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
- "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
- "league/flysystem-read-only": "Required to use read-only disks (^3.3)",
- "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
- "mockery/mockery": "Required to use mocking (^1.6).",
- "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
- "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).",
- "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).",
- "predis/predis": "Required to use the predis connector (^2.0.2).",
- "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
- "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
- "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).",
- "symfony/cache": "Required to PSR-6 cache bridge (^7.0).",
- "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).",
- "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).",
- "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).",
- "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).",
- "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)."
+ "ext-gd": "to use Image",
+ "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
+ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
+ "ext-json": "to use Nette\\Utils\\Json",
+ "ext-mbstring": "to use Strings::lower() etc...",
+ "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "11.x-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
- "files": [
- "src/Illuminate/Collections/helpers.php",
- "src/Illuminate/Events/functions.php",
- "src/Illuminate/Filesystem/functions.php",
- "src/Illuminate/Foundation/helpers.php",
- "src/Illuminate/Support/helpers.php"
- ],
- "psr-4": {
- "Illuminate\\": "src/Illuminate/",
- "Illuminate\\Support\\": [
- "src/Illuminate/Macroable/",
- "src/Illuminate/Collections/",
- "src/Illuminate/Conditionable/"
- ]
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
],
"authors": [
{
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
}
],
- "description": "The Laravel Framework.",
- "homepage": "https://laravel.com",
+ "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+ "homepage": "https://nette.org",
"keywords": [
- "framework",
- "laravel"
+ "array",
+ "core",
+ "datetime",
+ "images",
+ "json",
+ "nette",
+ "paginator",
+ "password",
+ "slugify",
+ "string",
+ "unicode",
+ "utf-8",
+ "utility",
+ "validation"
],
"support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
+ "issues": "https://github.com/nette/utils/issues",
+ "source": "https://github.com/nette/utils/tree/v4.0.4"
},
- "time": "2024-04-23T15:11:31+00:00"
+ "time": "2024-01-17T16:50:36+00:00"
},
{
- "name": "laravel/prompts",
- "version": "v0.1.20",
+ "name": "nikic/php-parser",
+ "version": "v5.0.2",
"source": {
"type": "git",
- "url": "https://github.com/laravel/prompts.git",
- "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2"
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/bf9a360c484976692de0f3792f30066f4f4b34a2",
- "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13",
+ "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13",
"shasum": ""
},
"require": {
- "ext-mbstring": "*",
- "illuminate/collections": "^10.0|^11.0",
- "php": "^8.1",
- "symfony/console": "^6.2|^7.0"
- },
- "conflict": {
- "illuminate/console": ">=10.17.0 <10.25.0",
- "laravel/framework": ">=10.17.0 <10.25.0"
+ "ext-ctype": "*",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "php": ">=7.4"
},
"require-dev": {
- "mockery/mockery": "^1.5",
- "pestphp/pest": "^2.3",
- "phpstan/phpstan": "^1.11",
- "phpstan/phpstan-mockery": "^1.1"
- },
- "suggest": {
- "ext-pcntl": "Required for the spinner to be animated."
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
+ "bin": [
+ "bin/php-parse"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "0.1.x-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
- "files": [
- "src/helpers.php"
- ],
"psr-4": {
- "Laravel\\Prompts\\": "src/"
+ "PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
],
"support": {
- "issues": "https://github.com/laravel/prompts/issues",
- "source": "https://github.com/laravel/prompts/tree/v0.1.20"
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2"
},
- "time": "2024-04-18T00:45:25+00:00"
+ "time": "2024-03-05T20:51:40+00:00"
},
{
- "name": "laravel/serializable-closure",
- "version": "v1.3.3",
+ "name": "nunomaduro/termwind",
+ "version": "v2.0.1",
"source": {
"type": "git",
- "url": "https://github.com/laravel/serializable-closure.git",
- "reference": "3dbf8a8e914634c48d389c1234552666b3d43754"
+ "url": "https://github.com/nunomaduro/termwind.git",
+ "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754",
- "reference": "3dbf8a8e914634c48d389c1234552666b3d43754",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a",
+ "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a",
"shasum": ""
},
"require": {
- "php": "^7.3|^8.0"
+ "ext-mbstring": "*",
+ "php": "^8.2",
+ "symfony/console": "^7.0.4"
},
"require-dev": {
- "nesbot/carbon": "^2.61",
- "pestphp/pest": "^1.21.3",
- "phpstan/phpstan": "^1.8.2",
- "symfony/var-dumper": "^5.4.11"
+ "ergebnis/phpstan-rules": "^2.2.0",
+ "illuminate/console": "^11.0.0",
+ "laravel/pint": "^1.14.0",
+ "mockery/mockery": "^1.6.7",
+ "pestphp/pest": "^2.34.1",
+ "phpstan/phpstan": "^1.10.59",
+ "phpstan/phpstan-strict-rules": "^1.5.2",
+ "symfony/var-dumper": "^7.0.4",
+ "thecodingmachine/phpstan-strict-rules": "^1.0.0"
},
"type": "library",
"extra": {
+ "laravel": {
+ "providers": [
+ "Termwind\\Laravel\\TermwindServiceProvider"
+ ]
+ },
"branch-alias": {
- "dev-master": "1.x-dev"
+ "dev-2.x": "2.x-dev"
}
},
"autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
"psr-4": {
- "Laravel\\SerializableClosure\\": "src/"
+ "Termwind\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1346,68 +3861,87 @@
"MIT"
],
"authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- },
{
"name": "Nuno Maduro",
- "email": "nuno@laravel.com"
+ "email": "enunomaduro@gmail.com"
}
],
- "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
+ "description": "Its like Tailwind CSS, but for the console.",
"keywords": [
- "closure",
- "laravel",
- "serializable"
+ "cli",
+ "console",
+ "css",
+ "package",
+ "php",
+ "style"
],
"support": {
- "issues": "https://github.com/laravel/serializable-closure/issues",
- "source": "https://github.com/laravel/serializable-closure"
+ "issues": "https://github.com/nunomaduro/termwind/issues",
+ "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1"
},
- "time": "2023-11-08T14:08:06+00:00"
+ "funding": [
+ {
+ "url": "https://www.paypal.com/paypalme/enunomaduro",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/nunomaduro",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/xiCO2k",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-06T16:17:14+00:00"
},
{
- "name": "laravel/tinker",
- "version": "v2.9.0",
+ "name": "nwidart/laravel-modules",
+ "version": "10.0.6",
"source": {
"type": "git",
- "url": "https://github.com/laravel/tinker.git",
- "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe"
+ "url": "https://github.com/nWidart/laravel-modules.git",
+ "reference": "a6f2c8b53ae7945ef41d296735e963cee885ebde"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe",
- "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe",
+ "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/a6f2c8b53ae7945ef41d296735e963cee885ebde",
+ "reference": "a6f2c8b53ae7945ef41d296735e963cee885ebde",
"shasum": ""
},
"require": {
- "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
- "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
- "php": "^7.2.5|^8.0",
- "psy/psysh": "^0.11.1|^0.12.0",
- "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0"
+ "ext-json": "*",
+ "php": ">=8.1"
},
"require-dev": {
- "mockery/mockery": "~1.3.3|^1.4.2",
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^8.5.8|^9.3.3"
- },
- "suggest": {
- "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)."
+ "friendsofphp/php-cs-fixer": "^3.6",
+ "laravel/framework": "^10.41",
+ "mockery/mockery": "^1.5",
+ "orchestra/testbench": "^8.0",
+ "phpstan/phpstan": "^1.4",
+ "phpunit/phpunit": "^10.0",
+ "spatie/phpunit-snapshot-assertions": "^5.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
- "Laravel\\Tinker\\TinkerServiceProvider"
- ]
+ "Nwidart\\Modules\\LaravelModulesServiceProvider"
+ ],
+ "aliases": {
+ "Module": "Nwidart\\Modules\\Facades\\Module"
+ }
+ },
+ "branch-alias": {
+ "dev-master": "10.0-dev"
}
},
"autoload": {
+ "files": [
+ "src/helpers.php"
+ ],
"psr-4": {
- "Laravel\\Tinker\\": "src/"
+ "Nwidart\\Modules\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1416,325 +3950,309 @@
],
"authors": [
{
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
+ "name": "Nicolas Widart",
+ "email": "n.widart@gmail.com",
+ "homepage": "https://nicolaswidart.com",
+ "role": "Developer"
}
],
- "description": "Powerful REPL for the Laravel framework.",
+ "description": "Laravel Module management",
"keywords": [
- "REPL",
- "Tinker",
"laravel",
- "psysh"
+ "module",
+ "modules",
+ "nwidart",
+ "rad"
],
"support": {
- "issues": "https://github.com/laravel/tinker/issues",
- "source": "https://github.com/laravel/tinker/tree/v2.9.0"
+ "issues": "https://github.com/nWidart/laravel-modules/issues",
+ "source": "https://github.com/nWidart/laravel-modules/tree/10.0.6"
},
- "time": "2024-01-04T16:10:04+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/dcblogdev",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nwidart",
+ "type": "github"
+ }
+ ],
+ "time": "2024-01-28T10:04:15+00:00"
},
{
- "name": "league/commonmark",
- "version": "2.4.2",
+ "name": "paragonie/constant_time_encoding",
+ "version": "v2.6.3",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/commonmark.git",
- "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf"
+ "url": "https://github.com/paragonie/constant_time_encoding.git",
+ "reference": "58c3f47f650c94ec05a151692652a868995d2938"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf",
- "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf",
+ "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938",
+ "reference": "58c3f47f650c94ec05a151692652a868995d2938",
"shasum": ""
},
"require": {
- "ext-mbstring": "*",
- "league/config": "^1.1.1",
- "php": "^7.4 || ^8.0",
- "psr/event-dispatcher": "^1.0",
- "symfony/deprecation-contracts": "^2.1 || ^3.0",
- "symfony/polyfill-php80": "^1.16"
+ "php": "^7|^8"
},
"require-dev": {
- "cebe/markdown": "^1.0",
- "commonmark/cmark": "0.30.3",
- "commonmark/commonmark.js": "0.30.0",
- "composer/package-versions-deprecated": "^1.8",
- "embed/embed": "^4.4",
- "erusev/parsedown": "^1.0",
- "ext-json": "*",
- "github/gfm": "0.29.0",
- "michelf/php-markdown": "^1.4 || ^2.0",
- "nyholm/psr7": "^1.5",
- "phpstan/phpstan": "^1.8.2",
- "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
- "scrutinizer/ocular": "^1.8.1",
- "symfony/finder": "^5.3 | ^6.0 || ^7.0",
- "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0",
- "unleashedtech/php-coding-standard": "^3.1.1",
- "vimeo/psalm": "^4.24.0 || ^5.0.0"
- },
- "suggest": {
- "symfony/yaml": "v2.3+ required if using the Front Matter extension"
+ "phpunit/phpunit": "^6|^7|^8|^9",
+ "vimeo/psalm": "^1|^2|^3|^4"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.5-dev"
- }
- },
"autoload": {
"psr-4": {
- "League\\CommonMark\\": "src"
+ "ParagonIE\\ConstantTime\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "https://www.colinodell.com",
- "role": "Lead Developer"
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Steve 'Sc00bz' Thomas",
+ "email": "steve@tobtu.com",
+ "homepage": "https://www.tobtu.com",
+ "role": "Original Developer"
}
],
- "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
- "homepage": "https://commonmark.thephpleague.com",
+ "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
"keywords": [
- "commonmark",
- "flavored",
- "gfm",
- "github",
- "github-flavored",
- "markdown",
- "md",
- "parser"
+ "base16",
+ "base32",
+ "base32_decode",
+ "base32_encode",
+ "base64",
+ "base64_decode",
+ "base64_encode",
+ "bin2hex",
+ "encoding",
+ "hex",
+ "hex2bin",
+ "rfc4648"
],
"support": {
- "docs": "https://commonmark.thephpleague.com/",
- "forum": "https://github.com/thephpleague/commonmark/discussions",
- "issues": "https://github.com/thephpleague/commonmark/issues",
- "rss": "https://github.com/thephpleague/commonmark/releases.atom",
- "source": "https://github.com/thephpleague/commonmark"
+ "email": "info@paragonie.com",
+ "issues": "https://github.com/paragonie/constant_time_encoding/issues",
+ "source": "https://github.com/paragonie/constant_time_encoding"
},
- "funding": [
- {
- "url": "https://www.colinodell.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://www.paypal.me/colinpodell/10.00",
- "type": "custom"
- },
- {
- "url": "https://github.com/colinodell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
- "type": "tidelift"
- }
- ],
- "time": "2024-02-02T11:59:32+00:00"
+ "time": "2022-06-14T06:56:20+00:00"
},
{
- "name": "league/config",
- "version": "v1.2.0",
+ "name": "phpoffice/phpspreadsheet",
+ "version": "1.29.0",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/config.git",
- "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
+ "url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
+ "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
- "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0",
+ "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0",
"shasum": ""
},
"require": {
- "dflydev/dot-access-data": "^3.0.1",
- "nette/schema": "^1.2",
- "php": "^7.4 || ^8.0"
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-fileinfo": "*",
+ "ext-gd": "*",
+ "ext-iconv": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-xml": "*",
+ "ext-xmlreader": "*",
+ "ext-xmlwriter": "*",
+ "ext-zip": "*",
+ "ext-zlib": "*",
+ "ezyang/htmlpurifier": "^4.15",
+ "maennchen/zipstream-php": "^2.1 || ^3.0",
+ "markbaker/complex": "^3.0",
+ "markbaker/matrix": "^3.0",
+ "php": "^7.4 || ^8.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.8.2",
- "phpunit/phpunit": "^9.5.5",
- "scrutinizer/ocular": "^1.8.1",
- "unleashedtech/php-coding-standard": "^3.1",
- "vimeo/psalm": "^4.7.3"
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-main",
+ "dompdf/dompdf": "^1.0 || ^2.0",
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "mitoteam/jpgraph": "^10.3",
+ "mpdf/mpdf": "^8.1.1",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpstan/phpstan": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^8.5 || ^9.0 || ^10.0",
+ "squizlabs/php_codesniffer": "^3.7",
+ "tecnickcom/tcpdf": "^6.5"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.2-dev"
- }
+ "suggest": {
+ "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
+ "ext-intl": "PHP Internationalization Functions",
+ "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
+ "mpdf/mpdf": "Option for rendering PDF with PDF Writer",
+ "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "League\\Config\\": "src"
+ "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "https://www.colinodell.com",
- "role": "Lead Developer"
- }
- ],
- "description": "Define configuration arrays with strict schemas and access values with dot notation",
- "homepage": "https://config.thephpleague.com",
- "keywords": [
- "array",
- "config",
- "configuration",
- "dot",
- "dot-access",
- "nested",
- "schema"
- ],
- "support": {
- "docs": "https://config.thephpleague.com/",
- "issues": "https://github.com/thephpleague/config/issues",
- "rss": "https://github.com/thephpleague/config/releases.atom",
- "source": "https://github.com/thephpleague/config"
- },
- "funding": [
+ "name": "Maarten Balliauw",
+ "homepage": "https://blog.maartenballiauw.be"
+ },
{
- "url": "https://www.colinodell.com/sponsor",
- "type": "custom"
+ "name": "Mark Baker",
+ "homepage": "https://markbakeruk.net"
},
{
- "url": "https://www.paypal.me/colinpodell/10.00",
- "type": "custom"
+ "name": "Franck Lefevre",
+ "homepage": "https://rootslabs.net"
},
{
- "url": "https://github.com/colinodell",
- "type": "github"
+ "name": "Erik Tilt"
+ },
+ {
+ "name": "Adrien Crivelli"
}
],
- "time": "2022-12-11T20:36:23+00:00"
+ "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
+ "homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
+ "keywords": [
+ "OpenXML",
+ "excel",
+ "gnumeric",
+ "ods",
+ "php",
+ "spreadsheet",
+ "xls",
+ "xlsx"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
+ "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.0"
+ },
+ "time": "2023-06-14T22:48:31+00:00"
},
{
- "name": "league/flysystem",
- "version": "3.27.0",
+ "name": "phpoption/phpoption",
+ "version": "1.9.2",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/flysystem.git",
- "reference": "4729745b1ab737908c7d055148c9a6b3e959832f"
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f",
- "reference": "4729745b1ab737908c7d055148c9a6b3e959832f",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820",
+ "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820",
"shasum": ""
},
"require": {
- "league/flysystem-local": "^3.0.0",
- "league/mime-type-detection": "^1.0.0",
- "php": "^8.0.2"
- },
- "conflict": {
- "async-aws/core": "<1.19.0",
- "async-aws/s3": "<1.14.0",
- "aws/aws-sdk-php": "3.209.31 || 3.210.0",
- "guzzlehttp/guzzle": "<7.0",
- "guzzlehttp/ringphp": "<1.1.1",
- "phpseclib/phpseclib": "3.0.15",
- "symfony/http-client": "<5.2"
+ "php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "async-aws/s3": "^1.5 || ^2.0",
- "async-aws/simple-s3": "^1.1 || ^2.0",
- "aws/aws-sdk-php": "^3.295.10",
- "composer/semver": "^3.0",
- "ext-fileinfo": "*",
- "ext-ftp": "*",
- "ext-zip": "*",
- "friendsofphp/php-cs-fixer": "^3.5",
- "google/cloud-storage": "^1.23",
- "microsoft/azure-storage-blob": "^1.1",
- "phpseclib/phpseclib": "^3.0.36",
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^9.5.11|^10.0",
- "sabre/dav": "^4.6.0"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
},
- "type": "library",
"autoload": {
"psr-4": {
- "League\\Flysystem\\": "src"
+ "PhpOption\\": "src/PhpOption/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "Apache-2.0"
],
"authors": [
{
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
}
],
- "description": "File storage abstraction for PHP",
+ "description": "Option Type for PHP",
"keywords": [
- "WebDAV",
- "aws",
- "cloud",
- "file",
- "files",
- "filesystem",
- "filesystems",
- "ftp",
- "s3",
- "sftp",
- "storage"
+ "language",
+ "option",
+ "php",
+ "type"
],
"support": {
- "issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.27.0"
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.2"
},
"funding": [
{
- "url": "https://ecologi.com/frankdejonge",
- "type": "custom"
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
},
{
- "url": "https://github.com/frankdejonge",
- "type": "github"
+ "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+ "type": "tidelift"
}
],
- "time": "2024-04-07T19:17:50+00:00"
+ "time": "2023-11-12T21:59:55+00:00"
},
{
- "name": "league/flysystem-local",
- "version": "3.25.1",
+ "name": "pragmarx/google2fa",
+ "version": "v8.0.1",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/flysystem-local.git",
- "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92"
+ "url": "https://github.com/antonioribeiro/google2fa.git",
+ "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92",
- "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92",
+ "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/80c3d801b31fe165f8fe99ea085e0a37834e1be3",
+ "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3",
"shasum": ""
},
"require": {
- "ext-fileinfo": "*",
- "league/flysystem": "^3.0.0",
- "league/mime-type-detection": "^1.0.0",
- "php": "^8.0.2"
+ "paragonie/constant_time_encoding": "^1.0|^2.0",
+ "php": "^7.1|^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.18",
+ "phpunit/phpunit": "^7.5.15|^8.5|^9.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "League\\Flysystem\\Local\\": ""
+ "PragmaRX\\Google2FA\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1743,60 +4261,50 @@
],
"authors": [
{
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
+ "name": "Antonio Carlos Ribeiro",
+ "email": "acr@antoniocarlosribeiro.com",
+ "role": "Creator & Designer"
}
],
- "description": "Local filesystem adapter for Flysystem.",
+ "description": "A One Time Password Authentication package, compatible with Google Authenticator.",
"keywords": [
- "Flysystem",
- "file",
- "files",
- "filesystem",
- "local"
+ "2fa",
+ "Authentication",
+ "Two Factor Authentication",
+ "google2fa"
],
"support": {
- "source": "https://github.com/thephpleague/flysystem-local/tree/3.25.1"
+ "issues": "https://github.com/antonioribeiro/google2fa/issues",
+ "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.1"
},
- "funding": [
- {
- "url": "https://ecologi.com/frankdejonge",
- "type": "custom"
- },
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- }
- ],
- "time": "2024-03-15T19:58:44+00:00"
+ "time": "2022-06-13T21:57:56+00:00"
},
{
- "name": "league/mime-type-detection",
- "version": "1.15.0",
+ "name": "psr/cache",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
- "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
- "ext-fileinfo": "*",
- "php": "^7.4 || ^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3.2",
- "phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
+ "php": ">=8.0.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "League\\MimeTypeDetection\\": "src"
+ "Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1805,92 +4313,42 @@
],
"authors": [
{
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Mime-type detection for Flysystem",
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
"support": {
- "issues": "https://github.com/thephpleague/mime-type-detection/issues",
- "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
},
- "funding": [
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
- "type": "tidelift"
- }
- ],
- "time": "2024-01-28T23:22:08+00:00"
+ "time": "2021-02-03T23:26:27+00:00"
},
{
- "name": "monolog/monolog",
- "version": "3.6.0",
+ "name": "psr/clock",
+ "version": "1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654"
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
- "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "psr/log": "^2.0 || ^3.0"
- },
- "provide": {
- "psr/log-implementation": "3.0.0"
- },
- "require-dev": {
- "aws/aws-sdk-php": "^3.0",
- "doctrine/couchdb": "~1.0@dev",
- "elasticsearch/elasticsearch": "^7 || ^8",
- "ext-json": "*",
- "graylog2/gelf-php": "^1.4.2 || ^2.0",
- "guzzlehttp/guzzle": "^7.4.5",
- "guzzlehttp/psr7": "^2.2",
- "mongodb/mongodb": "^1.8",
- "php-amqplib/php-amqplib": "~2.4 || ^3",
- "phpstan/phpstan": "^1.9",
- "phpstan/phpstan-deprecation-rules": "^1.0",
- "phpstan/phpstan-strict-rules": "^1.4",
- "phpunit/phpunit": "^10.5.17",
- "predis/predis": "^1.1 || ^2",
- "ruflin/elastica": "^7",
- "symfony/mailer": "^5.4 || ^6",
- "symfony/mime": "^5.4 || ^6"
- },
- "suggest": {
- "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
- "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
- "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
- "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
- "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
- "ext-mbstring": "Allow to work properly with unicode symbols",
- "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
- "ext-openssl": "Required to send log messages using SSL",
- "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
- "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
- "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
- "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
- "rollbar/rollbar": "Allow sending log messages to Rollbar",
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+ "php": "^7.0 || ^8.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Monolog\\": "src/Monolog"
+ "Psr\\Clock\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1899,95 +4357,51 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "https://seld.be"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
- "homepage": "https://github.com/Seldaek/monolog",
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
"keywords": [
- "log",
- "logging",
- "psr-3"
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
],
"support": {
- "issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/3.6.0"
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
},
- "funding": [
- {
- "url": "https://github.com/Seldaek",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
- "type": "tidelift"
- }
- ],
- "time": "2024-04-12T21:02:21+00:00"
+ "time": "2022-11-25T14:36:26+00:00"
},
{
- "name": "nesbot/carbon",
- "version": "3.3.0",
+ "name": "psr/container",
+ "version": "2.0.2",
"source": {
"type": "git",
- "url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "7219739c4e01d4680c980545821733b6ed8ee880"
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7219739c4e01d4680c980545821733b6ed8ee880",
- "reference": "7219739c4e01d4680c980545821733b6ed8ee880",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
"shasum": ""
},
"require": {
- "carbonphp/carbon-doctrine-types": "*",
- "ext-json": "*",
- "php": "^8.1",
- "psr/clock": "^1.0",
- "symfony/clock": "^6.3 || ^7.0",
- "symfony/polyfill-mbstring": "^1.0",
- "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0"
- },
- "provide": {
- "psr/clock-implementation": "1.0"
- },
- "require-dev": {
- "doctrine/dbal": "^3.6.3 || ^4.0",
- "doctrine/orm": "^2.15.2 || ^3.0",
- "friendsofphp/php-cs-fixer": "^3.52.1",
- "kylekatarnls/multi-tester": "^2.5.3",
- "ondrejmirtes/better-reflection": "^6.25.0.4",
- "phpmd/phpmd": "^2.15.0",
- "phpstan/extension-installer": "^1.3.1",
- "phpstan/phpstan": "^1.10.65",
- "phpunit/phpunit": "^10.5.15",
- "squizlabs/php_codesniffer": "^3.9.0"
+ "php": ">=7.4.0"
},
- "bin": [
- "bin/carbon"
- ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev",
- "dev-2.x": "2.x-dev"
- },
- "laravel": {
- "providers": [
- "Carbon\\Laravel\\ServiceProvider"
- ]
- },
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "Carbon\\": "src/Carbon/"
+ "Psr\\Container\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1996,296 +4410,208 @@
],
"authors": [
{
- "name": "Brian Nesbitt",
- "email": "brian@nesbot.com",
- "homepage": "https://markido.com"
- },
- {
- "name": "kylekatarnls",
- "homepage": "https://github.com/kylekatarnls"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "An API extension for DateTime that supports 281 different languages.",
- "homepage": "https://carbon.nesbot.com",
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
"keywords": [
- "date",
- "datetime",
- "time"
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
],
"support": {
- "docs": "https://carbon.nesbot.com/docs",
- "issues": "https://github.com/briannesbitt/Carbon/issues",
- "source": "https://github.com/briannesbitt/Carbon"
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
},
- "funding": [
- {
- "url": "https://github.com/sponsors/kylekatarnls",
- "type": "github"
- },
- {
- "url": "https://opencollective.com/Carbon#sponsor",
- "type": "opencollective"
- },
- {
- "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
- "type": "tidelift"
- }
- ],
- "time": "2024-04-18T16:35:06+00:00"
+ "time": "2021-11-05T16:47:00+00:00"
},
{
- "name": "nette/schema",
- "version": "v1.3.0",
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/nette/schema.git",
- "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188"
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
- "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
"shasum": ""
},
"require": {
- "nette/utils": "^4.0",
- "php": "8.1 - 8.3"
- },
- "require-dev": {
- "nette/tester": "^2.4",
- "phpstan/phpstan-nette": "^1.0",
- "tracy/tracy": "^2.8"
+ "php": ">=7.2.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.3-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause",
- "GPL-2.0-only",
- "GPL-3.0-only"
+ "MIT"
],
"authors": [
{
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
}
],
- "description": "📐 Nette Schema: validating data structures against a given Schema.",
- "homepage": "https://nette.org",
+ "description": "Standard interfaces for event handling.",
"keywords": [
- "config",
- "nette"
+ "events",
+ "psr",
+ "psr-14"
],
"support": {
- "issues": "https://github.com/nette/schema/issues",
- "source": "https://github.com/nette/schema/tree/v1.3.0"
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
},
- "time": "2023-12-11T11:54:22+00:00"
+ "time": "2019-01-08T18:20:26+00:00"
},
{
- "name": "nette/utils",
- "version": "v4.0.4",
+ "name": "psr/http-client",
+ "version": "1.0.3",
"source": {
"type": "git",
- "url": "https://github.com/nette/utils.git",
- "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218"
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
- "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
"shasum": ""
},
"require": {
- "php": ">=8.0 <8.4"
- },
- "conflict": {
- "nette/finder": "<3",
- "nette/schema": "<1.2.2"
- },
- "require-dev": {
- "jetbrains/phpstorm-attributes": "dev-master",
- "nette/tester": "^2.5",
- "phpstan/phpstan": "^1.0",
- "tracy/tracy": "^2.9"
- },
- "suggest": {
- "ext-gd": "to use Image",
- "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
- "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
- "ext-json": "to use Nette\\Utils\\Json",
- "ext-mbstring": "to use Strings::lower() etc...",
- "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause",
- "GPL-2.0-only",
- "GPL-3.0-only"
+ "MIT"
],
"authors": [
{
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
- "homepage": "https://nette.org",
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
"keywords": [
- "array",
- "core",
- "datetime",
- "images",
- "json",
- "nette",
- "paginator",
- "password",
- "slugify",
- "string",
- "unicode",
- "utf-8",
- "utility",
- "validation"
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
],
"support": {
- "issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v4.0.4"
+ "source": "https://github.com/php-fig/http-client"
},
- "time": "2024-01-17T16:50:36+00:00"
+ "time": "2023-09-23T14:17:50+00:00"
},
{
- "name": "nikic/php-parser",
- "version": "v5.0.2",
+ "name": "psr/http-factory",
+ "version": "1.0.2",
"source": {
"type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13"
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13",
- "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35",
"shasum": ""
},
"require": {
- "ext-ctype": "*",
- "ext-json": "*",
- "ext-tokenizer": "*",
- "php": ">=7.4"
- },
- "require-dev": {
- "ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0 || ^2.0"
},
- "bin": [
- "bin/php-parse"
- ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "PhpParser\\": "lib/PhpParser"
+ "Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Nikita Popov"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "A PHP parser written in PHP",
+ "description": "Common interfaces for PSR-7 HTTP message factories",
"keywords": [
- "parser",
- "php"
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
],
"support": {
- "issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2"
+ "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
},
- "time": "2024-03-05T20:51:40+00:00"
+ "time": "2023-04-10T20:10:41+00:00"
},
{
- "name": "nunomaduro/termwind",
- "version": "v2.0.1",
+ "name": "psr/http-message",
+ "version": "2.0",
"source": {
"type": "git",
- "url": "https://github.com/nunomaduro/termwind.git",
- "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a"
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a",
- "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
"shasum": ""
},
"require": {
- "ext-mbstring": "*",
- "php": "^8.2",
- "symfony/console": "^7.0.4"
- },
- "require-dev": {
- "ergebnis/phpstan-rules": "^2.2.0",
- "illuminate/console": "^11.0.0",
- "laravel/pint": "^1.14.0",
- "mockery/mockery": "^1.6.7",
- "pestphp/pest": "^2.34.1",
- "phpstan/phpstan": "^1.10.59",
- "phpstan/phpstan-strict-rules": "^1.5.2",
- "symfony/var-dumper": "^7.0.4",
- "thecodingmachine/phpstan-strict-rules": "^1.0.0"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"extra": {
- "laravel": {
- "providers": [
- "Termwind\\Laravel\\TermwindServiceProvider"
- ]
- },
"branch-alias": {
- "dev-2.x": "2.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
- "files": [
- "src/Functions.php"
- ],
"psr-4": {
- "Termwind\\": "src/"
+ "Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2294,135 +4620,101 @@
],
"authors": [
{
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Its like Tailwind CSS, but for the console.",
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
"keywords": [
- "cli",
- "console",
- "css",
- "package",
- "php",
- "style"
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
],
"support": {
- "issues": "https://github.com/nunomaduro/termwind/issues",
- "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1"
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
},
- "funding": [
- {
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- },
- {
- "url": "https://github.com/xiCO2k",
- "type": "github"
- }
- ],
- "time": "2024-03-06T16:17:14+00:00"
+ "time": "2023-04-04T09:54:51+00:00"
},
{
- "name": "phpoption/phpoption",
- "version": "1.9.2",
+ "name": "psr/log",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/schmittjoh/php-option.git",
- "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820"
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820",
- "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"shasum": ""
},
"require": {
- "php": "^7.2.5 || ^8.0"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": true
- },
"branch-alias": {
- "dev-master": "1.9-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "PhpOption\\": "src/PhpOption/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "Apache-2.0"
+ "MIT"
],
"authors": [
{
- "name": "Johannes M. Schmitt",
- "email": "schmittjoh@gmail.com",
- "homepage": "https://github.com/schmittjoh"
- },
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Option Type for PHP",
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
"keywords": [
- "language",
- "option",
- "php",
- "type"
+ "log",
+ "psr",
+ "psr-3"
],
"support": {
- "issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.9.2"
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
- "type": "tidelift"
- }
- ],
- "time": "2023-11-12T21:59:55+00:00"
+ "time": "2021-07-14T16:46:02+00:00"
},
{
- "name": "psr/clock",
- "version": "1.0.0",
+ "name": "psr/simple-cache",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/clock.git",
- "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
- "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
"shasum": ""
},
"require": {
- "php": "^7.0 || ^8.0"
+ "php": ">=8.0.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "Psr\\Clock\\": "src/"
+ "Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2435,47 +4727,71 @@
"homepage": "https://www.php-fig.org/"
}
],
- "description": "Common interface for reading the clock.",
- "homepage": "https://github.com/php-fig/clock",
+ "description": "Common interfaces for simple caching",
"keywords": [
- "clock",
- "now",
+ "cache",
+ "caching",
"psr",
- "psr-20",
- "time"
+ "psr-16",
+ "simple-cache"
],
"support": {
- "issues": "https://github.com/php-fig/clock/issues",
- "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
},
- "time": "2022-11-25T14:36:26+00:00"
+ "time": "2021-10-29T13:26:27+00:00"
},
{
- "name": "psr/container",
- "version": "2.0.2",
+ "name": "psy/psysh",
+ "version": "v0.12.3",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ "url": "https://github.com/bobthecow/psysh.git",
+ "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73",
+ "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73",
"shasum": ""
},
"require": {
- "php": ">=7.4.0"
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "nikic/php-parser": "^5.0 || ^4.0",
+ "php": "^8.0 || ^7.4",
+ "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4",
+ "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4"
+ },
+ "conflict": {
+ "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.2"
+ },
+ "suggest": {
+ "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
+ "ext-pdo-sqlite": "The doc command requires SQLite to work.",
+ "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well."
},
+ "bin": [
+ "bin/psysh"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-main": "0.12.x-dev"
+ },
+ "bamarni-bin": {
+ "bin-links": false,
+ "forward-command": false
}
},
"autoload": {
+ "files": [
+ "src/functions.php"
+ ],
"psr-4": {
- "Psr\\Container\\": "src/"
+ "Psy\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2484,52 +4800,51 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "name": "Justin Hileman",
+ "email": "justin@justinhileman.info",
+ "homepage": "http://justinhileman.com"
}
],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
+ "description": "An interactive shell for modern PHP.",
+ "homepage": "http://psysh.org",
"keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
+ "REPL",
+ "console",
+ "interactive",
+ "shell"
],
"support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/2.0.2"
+ "issues": "https://github.com/bobthecow/psysh/issues",
+ "source": "https://github.com/bobthecow/psysh/tree/v0.12.3"
},
- "time": "2021-11-05T16:47:00+00:00"
+ "time": "2024-04-02T15:57:53+00:00"
},
{
- "name": "psr/event-dispatcher",
- "version": "1.0.0",
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/event-dispatcher.git",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "php": ">=5.6"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
},
+ "type": "library",
"autoload": {
- "psr-4": {
- "Psr\\EventDispatcher\\": "src/"
- }
+ "files": [
+ "src/getallheaders.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2537,49 +4852,68 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
}
],
- "description": "Standard interfaces for event handling.",
- "keywords": [
- "events",
- "psr",
- "psr-14"
- ],
+ "description": "A polyfill for getallheaders.",
"support": {
- "issues": "https://github.com/php-fig/event-dispatcher/issues",
- "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
},
- "time": "2019-01-08T18:20:26+00:00"
+ "time": "2019-03-08T08:55:37+00:00"
},
{
- "name": "psr/http-client",
- "version": "1.0.3",
+ "name": "ramsey/collection",
+ "version": "2.0.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-client.git",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
+ "url": "https://github.com/ramsey/collection.git",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
"shasum": ""
},
"require": {
- "php": "^7.0 || ^8.0",
- "psr/http-message": "^1.0 || ^2.0"
+ "php": "^8.1"
+ },
+ "require-dev": {
+ "captainhook/plugin-composer": "^5.3",
+ "ergebnis/composer-normalize": "^2.28.3",
+ "fakerphp/faker": "^1.21",
+ "hamcrest/hamcrest-php": "^2.0",
+ "jangregor/phpstan-prophecy": "^1.0",
+ "mockery/mockery": "^1.5",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcsstandards/phpcsutils": "^1.0.0-rc1",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpstan/extension-installer": "^1.2",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "ramsey/coding-standard": "^2.0.3",
+ "ramsey/conventional-commits": "^1.3",
+ "vimeo/psalm": "^5.4"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
+ "captainhook": {
+ "force-install": true
+ },
+ "ramsey/conventional-commits": {
+ "configFile": "conventional-commits.json"
}
},
"autoload": {
"psr-4": {
- "Psr\\Http\\Client\\": "src/"
+ "Ramsey\\Collection\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2588,104 +4922,152 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
}
],
- "description": "Common interface for HTTP clients",
- "homepage": "https://github.com/php-fig/http-client",
+ "description": "A PHP library for representing and manipulating collections.",
"keywords": [
- "http",
- "http-client",
- "psr",
- "psr-18"
+ "array",
+ "collection",
+ "hash",
+ "map",
+ "queue",
+ "set"
],
"support": {
- "source": "https://github.com/php-fig/http-client"
+ "issues": "https://github.com/ramsey/collection/issues",
+ "source": "https://github.com/ramsey/collection/tree/2.0.0"
},
- "time": "2023-09-23T14:17:50+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-12-31T21:50:55+00:00"
},
{
- "name": "psr/http-factory",
- "version": "1.0.2",
+ "name": "ramsey/uuid",
+ "version": "4.7.5",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-factory.git",
- "reference": "e616d01114759c4c489f93b099585439f795fe35"
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
- "reference": "e616d01114759c4c489f93b099585439f795fe35",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
"shasum": ""
},
"require": {
- "php": ">=7.0.0",
- "psr/http-message": "^1.0 || ^2.0"
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+ "ext-json": "*",
+ "php": "^8.0",
+ "ramsey/collection": "^1.2 || ^2.0"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "captainhook/captainhook": "^5.10",
+ "captainhook/plugin-composer": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.8",
+ "ergebnis/composer-normalize": "^2.15",
+ "mockery/mockery": "^1.3",
+ "paragonie/random-lib": "^2",
+ "php-mock/php-mock": "^2.2",
+ "php-mock/php-mock-mockery": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.1",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "ramsey/composer-repl": "^1.4",
+ "slevomat/coding-standard": "^8.4",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.9"
+ },
+ "suggest": {
+ "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
+ "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
+ "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
+ "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
+ "captainhook": {
+ "force-install": true
}
},
"autoload": {
+ "files": [
+ "src/functions.php"
+ ],
"psr-4": {
- "Psr\\Http\\Message\\": "src/"
+ "Ramsey\\Uuid\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
"keywords": [
- "factory",
- "http",
- "message",
- "psr",
- "psr-17",
- "psr-7",
- "request",
- "response"
+ "guid",
+ "identifier",
+ "uuid"
],
"support": {
- "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+ "issues": "https://github.com/ramsey/uuid/issues",
+ "source": "https://github.com/ramsey/uuid/tree/4.7.5"
},
- "time": "2023-04-10T20:10:41+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-11-08T05:53:05+00:00"
},
{
- "name": "psr/http-message",
- "version": "2.0",
+ "name": "rize/uri-template",
+ "version": "0.3.6",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ "url": "https://github.com/rize/UriTemplate.git",
+ "reference": "34efe65c79710eed0883884f2285ae6d4a0aad19"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "url": "https://api.github.com/repos/rize/UriTemplate/zipball/34efe65c79710eed0883884f2285ae6d4a0aad19",
+ "reference": "34efe65c79710eed0883884f2285ae6d4a0aad19",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": ">=5.3.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
+ "require-dev": {
+ "phpunit/phpunit": "~4.8.36"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Psr\\Http\\Message\\": "src/"
+ "Rize\\": "src/Rize"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2694,51 +5076,73 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "name": "Marut K",
+ "homepage": "http://twitter.com/rezigned"
}
],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
+ "description": "PHP URI Template (RFC 6570) supports both expansion & extraction",
"keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
+ "RFC 6570",
+ "template",
+ "uri"
],
"support": {
- "source": "https://github.com/php-fig/http-message/tree/2.0"
+ "issues": "https://github.com/rize/UriTemplate/issues",
+ "source": "https://github.com/rize/UriTemplate/tree/0.3.6"
},
- "time": "2023-04-04T09:54:51+00:00"
+ "funding": [
+ {
+ "url": "https://www.paypal.me/rezigned",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/rezigned",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/rize-uri-template",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2024-03-10T08:07:49+00:00"
},
{
- "name": "psr/log",
- "version": "3.0.0",
+ "name": "spatie/image",
+ "version": "3.5.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ "url": "https://github.com/spatie/image.git",
+ "reference": "05166a6fae90b4c2ab57ff2d25d7f97a5e29f47b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "url": "https://api.github.com/repos/spatie/image/zipball/05166a6fae90b4c2ab57ff2d25d7f97a5e29f47b",
+ "reference": "05166a6fae90b4c2ab57ff2d25d7f97a5e29f47b",
"shasum": ""
},
"require": {
- "php": ">=8.0.0"
+ "ext-exif": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "php": "^8.2",
+ "spatie/image-optimizer": "^1.7.2",
+ "spatie/temporary-directory": "^2.2",
+ "symfony/process": "^6.4|^7.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
+ "require-dev": {
+ "ext-gd": "*",
+ "ext-imagick": "*",
+ "pestphp/pest": "^2.28",
+ "phpstan/phpstan": "^1.10.50",
+ "spatie/pest-plugin-snapshots": "^2.1",
+ "spatie/pixelmatch-php": "^1.0",
+ "spatie/ray": "^1.40.1",
+ "symfony/var-dumper": "^6.4|7.0"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Psr\\Log\\": "src"
+ "Spatie\\Image\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2747,48 +5151,62 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
}
],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
+ "description": "Manipulate images with an expressive API",
+ "homepage": "https://github.com/spatie/image",
"keywords": [
- "log",
- "psr",
- "psr-3"
+ "image",
+ "spatie"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/3.0.0"
+ "source": "https://github.com/spatie/image/tree/3.5.0"
},
- "time": "2021-07-14T16:46:02+00:00"
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-17T13:16:06+00:00"
},
{
- "name": "psr/simple-cache",
- "version": "3.0.0",
+ "name": "spatie/image-optimizer",
+ "version": "1.7.2",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/simple-cache.git",
- "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ "url": "https://github.com/spatie/image-optimizer.git",
+ "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
- "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/62f7463483d1bd975f6f06025d89d42a29608fe1",
+ "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1",
"shasum": ""
},
"require": {
- "php": ">=8.0.0"
+ "ext-fileinfo": "*",
+ "php": "^7.3|^8.0",
+ "psr/log": "^1.0 | ^2.0 | ^3.0",
+ "symfony/process": "^4.2|^5.0|^6.0|^7.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
+ "require-dev": {
+ "pestphp/pest": "^1.21",
+ "phpunit/phpunit": "^8.5.21|^9.4.4",
+ "symfony/var-dumper": "^4.2|^5.0|^6.0|^7.0"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Psr\\SimpleCache\\": "src/"
+ "Spatie\\ImageOptimizer\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2797,75 +5215,90 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
}
],
- "description": "Common interfaces for simple caching",
+ "description": "Easily optimize images using PHP",
+ "homepage": "https://github.com/spatie/image-optimizer",
"keywords": [
- "cache",
- "caching",
- "psr",
- "psr-16",
- "simple-cache"
+ "image-optimizer",
+ "spatie"
],
"support": {
- "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ "issues": "https://github.com/spatie/image-optimizer/issues",
+ "source": "https://github.com/spatie/image-optimizer/tree/1.7.2"
},
- "time": "2021-10-29T13:26:27+00:00"
+ "time": "2023-11-03T10:08:02+00:00"
},
{
- "name": "psy/psysh",
- "version": "v0.12.3",
+ "name": "spatie/laravel-medialibrary",
+ "version": "11.4.7",
"source": {
"type": "git",
- "url": "https://github.com/bobthecow/psysh.git",
- "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73"
+ "url": "https://github.com/spatie/laravel-medialibrary.git",
+ "reference": "85f5f8284f827b8f2b426943e357e3df117ad1f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73",
- "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73",
+ "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/85f5f8284f827b8f2b426943e357e3df117ad1f5",
+ "reference": "85f5f8284f827b8f2b426943e357e3df117ad1f5",
"shasum": ""
},
"require": {
+ "ext-exif": "*",
+ "ext-fileinfo": "*",
"ext-json": "*",
- "ext-tokenizer": "*",
- "nikic/php-parser": "^5.0 || ^4.0",
- "php": "^8.0 || ^7.4",
- "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4",
- "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4"
+ "illuminate/bus": "^10.0|^11.0",
+ "illuminate/conditionable": "^10.0|^11.0",
+ "illuminate/console": "^10.0|^11.0",
+ "illuminate/database": "^10.0|^11.0",
+ "illuminate/pipeline": "^10.0|^11.0",
+ "illuminate/support": "^10.0|^11.0",
+ "maennchen/zipstream-php": "^3.1",
+ "php": "^8.2",
+ "spatie/image": "^3.3.2",
+ "spatie/laravel-package-tools": "^1.16.1",
+ "spatie/temporary-directory": "^2.2",
+ "symfony/console": "^6.4.1|^7.0"
},
"conflict": {
- "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4"
+ "php-ffmpeg/php-ffmpeg": "<0.6.1"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.2"
+ "aws/aws-sdk-php": "^3.293.10",
+ "ext-imagick": "*",
+ "ext-pdo_sqlite": "*",
+ "ext-zip": "*",
+ "guzzlehttp/guzzle": "^7.8.1",
+ "larastan/larastan": "^2.7",
+ "league/flysystem-aws-s3-v3": "^3.22",
+ "mockery/mockery": "^1.6.7",
+ "orchestra/testbench": "^7.0|^8.17|^9.0",
+ "pestphp/pest": "^2.28",
+ "phpstan/extension-installer": "^1.3.1",
+ "spatie/laravel-ray": "^1.33",
+ "spatie/pdf-to-image": "^2.2",
+ "spatie/pest-plugin-snapshots": "^2.1"
},
"suggest": {
- "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
- "ext-pdo-sqlite": "The doc command requires SQLite to work.",
- "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well."
+ "league/flysystem-aws-s3-v3": "Required to use AWS S3 file storage",
+ "php-ffmpeg/php-ffmpeg": "Required for generating video thumbnails",
+ "spatie/pdf-to-image": "Required for generating thumbnails of PDFs and SVGs"
},
- "bin": [
- "bin/psysh"
- ],
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "0.12.x-dev"
- },
- "bamarni-bin": {
- "bin-links": false,
- "forward-command": false
+ "laravel": {
+ "providers": [
+ "Spatie\\MediaLibrary\\MediaLibraryServiceProvider"
+ ]
}
},
"autoload": {
- "files": [
- "src/functions.php"
- ],
"psr-4": {
- "Psy\\": "src/"
+ "Spatie\\MediaLibrary\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2874,51 +5307,70 @@
],
"authors": [
{
- "name": "Justin Hileman",
- "email": "justin@justinhileman.info",
- "homepage": "http://justinhileman.com"
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
}
],
- "description": "An interactive shell for modern PHP.",
- "homepage": "http://psysh.org",
+ "description": "Associate files with Eloquent models",
+ "homepage": "https://github.com/spatie/laravel-medialibrary",
"keywords": [
- "REPL",
- "console",
- "interactive",
- "shell"
+ "cms",
+ "conversion",
+ "downloads",
+ "images",
+ "laravel",
+ "laravel-medialibrary",
+ "media",
+ "spatie"
],
"support": {
- "issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.12.3"
+ "issues": "https://github.com/spatie/laravel-medialibrary/issues",
+ "source": "https://github.com/spatie/laravel-medialibrary/tree/11.4.7"
},
- "time": "2024-04-02T15:57:53+00:00"
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-24T13:42:14+00:00"
},
{
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
+ "name": "spatie/laravel-package-tools",
+ "version": "1.16.4",
"source": {
"type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ "url": "https://github.com/spatie/laravel-package-tools.git",
+ "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53",
+ "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53",
"shasum": ""
},
"require": {
- "php": ">=5.6"
+ "illuminate/contracts": "^9.28|^10.0|^11.0",
+ "php": "^8.0"
},
"require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
+ "mockery/mockery": "^1.5",
+ "orchestra/testbench": "^7.7|^8.0",
+ "pestphp/pest": "^1.22",
+ "phpunit/phpunit": "^9.5.24",
+ "spatie/pest-plugin-test-time": "^1.1"
},
"type": "library",
"autoload": {
- "files": [
- "src/getallheaders.php"
- ]
+ "psr-4": {
+ "Spatie\\LaravelPackageTools\\": "src"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2926,68 +5378,68 @@
],
"authors": [
{
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "role": "Developer"
}
],
- "description": "A polyfill for getallheaders.",
+ "description": "Tools for creating Laravel packages",
+ "homepage": "https://github.com/spatie/laravel-package-tools",
+ "keywords": [
+ "laravel-package-tools",
+ "spatie"
+ ],
"support": {
- "issues": "https://github.com/ralouphie/getallheaders/issues",
- "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ "issues": "https://github.com/spatie/laravel-package-tools/issues",
+ "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.4"
},
- "time": "2019-03-08T08:55:37+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-20T07:29:11+00:00"
},
{
- "name": "ramsey/collection",
- "version": "2.0.0",
+ "name": "spatie/laravel-translatable",
+ "version": "6.6.2",
"source": {
"type": "git",
- "url": "https://github.com/ramsey/collection.git",
- "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"
+ "url": "https://github.com/spatie/laravel-translatable.git",
+ "reference": "529b4e89ad0b0982d9c635696260661d1cf2612c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
- "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/529b4e89ad0b0982d9c635696260661d1cf2612c",
+ "reference": "529b4e89ad0b0982d9c635696260661d1cf2612c",
"shasum": ""
},
"require": {
- "php": "^8.1"
+ "illuminate/database": "^9.0|^10.0|^11.0",
+ "illuminate/support": "^9.0|^10.0|^11.0",
+ "php": "^8.0",
+ "spatie/laravel-package-tools": "^1.11"
},
"require-dev": {
- "captainhook/plugin-composer": "^5.3",
- "ergebnis/composer-normalize": "^2.28.3",
- "fakerphp/faker": "^1.21",
- "hamcrest/hamcrest-php": "^2.0",
- "jangregor/phpstan-prophecy": "^1.0",
- "mockery/mockery": "^1.5",
- "php-parallel-lint/php-console-highlighter": "^1.0",
- "php-parallel-lint/php-parallel-lint": "^1.3",
- "phpcsstandards/phpcsutils": "^1.0.0-rc1",
- "phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1.2",
- "phpstan/phpstan": "^1.9",
- "phpstan/phpstan-mockery": "^1.1",
- "phpstan/phpstan-phpunit": "^1.3",
- "phpunit/phpunit": "^9.5",
- "psalm/plugin-mockery": "^1.1",
- "psalm/plugin-phpunit": "^0.18.4",
- "ramsey/coding-standard": "^2.0.3",
- "ramsey/conventional-commits": "^1.3",
- "vimeo/psalm": "^5.4"
+ "mockery/mockery": "^1.4",
+ "orchestra/testbench": "^7.0|^8.0|^9.0",
+ "pestphp/pest": "^1.20|^2.0"
},
"type": "library",
"extra": {
- "captainhook": {
- "force-install": true
+ "laravel": {
+ "providers": [
+ "Spatie\\Translatable\\TranslatableServiceProvider"
+ ]
},
- "ramsey/conventional-commits": {
- "configFile": "conventional-commits.json"
+ "aliases": {
+ "Translatable": "Spatie\\Translatable\\Facades\\Translatable"
}
},
"autoload": {
"psr-4": {
- "Ramsey\\Collection\\": "src/"
+ "Spatie\\Translatable\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2996,127 +5448,101 @@
],
"authors": [
{
- "name": "Ben Ramsey",
- "email": "ben@benramsey.com",
- "homepage": "https://benramsey.com"
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian De Deyne",
+ "email": "sebastian@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
}
],
- "description": "A PHP library for representing and manipulating collections.",
+ "description": "A trait to make an Eloquent model hold translations",
+ "homepage": "https://github.com/spatie/laravel-translatable",
"keywords": [
- "array",
- "collection",
- "hash",
- "map",
- "queue",
- "set"
+ "eloquent",
+ "i8n",
+ "laravel-translatable",
+ "model",
+ "multilingual",
+ "spatie",
+ "translate"
],
"support": {
- "issues": "https://github.com/ramsey/collection/issues",
- "source": "https://github.com/ramsey/collection/tree/2.0.0"
+ "issues": "https://github.com/spatie/laravel-translatable/issues",
+ "source": "https://github.com/spatie/laravel-translatable/tree/6.6.2"
},
"funding": [
{
- "url": "https://github.com/ramsey",
+ "url": "https://github.com/spatie",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
- "type": "tidelift"
}
],
- "time": "2022-12-31T21:50:55+00:00"
+ "time": "2024-03-01T10:24:53+00:00"
},
{
- "name": "ramsey/uuid",
- "version": "4.7.5",
+ "name": "spatie/temporary-directory",
+ "version": "2.2.1",
"source": {
"type": "git",
- "url": "https://github.com/ramsey/uuid.git",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
+ "url": "https://github.com/spatie/temporary-directory.git",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
+ "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a",
"shasum": ""
},
- "require": {
- "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
- "ext-json": "*",
- "php": "^8.0",
- "ramsey/collection": "^1.2 || ^2.0"
- },
- "replace": {
- "rhumsaa/uuid": "self.version"
- },
- "require-dev": {
- "captainhook/captainhook": "^5.10",
- "captainhook/plugin-composer": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "doctrine/annotations": "^1.8",
- "ergebnis/composer-normalize": "^2.15",
- "mockery/mockery": "^1.3",
- "paragonie/random-lib": "^2",
- "php-mock/php-mock": "^2.2",
- "php-mock/php-mock-mockery": "^1.3",
- "php-parallel-lint/php-parallel-lint": "^1.1",
- "phpbench/phpbench": "^1.0",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-mockery": "^1.1",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^8.5 || ^9",
- "ramsey/composer-repl": "^1.4",
- "slevomat/coding-standard": "^8.4",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.9"
- },
- "suggest": {
- "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
- "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
- "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
- "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
- "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
- },
- "type": "library",
- "extra": {
- "captainhook": {
- "force-install": true
- }
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
},
+ "type": "library",
"autoload": {
- "files": [
- "src/functions.php"
- ],
"psr-4": {
- "Ramsey\\Uuid\\": "src/"
+ "Spatie\\TemporaryDirectory\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
+ "authors": [
+ {
+ "name": "Alex Vanderbist",
+ "email": "alex@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Easily create, use and destroy temporary directories",
+ "homepage": "https://github.com/spatie/temporary-directory",
"keywords": [
- "guid",
- "identifier",
- "uuid"
+ "php",
+ "spatie",
+ "temporary-directory"
],
"support": {
- "issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.7.5"
+ "issues": "https://github.com/spatie/temporary-directory/issues",
+ "source": "https://github.com/spatie/temporary-directory/tree/2.2.1"
},
"funding": [
{
- "url": "https://github.com/ramsey",
- "type": "github"
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
},
{
- "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
- "type": "tidelift"
+ "url": "https://github.com/spatie",
+ "type": "github"
}
],
- "time": "2023-11-08T05:53:05+00:00"
+ "time": "2023-12-25T11:46:58+00:00"
},
{
"name": "symfony/clock",
@@ -5468,6 +7894,365 @@
},
"time": "2023-12-08T13:03:43+00:00"
},
+ {
+ "name": "tomatophp/console-helpers",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tomatophp/console-helpers.git",
+ "reference": "69dd818a2bfa7d038467fb526be6c9b573d36a34"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tomatophp/console-helpers/zipball/69dd818a2bfa7d038467fb526be6c9b573d36a34",
+ "reference": "69dd818a2bfa7d038467fb526be6c9b573d36a34",
+ "shasum": ""
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "TomatoPHP\\ConsoleHelpers\\ConsoleHelpersServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TomatoPHP\\ConsoleHelpers\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fady Mondy",
+ "email": "EngFadyMondy@gmail.com"
+ }
+ ],
+ "description": "tons of helper you need for you artisan command line application",
+ "keywords": [
+ "application",
+ "artisan",
+ "command",
+ "console",
+ "helpers",
+ "line"
+ ],
+ "support": {
+ "issues": "https://github.com/tomatophp/console-helpers/issues",
+ "source": "https://github.com/tomatophp/console-helpers/tree/v1.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/3x1io",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-12T12:00:38+00:00"
+ },
+ {
+ "name": "tomatophp/tomato-admin",
+ "version": "v1.2.20",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tomatophp/tomato-admin.git",
+ "reference": "ac768e7cb1494d86e556fc13b5db66ca821533f1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tomatophp/tomato-admin/zipball/ac768e7cb1494d86e556fc13b5db66ca821533f1",
+ "reference": "ac768e7cb1494d86e556fc13b5db66ca821533f1",
+ "shasum": ""
+ },
+ "require": {
+ "blade-ui-kit/blade-heroicons": "^2.3",
+ "kirschbaum-development/eloquent-power-joins": "^3.5",
+ "laravel/fortify": "^1.21",
+ "laravel/framework": "^11.0",
+ "laravel/jetstream": "^5.0",
+ "laravel/sanctum": "^4.0",
+ "maatwebsite/excel": "^3.1",
+ "spatie/laravel-medialibrary": "^11.4",
+ "tomatophp/console-helpers": "^1.1",
+ "tomatophp/tomato-plugins": "^1.2",
+ "tomatophp/tomato-splade": "^1.1"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "TomatoPHP\\TomatoAdmin\\TomatoAdminServiceProvider"
+ ],
+ "aliases": {
+ "Tomato": "TomatoPHP\\TomatoAdmin\\Facades\\Tomato",
+ "TomatoMenu": "TomatoPHP\\TomatoAdmin\\Facades\\TomatoMenu",
+ "TomatoWidget": "TomatoPHP\\TomatoAdmin\\Facades\\TomatoWidget",
+ "TomatoSlot": "TomatoPHP\\TomatoAdmin\\Facades\\TomatoSlot"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TomatoPHP\\TomatoAdmin\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fady Mondy",
+ "email": "EngFadyMondy@gmail.com"
+ }
+ ],
+ "description": "Tomato Admin Dashboard Build With FilamentPHP Theme for Laravel Splade",
+ "keywords": [
+ "blade",
+ "breeze",
+ "filamentphp",
+ "generator",
+ "inertiajs",
+ "laravel",
+ "php8",
+ "plugin",
+ "splade",
+ "tomatophp",
+ "vuejs"
+ ],
+ "support": {
+ "issues": "https://github.com/tomatophp/tomato-admin/issues",
+ "source": "https://github.com/tomatophp/tomato-admin/tree/v1.2.20"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/3x1io",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-24T13:38:42+00:00"
+ },
+ {
+ "name": "tomatophp/tomato-plugins",
+ "version": "v1.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tomatophp/tomato-plugins.git",
+ "reference": "d537586476a0b60b98bb3d01a293b0dfc0e5720b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tomatophp/tomato-plugins/zipball/d537586476a0b60b98bb3d01a293b0dfc0e5720b",
+ "reference": "d537586476a0b60b98bb3d01a293b0dfc0e5720b",
+ "shasum": ""
+ },
+ "require": {
+ "calebporzio/sushi": "^2.4",
+ "nwidart/laravel-modules": "^10.0",
+ "php": "^8.1|^8.2",
+ "tomatophp/console-helpers": "^1.1"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "TomatoPHP\\TomatoPlugins\\TomatoPluginsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TomatoPHP\\TomatoPlugins\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fady Mondy",
+ "email": "info@3x1.io"
+ }
+ ],
+ "description": "Plugins installer for Tomato PHP framework",
+ "keywords": [
+ "laravel",
+ "php",
+ "plugins",
+ "splade",
+ "tomatophp"
+ ],
+ "support": {
+ "issues": "https://github.com/tomatophp/tomato-plugins/issues",
+ "source": "https://github.com/tomatophp/tomato-plugins/tree/v1.2.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/3x1io",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-28T16:16:41+00:00"
+ },
+ {
+ "name": "tomatophp/tomato-splade",
+ "version": "v1.1.19",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tomatophp/tomato-splade.git",
+ "reference": "ab60204c3a2f4907722fe86250b1af6977c50c85"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tomatophp/tomato-splade/zipball/ab60204c3a2f4907722fe86250b1af6977c50c85",
+ "reference": "ab60204c3a2f4907722fe86250b1af6977c50c85",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^9.41|^10.0|^11.0",
+ "php": "^8.0 || ^8.1 || ^8.2"
+ },
+ "conflict": {
+ "laravel/framework": "9.36.0|9.36.1|9.36.2"
+ },
+ "require-dev": {
+ "laravel/pint": "^1.0",
+ "nunomaduro/collision": "^6.0",
+ "nunomaduro/larastan": "^2.0.1",
+ "orchestra/testbench": "^7.7|^8.0",
+ "phpunit/phpunit": "^9.5"
+ },
+ "suggest": {
+ "kirschbaum-development/eloquent-power-joins": "Required to enable support sorting by (nested) relationships in Splade Tables (^2.6)",
+ "maatwebsite/excel": "Required to enable support exports in Splade Tables (^3.1)",
+ "spatie/fractalistic": "Required to enable support for Fractal transformers (^2.9)"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "ProtoneMedia\\Splade\\ServiceProvider"
+ ],
+ "aliases": {
+ "Animation": "ProtoneMedia\\Splade\\Facades\\Animation",
+ "SEO": "ProtoneMedia\\Splade\\Facades\\SEO",
+ "Splade": "ProtoneMedia\\Splade\\Facades\\Splade",
+ "Toast": "ProtoneMedia\\Splade\\Facades\\Toast"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "ProtoneMedia\\Splade\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Pascal Baljet",
+ "email": "pascal@protone.media",
+ "role": "Developer"
+ },
+ {
+ "name": "Fady Mondy",
+ "email": "info@3x1.io",
+ "role": "Developer"
+ }
+ ],
+ "description": "Laravel Splade With my selected updates and components for Tomato PHP.",
+ "homepage": "https://github.com/tomatophp/tomato-splade",
+ "keywords": [
+ "laravel",
+ "laravel-splade",
+ "protonemedia"
+ ],
+ "support": {
+ "issues": "https://github.com/tomatophp/tomato-splade/issues",
+ "source": "https://github.com/tomatophp/tomato-splade/tree/v1.1.19"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/3x1io",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/pascalbaljet",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-24T13:38:14+00:00"
+ },
+ {
+ "name": "tomatophp/tomato-translations",
+ "version": "v1.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tomatophp/tomato-translations.git",
+ "reference": "a273f8d6687de1783aff4cae6e242b4320ab1051"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tomatophp/tomato-translations/zipball/a273f8d6687de1783aff4cae6e242b4320ab1051",
+ "reference": "a273f8d6687de1783aff4cae6e242b4320ab1051",
+ "shasum": ""
+ },
+ "require": {
+ "calebporzio/sushi": "^2.4",
+ "google/cloud-translate": "^1.12",
+ "php": "^8.0|^8.1",
+ "spatie/laravel-translatable": "^6.5",
+ "tomatophp/console-helpers": "^1.1"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "TomatoPHP\\TomatoTranslations\\TomatoTranslationsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TomatoPHP\\TomatoTranslations\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fady Mondy",
+ "email": "info@3x1.io"
+ }
+ ],
+ "description": "Database Base Translations Keys with Google Translations API Integration",
+ "keywords": [
+ "laravel",
+ "php",
+ "trans",
+ "translation gui",
+ "translation loader",
+ "translations"
+ ],
+ "support": {
+ "issues": "https://github.com/tomatophp/tomato-translations/issues",
+ "source": "https://github.com/tomatophp/tomato-translations/tree/v1.2.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/3x1io",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-24T13:38:29+00:00"
+ },
{
"name": "vlucas/phpdotenv",
"version": "v5.6.0",
@@ -8503,16 +11288,16 @@
},
{
"name": "spatie/backtrace",
- "version": "1.5.3",
+ "version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/backtrace.git",
- "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab"
+ "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab",
- "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab",
+ "url": "https://api.github.com/repos/spatie/backtrace/zipball/8373b9d51638292e3bfd736a9c19a654111b4a23",
+ "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23",
"shasum": ""
},
"require": {
@@ -8520,6 +11305,7 @@
},
"require-dev": {
"ext-json": "*",
+ "laravel/serializable-closure": "^1.3",
"phpunit/phpunit": "^9.3",
"spatie/phpunit-snapshot-assertions": "^4.2",
"symfony/var-dumper": "^5.1"
@@ -8549,7 +11335,7 @@
"spatie"
],
"support": {
- "source": "https://github.com/spatie/backtrace/tree/1.5.3"
+ "source": "https://github.com/spatie/backtrace/tree/1.6.1"
},
"funding": [
{
@@ -8561,7 +11347,7 @@
"type": "other"
}
],
- "time": "2023-06-28T12:59:17+00:00"
+ "time": "2024-04-24T13:22:11+00:00"
},
{
"name": "spatie/flare-client-php",
@@ -8994,7 +11780,9 @@
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": "^8.2"
+ "php": "^8.2",
+ "ext-bcmath": "*",
+ "ext-sqlite3": "*"
},
"platform-dev": [],
"plugin-api-version": "2.6.0"
diff --git a/config/fortify.php b/config/fortify.php
new file mode 100644
index 0000000..558fe94
--- /dev/null
+++ b/config/fortify.php
@@ -0,0 +1,159 @@
+ 'web',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Fortify Password Broker
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify which password broker Fortify can use when a user
+ | is resetting their password. This configured value should match one
+ | of your password brokers setup in your "auth" configuration file.
+ |
+ */
+
+ 'passwords' => 'users',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Username / Email
+ |--------------------------------------------------------------------------
+ |
+ | This value defines which model attribute should be considered as your
+ | application's "username" field. Typically, this might be the email
+ | address of the users but you are free to change this value here.
+ |
+ | Out of the box, Fortify expects forgot password and reset password
+ | requests to have a field named 'email'. If the application uses
+ | another name for the field you may define it below as needed.
+ |
+ */
+
+ 'username' => 'email',
+
+ 'email' => 'email',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Lowercase Usernames
+ |--------------------------------------------------------------------------
+ |
+ | This value defines whether usernames should be lowercased before saving
+ | them in the database, as some database system string fields are case
+ | sensitive. You may disable this for your application if necessary.
+ |
+ */
+
+ 'lowercase_usernames' => true,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Home Path
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure the path where users will get redirected during
+ | authentication or password reset when the operations are successful
+ | and the user is authenticated. You are free to change this value.
+ |
+ */
+
+ 'home' => '/admin',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Fortify Routes Prefix / Subdomain
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify which prefix Fortify will assign to all the routes
+ | that it registers with the application. If necessary, you may change
+ | subdomain under which all of the Fortify routes will be available.
+ |
+ */
+
+ 'prefix' => '',
+
+ 'domain' => null,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Fortify Routes Middleware
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify which middleware Fortify will assign to the routes
+ | that it registers with the application. If necessary, you may change
+ | these middleware but typically this provided default is preferred.
+ |
+ */
+
+ 'middleware' => ['web'],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Rate Limiting
+ |--------------------------------------------------------------------------
+ |
+ | By default, Fortify will throttle logins to five requests per minute for
+ | every email and IP address combination. However, if you would like to
+ | specify a custom rate limiter to call then you may specify it here.
+ |
+ */
+
+ 'limiters' => [
+ 'login' => 'login',
+ 'two-factor' => 'two-factor',
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Register View Routes
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify if the routes returning views should be disabled as
+ | you may not need them when building your own application. This may be
+ | especially true if you're writing a custom single-page application.
+ |
+ */
+
+ 'views' => true,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Features
+ |--------------------------------------------------------------------------
+ |
+ | Some of the Fortify features are optional. You may disable the features
+ | by removing them from this array. You're free to only remove some of
+ | these features or you can even remove all of these if you need to.
+ |
+ */
+
+ 'features' => [
+ Features::registration(),
+ Features::resetPasswords(),
+ Features::emailVerification(),
+ Features::updateProfileInformation(),
+ Features::updatePasswords(),
+ Features::twoFactorAuthentication([
+ 'confirm' => true,
+ 'confirmPassword' => true,
+ // 'window' => 0,
+ ]),
+ ],
+
+];
diff --git a/config/jetstream.php b/config/jetstream.php
new file mode 100644
index 0000000..7a4ba3d
--- /dev/null
+++ b/config/jetstream.php
@@ -0,0 +1,81 @@
+ 'inertia',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Jetstream Route Middleware
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify which middleware Jetstream will assign to the routes
+ | that it registers with the application. When necessary, you may modify
+ | these middleware; however, this default value is usually sufficient.
+ |
+ */
+
+ 'middleware' => ['web'],
+
+ 'auth_session' => AuthenticateSession::class,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Jetstream Guard
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the authentication guard Jetstream will use while
+ | authenticating users. This value should correspond with one of your
+ | guards that is already present in your "auth" configuration file.
+ |
+ */
+
+ 'guard' => 'sanctum',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Features
+ |--------------------------------------------------------------------------
+ |
+ | Some of Jetstream's features are optional. You may disable the features
+ | by removing them from this array. You're free to only remove some of
+ | these features or you can even remove all of these if you need to.
+ |
+ */
+
+ 'features' => [
+ Features::termsAndPrivacyPolicy(),
+ Features::profilePhotos(),
+ Features::api(),
+ Features::teams(['invitations' => true]),
+ Features::accountDeletion(),
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Profile Photo Disk
+ |--------------------------------------------------------------------------
+ |
+ | This configuration value determines the default disk that will be used
+ | when storing profile photos for your application's users. Typically
+ | this will be the "public" disk but you may adjust this if needed.
+ |
+ */
+
+ 'profile_photo_disk' => 'public',
+
+];
diff --git a/config/media-library.php b/config/media-library.php
new file mode 100644
index 0000000..bace6c8
--- /dev/null
+++ b/config/media-library.php
@@ -0,0 +1,262 @@
+ env('MEDIA_DISK', 'public'),
+
+ /*
+ * The maximum file size of an item in bytes.
+ * Adding a larger file will result in an exception.
+ */
+ 'max_file_size' => 1024 * 1024 * 10, // 10MB
+
+ /*
+ * This queue connection will be used to generate derived and responsive images.
+ * Leave empty to use the default queue connection.
+ */
+ 'queue_connection_name' => env('QUEUE_CONNECTION', 'sync'),
+
+ /*
+ * This queue will be used to generate derived and responsive images.
+ * Leave empty to use the default queue.
+ */
+ 'queue_name' => '',
+
+ /*
+ * By default all conversions will be performed on a queue.
+ */
+ 'queue_conversions_by_default' => env('QUEUE_CONVERSIONS_BY_DEFAULT', true),
+
+ /*
+ * The fully qualified class name of the media model.
+ */
+ 'media_model' => Spatie\MediaLibrary\MediaCollections\Models\Media::class,
+
+ /*
+ * When enabled, media collections will be serialised using the default
+ * laravel model serialization behaviour.
+ *
+ * Keep this option disabled if using Media Library Pro components (https://medialibrary.pro)
+ */
+ 'use_default_collection_serialization' => false,
+
+ /*
+ * The fully qualified class name of the model used for temporary uploads.
+ *
+ * This model is only used in Media Library Pro (https://medialibrary.pro)
+ */
+ 'temporary_upload_model' => Spatie\MediaLibraryPro\Models\TemporaryUpload::class,
+
+ /*
+ * When enabled, Media Library Pro will only process temporary uploads that were uploaded
+ * in the same session. You can opt to disable this for stateless usage of
+ * the pro components.
+ */
+ 'enable_temporary_uploads_session_affinity' => true,
+
+ /*
+ * When enabled, Media Library pro will generate thumbnails for uploaded file.
+ */
+ 'generate_thumbnails_for_temporary_uploads' => true,
+
+ /*
+ * This is the class that is responsible for naming generated files.
+ */
+ 'file_namer' => Spatie\MediaLibrary\Support\FileNamer\DefaultFileNamer::class,
+
+ /*
+ * The class that contains the strategy for determining a media file's path.
+ */
+ 'path_generator' => Spatie\MediaLibrary\Support\PathGenerator\DefaultPathGenerator::class,
+
+ /*
+ * The class that contains the strategy for determining how to remove files.
+ */
+ 'file_remover_class' => Spatie\MediaLibrary\Support\FileRemover\DefaultFileRemover::class,
+
+ /*
+ * Here you can specify which path generator should be used for the given class.
+ */
+ 'custom_path_generators' => [
+ // Model::class => PathGenerator::class
+ // or
+ // 'model_morph_alias' => PathGenerator::class
+ ],
+
+ /*
+ * When urls to files get generated, this class will be called. Use the default
+ * if your files are stored locally above the site root or on s3.
+ */
+ 'url_generator' => Spatie\MediaLibrary\Support\UrlGenerator\DefaultUrlGenerator::class,
+
+ /*
+ * Moves media on updating to keep path consistent. Enable it only with a custom
+ * PathGenerator that uses, for example, the media UUID.
+ */
+ 'moves_media_on_update' => false,
+
+ /*
+ * Whether to activate versioning when urls to files get generated.
+ * When activated, this attaches a ?v=xx query string to the URL.
+ */
+ 'version_urls' => false,
+
+ /*
+ * The media library will try to optimize all converted images by removing
+ * metadata and applying a little bit of compression. These are
+ * the optimizers that will be used by default.
+ */
+ 'image_optimizers' => [
+ Spatie\ImageOptimizer\Optimizers\Jpegoptim::class => [
+ '-m85', // set maximum quality to 85%
+ '--force', // ensure that progressive generation is always done also if a little bigger
+ '--strip-all', // this strips out all text information such as comments and EXIF data
+ '--all-progressive', // this will make sure the resulting image is a progressive one
+ ],
+ Spatie\ImageOptimizer\Optimizers\Pngquant::class => [
+ '--force', // required parameter for this package
+ ],
+ Spatie\ImageOptimizer\Optimizers\Optipng::class => [
+ '-i0', // this will result in a non-interlaced, progressive scanned image
+ '-o2', // this set the optimization level to two (multiple IDAT compression trials)
+ '-quiet', // required parameter for this package
+ ],
+ Spatie\ImageOptimizer\Optimizers\Svgo::class => [
+ '--disable=cleanupIDs', // disabling because it is known to cause troubles
+ ],
+ Spatie\ImageOptimizer\Optimizers\Gifsicle::class => [
+ '-b', // required parameter for this package
+ '-O3', // this produces the slowest but best results
+ ],
+ Spatie\ImageOptimizer\Optimizers\Cwebp::class => [
+ '-m 6', // for the slowest compression method in order to get the best compression.
+ '-pass 10', // for maximizing the amount of analysis pass.
+ '-mt', // multithreading for some speed improvements.
+ '-q 90', //quality factor that brings the least noticeable changes.
+ ],
+ Spatie\ImageOptimizer\Optimizers\Avifenc::class => [
+ '-a cq-level=23', // constant quality level, lower values mean better quality and greater file size (0-63).
+ '-j all', // number of jobs (worker threads, "all" uses all available cores).
+ '--min 0', // min quantizer for color (0-63).
+ '--max 63', // max quantizer for color (0-63).
+ '--minalpha 0', // min quantizer for alpha (0-63).
+ '--maxalpha 63', // max quantizer for alpha (0-63).
+ '-a end-usage=q', // rate control mode set to Constant Quality mode.
+ '-a tune=ssim', // SSIM as tune the encoder for distortion metric.
+ ],
+ ],
+
+ /*
+ * These generators will be used to create an image of media files.
+ */
+ 'image_generators' => [
+ Spatie\MediaLibrary\Conversions\ImageGenerators\Image::class,
+ Spatie\MediaLibrary\Conversions\ImageGenerators\Webp::class,
+ Spatie\MediaLibrary\Conversions\ImageGenerators\Avif::class,
+ Spatie\MediaLibrary\Conversions\ImageGenerators\Pdf::class,
+ Spatie\MediaLibrary\Conversions\ImageGenerators\Svg::class,
+ Spatie\MediaLibrary\Conversions\ImageGenerators\Video::class,
+ ],
+
+ /*
+ * The path where to store temporary files while performing image conversions.
+ * If set to null, storage_path('media-library/temp') will be used.
+ */
+ 'temporary_directory_path' => null,
+
+ /*
+ * The engine that should perform the image conversions.
+ * Should be either `gd` or `imagick`.
+ */
+ 'image_driver' => env('IMAGE_DRIVER', 'gd'),
+
+ /*
+ * FFMPEG & FFProbe binaries paths, only used if you try to generate video
+ * thumbnails and have installed the php-ffmpeg/php-ffmpeg composer
+ * dependency.
+ */
+ 'ffmpeg_path' => env('FFMPEG_PATH', '/usr/bin/ffmpeg'),
+ 'ffprobe_path' => env('FFPROBE_PATH', '/usr/bin/ffprobe'),
+
+ /*
+ * Here you can override the class names of the jobs used by this package. Make sure
+ * your custom jobs extend the ones provided by the package.
+ */
+ 'jobs' => [
+ 'perform_conversions' => Spatie\MediaLibrary\Conversions\Jobs\PerformConversionsJob::class,
+ 'generate_responsive_images' => Spatie\MediaLibrary\ResponsiveImages\Jobs\GenerateResponsiveImagesJob::class,
+ ],
+
+ /*
+ * When using the addMediaFromUrl method you may want to replace the default downloader.
+ * This is particularly useful when the url of the image is behind a firewall and
+ * need to add additional flags, possibly using curl.
+ */
+ 'media_downloader' => Spatie\MediaLibrary\Downloaders\DefaultDownloader::class,
+
+ 'remote' => [
+ /*
+ * Any extra headers that should be included when uploading media to
+ * a remote disk. Even though supported headers may vary between
+ * different drivers, a sensible default has been provided.
+ *
+ * Supported by S3: CacheControl, Expires, StorageClass,
+ * ServerSideEncryption, Metadata, ACL, ContentEncoding
+ */
+ 'extra_headers' => [
+ 'CacheControl' => 'max-age=604800',
+ ],
+ ],
+
+ 'responsive_images' => [
+ /*
+ * This class is responsible for calculating the target widths of the responsive
+ * images. By default we optimize for filesize and create variations that each are 30%
+ * smaller than the previous one. More info in the documentation.
+ *
+ * https://docs.spatie.be/laravel-medialibrary/v9/advanced-usage/generating-responsive-images
+ */
+ 'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class,
+
+ /*
+ * By default rendering media to a responsive image will add some javascript and a tiny placeholder.
+ * This ensures that the browser can already determine the correct layout.
+ * When disabled, no tiny placeholder is generated.
+ */
+ 'use_tiny_placeholders' => true,
+
+ /*
+ * This class will generate the tiny placeholder used for progressive image loading. By default
+ * the media library will use a tiny blurred jpg image.
+ */
+ 'tiny_placeholder_generator' => Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred::class,
+ ],
+
+ /*
+ * When enabling this option, a route will be registered that will enable
+ * the Media Library Pro Vue and React components to move uploaded files
+ * in a S3 bucket to their right place.
+ */
+ 'enable_vapor_uploads' => env('ENABLE_MEDIA_LIBRARY_VAPOR_UPLOADS', false),
+
+ /*
+ * When converting Media instances to response the media library will add
+ * a `loading` attribute to the `img` tag. Here you can set the default
+ * value of that attribute.
+ *
+ * Possible values: 'lazy', 'eager', 'auto' or null if you don't want to set any loading instruction.
+ *
+ * More info: https://css-tricks.com/native-lazy-loading/
+ */
+ 'default_loading_attribute_value' => null,
+
+ /*
+ * You can specify a prefix for that is used for storing all media.
+ * If you set this to `/my-subdir`, all your media will be stored in a `/my-subdir` directory.
+ */
+ 'prefix' => env('MEDIA_PREFIX', ''),
+];
diff --git a/config/permission.php b/config/permission.php
new file mode 100644
index 0000000..5b6e184
--- /dev/null
+++ b/config/permission.php
@@ -0,0 +1,161 @@
+ [
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * Eloquent model should be used to retrieve your permissions. Of course, it
+ * is often just the "Permission" model but you may use whatever you like.
+ *
+ * The model you want to use as a Permission model needs to implement the
+ * `Spatie\Permission\Contracts\Permission` contract.
+ */
+
+ 'permission' => Spatie\Permission\Models\Permission::class,
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * Eloquent model should be used to retrieve your roles. Of course, it
+ * is often just the "Role" model but you may use whatever you like.
+ *
+ * The model you want to use as a Role model needs to implement the
+ * `Spatie\Permission\Contracts\Role` contract.
+ */
+
+ 'role' => Spatie\Permission\Models\Role::class,
+
+ ],
+
+ 'table_names' => [
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your roles. We have chosen a basic
+ * default value but you may easily change it to any table you like.
+ */
+
+ 'roles' => 'roles',
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * table should be used to retrieve your permissions. We have chosen a basic
+ * default value but you may easily change it to any table you like.
+ */
+
+ 'permissions' => 'permissions',
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * table should be used to retrieve your models permissions. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'model_has_permissions' => 'model_has_permissions',
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your models roles. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'model_has_roles' => 'model_has_roles',
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your roles permissions. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'role_has_permissions' => 'role_has_permissions',
+ ],
+
+ 'column_names' => [
+ /*
+ * Change this if you want to name the related pivots other than defaults
+ */
+ 'role_pivot_key' => null, //default 'role_id',
+ 'permission_pivot_key' => null, //default 'permission_id',
+
+ /*
+ * Change this if you want to name the related model primary key other than
+ * `model_id`.
+ *
+ * For example, this would be nice if your primary keys are all UUIDs. In
+ * that case, name this `model_uuid`.
+ */
+
+ 'model_morph_key' => 'model_id',
+
+ /*
+ * Change this if you want to use the teams feature and your related model's
+ * foreign key is other than `team_id`.
+ */
+
+ 'team_foreign_key' => 'team_id',
+ ],
+
+ /*
+ * When set to true, the method for checking permissions will be registered on the gate.
+ * Set this to false, if you want to implement custom logic for checking permissions.
+ */
+
+ 'register_permission_check_method' => true,
+
+ /*
+ * When set to true the package implements teams using the 'team_foreign_key'. If you want
+ * the migrations to register the 'team_foreign_key', you must set this to true
+ * before doing the migration. If you already did the migration then you must make a new
+ * migration to also add 'team_foreign_key' to 'roles', 'model_has_roles', and
+ * 'model_has_permissions'(view the latest version of package's migration file)
+ */
+
+ 'teams' => false,
+
+ /*
+ * When set to true, the required permission names are added to the exception
+ * message. This could be considered an information leak in some contexts, so
+ * the default setting is false here for optimum safety.
+ */
+
+ 'display_permission_in_exception' => false,
+
+ /*
+ * When set to true, the required role names are added to the exception
+ * message. This could be considered an information leak in some contexts, so
+ * the default setting is false here for optimum safety.
+ */
+
+ 'display_role_in_exception' => false,
+
+ /*
+ * By default wildcard permission lookups are disabled.
+ */
+
+ 'enable_wildcard_permission' => false,
+
+ 'cache' => [
+
+ /*
+ * By default all permissions are cached for 24 hours to speed up performance.
+ * When permissions or roles are updated the cache is flushed automatically.
+ */
+
+ 'expiration_time' => \DateInterval::createFromDateString('24 hours'),
+
+ /*
+ * The cache key used to store all permissions.
+ */
+
+ 'key' => 'spatie.permission.cache',
+
+ /*
+ * You may optionally indicate a specific cache driver to use for permission and
+ * role caching using any of the `store` drivers listed in the cache.php config
+ * file. Using 'default' here means to use the `default` set in cache.php.
+ */
+
+ 'store' => 'default',
+ ],
+];
diff --git a/database/migrations/2024_04_24_134733_create_media_table.php b/database/migrations/2024_04_24_134733_create_media_table.php
new file mode 100644
index 0000000..47a4be9
--- /dev/null
+++ b/database/migrations/2024_04_24_134733_create_media_table.php
@@ -0,0 +1,32 @@
+id();
+
+ $table->morphs('model');
+ $table->uuid()->nullable()->unique();
+ $table->string('collection_name');
+ $table->string('name');
+ $table->string('file_name');
+ $table->string('mime_type')->nullable();
+ $table->string('disk');
+ $table->string('conversions_disk')->nullable();
+ $table->unsignedBigInteger('size');
+ $table->json('manipulations');
+ $table->json('custom_properties');
+ $table->json('generated_conversions');
+ $table->json('responsive_images');
+ $table->unsignedInteger('order_column')->nullable()->index();
+
+ $table->nullableTimestamps();
+ });
+ }
+};
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..591db16
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,74 @@
+# For more information: https://laravel.com/docs/sail
+version: '3'
+services:
+ laravel.test:
+ build:
+ context: ./vendor/laravel/sail/runtimes/8.2
+ dockerfile: Dockerfile
+ args:
+ WWWGROUP: '${WWWGROUP}'
+ image: sail-8.2/tomato
+ extra_hosts:
+ - 'host.docker.internal:host-gateway'
+ ports:
+ - '${APP_PORT:-80}:80'
+ - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
+ environment:
+ WWWUSER: '${WWWUSER}'
+ LARAVEL_SAIL: 1
+ XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
+ XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
+ volumes:
+ - '.:/var/www/html'
+ networks:
+ - sail
+ depends_on:
+ - mysql
+ - redis
+ mysql:
+ image: 'mysql/mysql-server:8.0'
+ ports:
+ - '${FORWARD_DB_PORT:-3306}:3306'
+ environment:
+ MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
+ MYSQL_ROOT_HOST: "%"
+ MYSQL_DATABASE: '${DB_DATABASE}'
+ MYSQL_USER: '${DB_USERNAME}'
+ MYSQL_PASSWORD: '${DB_PASSWORD}'
+ MYSQL_ALLOW_EMPTY_PASSWORD: 1
+ volumes:
+ - 'sail-mysql:/var/lib/mysql'
+ - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
+ networks:
+ - sail
+ healthcheck:
+ test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
+ retries: 3
+ timeout: 5s
+ redis:
+ image: 'redis:alpine'
+ ports:
+ - '${FORWARD_REDIS_PORT:-6379}:6379'
+ volumes:
+ - 'sail-redis:/data'
+ networks:
+ - sail
+ healthcheck:
+ test: ["CMD", "redis-cli", "ping"]
+ retries: 3
+ timeout: 5s
+ mailpit:
+ image: 'axllent/mailpit:latest'
+ ports:
+ - '${FORWARD_MAILPIT_PORT:-1025}:1025'
+ - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
+ networks:
+ - sail
+networks:
+ sail:
+ driver: bridge
+volumes:
+ sail-mysql:
+ driver: local
+ sail-redis:
+ driver: local
diff --git a/lang/ar.json b/lang/ar.json
new file mode 100644
index 0000000..c10faeb
--- /dev/null
+++ b/lang/ar.json
@@ -0,0 +1,247 @@
+{
+ "Current Team": "الفريق الحالي",
+ "Manage Team": "إدارة الفريق",
+ "Team Settings": "إعدادات الفريق",
+ "Create New Team": "أضافة فريق",
+ "Switch Teams": "تغيير الفريق الحالي",
+ "Team Name": "اسم الفريق",
+ "The team's name and owner information.": "اسم الفريق ومعلومات المالك.",
+ "Team Owner": "مالك الفريق",
+ "Add Team Member": "أضافة عضو",
+ "Please provide the email address of the person you would like to add to this team.": "يرجى تقديم عنوان البريد الإلكتروني للشخص الذي ترغب في إضافته إلى هذا الفريق.",
+ "Email": "البريد الإلكتروني",
+ "Role": "الدور",
+ "Administrator": "مدير",
+ "Administrator users can perform any action.": "يمكن لمستخدمي المسؤولين القيام بأي إجراء.",
+ "Editor": "محرر",
+ "Editor users have the ability to read, create, and update.": "يمكن لمستخدمي المحررين قراءة وإنشاء وتحديث.",
+ "Pending Team Invitations": "دعوات الفريق المعلقة",
+ "These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.": "تمت دعوة هؤلاء الأشخاص إلى فريقك وتم إرسال رسالة دعوة إلكترونية لهم. يمكنهم الانضمام إلى الفريق عن طريق قبول دعوة البريد الإلكتروني.",
+ "Delete Team": "حذف الفريق",
+ "Permanently delete this team.": "حذف هذا الفريق بشكل دائم.",
+ "Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain.": "بمجرد حذف الفريق، سيتم حذف جميع الموارد والبيانات الخاصة به بشكل دائم. قبل حذف هذا الفريق، يرجى تنزيل أي بيانات أو معلومات تتعلق بهذا الفريق التي ترغب في الاحتفاظ بها.",
+ "Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted.": "هل أنت متأكد أنك تريد حذف هذا الفريق؟ بمجرد حذف الفريق، سيتم حذف جميع الموارد والبيانات الخاصة به بشكل دائم.",
+ "Manage Account": "إدارة الحساب",
+ "API Tokens": "رموز API",
+ "Profile Information": "معلومات الملف الشخصي",
+ "Update your account's profile information and email address.": "تحديث معلومات ملف تعريف حسابك وعنوان بريدك الإلكتروني.",
+ "Photo": "صورة",
+ "Select A New Photo": "اختر صورة جديدة",
+ "Remove Photo": "إزالة الصورة",
+ "Name": "الاسم",
+ "Your email address is unverified.": "عنوان بريدك الإلكتروني غير مؤكد.",
+ "Click here to re-send the verification email.": "انقر هنا لإعادة إرسال رسالة التحقق.",
+ "Save": "حفظ",
+ "Two Factor Authentication": "المصادقة الثنائية",
+ "Add additional security to your account using two factor authentication.": "أضف أمانًا إضافيًا لحسابك باستخدام المصادقة الثنائية.",
+ "You have not enabled two factor authentication.": "لم تقم بتمكين المصادقة الثنائية.",
+ "When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone's Google Authenticator application.": "عند تمكين المصادقة الثنائية، سيتم طلب رمز مؤمن وعشوائي أثناء المصادقة. يمكنك استرداد هذا الرمز من تطبيق Google Authenticator على هاتفك.",
+ "Enable": "تمكين",
+ "Please confirm your password before continuing": "يرجى تأكيد كلمة المرور الخاصة بك قبل المتابعة",
+ "Finish enabling two factor authentication.": "إنهاء تمكين المصادقة الثنائية.",
+ "To finish enabling two factor authentication, scan the following QR code using your phone's authenticator application or enter the setup key and provide the generated OTP code.": "لإنهاء تمكين المصادقة الثنائية، قم بمسح الرمز الشريطي التالي باستخدام تطبيق المصادقة الخاص بهاتفك أو أدخل مفتاح الإعداد وقدم رمز OTP المولد.",
+ "Setup Key": "مفتاح الإعداد",
+ "Code": "الرمز",
+ "Browser Sessions": "جلسات المتصفح",
+ "Manage and log out your active sessions on other browsers and devices.": "إدارة وتسجيل الخروج من جلساتك النشطة على متصفحات وأجهزة أخرى.",
+ "If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password.": "إذا لزم الأمر، يمكنك تسجيل الخروج من جميع جلسات المتصفح الأخرى عبر جميع أجهزتك. يتم سرد بعض جلساتك الأخيرة أدناه؛ ومع ذلك، قد لا تكون هذه القائمة شاملة. إذا شعرت أن حسابك قد تم تعريضه للخطر، يجب عليك أيضًا تحديث كلمة المرور الخاصة بك.",
+ "This device": "هذا الجهاز",
+ "Log Out Other Browser Sessions": "تسجيل الخروج من جلسات المتصفح الأخرى",
+ "Password": "كلمة المرور",
+ "Remember me": "تذكرني",
+ "Forgot your password?": "نسيت كلمة المرور؟",
+ "Log in": "تسجيل الدخول",
+ "Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.": "نسيت كلمة المرور؟ لا مشكلة. فقط أخبرنا بعنوان بريدك الإلكتروني وسنرسل لك رابط إعادة تعيين كلمة المرور الذي سيتيح لك اختيار واحدة جديدة.",
+ "Email Password Reset Link": "إرسال رابط إعادة تعيين كلمة المرور",
+ "Create API Token": "إنشاء رمز API",
+ "API tokens allow third-party services to authenticate with our application on your behalf.": "تسمح رموز API للخدمات الطرفية بالمصادقة على تطبيقنا نيابة عنك.",
+ "Permissions": "الأذونات",
+ "Create": "إنشاء",
+ "Edit": "تحرير",
+ "Delete": "حذف",
+ "Please copy your new API token. For your security, it won't be shown again.": "يرجى نسخ رمز API الجديد الخاص بك. لأمانك، لن يتم عرضه مرة أخرى.",
+ "Manage API Tokens": "إدارة رموز API",
+ "You may delete any of your existing tokens if they are no longer needed.": "يمكنك حذف أي من الرموز الحالية إذا لم تعد مطلوبة.",
+ "API Token Permissions": "أذونات رمز API",
+ "A new verification link has been sent to your email address.": "تم إرسال رابط التحقق الجديد إلى عنوان بريدك الإلكتروني.",
+ "Are you sure you want to continue?": "هل أنت متأكد من المواصلة؟",
+ "Browse": "تصفح",
+ "Cancel": "إلغاء",
+ "Clear selection": "حذف العناصر المحددة",
+ "Confirm": "تأكيد",
+ "Drag and drop your files or Browse": "اسحب الملفات وأسقطها أو تصفح",
+ "Excel Export": "تصدير إكسيل",
+ "Export results": "تصدير النتائج",
+ "Go to page :page": "اذهب إلى الصفحة :page",
+ "Item selected": "العنصر المحدد",
+ "Items selected": "العناصر المحددة",
+ "Pagination Navigation": "التنقل بين الصفحات",
+ "Search": "بحث",
+ "Select all on this page": "تحديد الكل في هاته الصفحة",
+ "Select all results": "تحديد كل النتائج",
+ "of": "من",
+ "per page": "لكل صفحة",
+ "results": "النتائج",
+ "to": "إلى",
+ "If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:": "If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:",
+ "Create Account": "Create Account",
+ "If you already have an account, you may accept this invitation by clicking the button below:": "If you already have an account, you may accept this invitation by clicking the button below:",
+ "You may accept this invitation by clicking the button below:": "You may accept this invitation by clicking the button below:",
+ "Accept Invitation": "Accept Invitation",
+ "If you did not expect to receive an invitation to this team, you may discard this email.": "If you did not expect to receive an invitation to this team, you may discard this email.",
+ "Last used": "Last used",
+ "Delete API Token": "Delete API Token",
+ "Are you sure you would like to delete this API token?": "Are you sure you would like to delete this API token?",
+ "API Token": "API Token",
+ "This is a secure area of the application. Please confirm your password before continuing.": "This is a secure area of the application. Please confirm your password before continuing.",
+ "Login": "Login",
+ "Terms of Service": "Terms of Service",
+ "Privacy Policy": "Privacy Policy",
+ "Confirm Password": "Confirm Password",
+ "Reset Password": "Reset Password",
+ "Two-factor Confirmation": "Two-factor Confirmation",
+ "Please confirm access to your account by entering the authentication code provided by your authenticator application.": "Please confirm access to your account by entering the authentication code provided by your authenticator application.",
+ "Please confirm access to your account by entering one of your emergency recovery codes.": "Please confirm access to your account by entering one of your emergency recovery codes.",
+ "Recovery Code": "Recovery Code",
+ "Use a recovery code": "Use a recovery code",
+ "Use an authentication code": "Use an authentication code",
+ "A new verification link has been sent to the email address you provided during registration.": "A new verification link has been sent to the email address you provided during registration.",
+ "Resend Verification Email": "Resend Verification Email",
+ "Log Out": "Log Out",
+ "pagination.previous": "pagination.previous",
+ "pagination.next": "pagination.next",
+ "Showing": "Showing",
+ "Copy": "Copy",
+ "Download File": "Download File",
+ "Empty Transactions": "Empty Transactions",
+ "No Team": "No Team",
+ "Lang": "Lang",
+ "Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.": "Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.",
+ "Last active": "Last active",
+ "Done.": "Done.",
+ "You have enabled two factor authentication.": "You have enabled two factor authentication.",
+ "Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.": "Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.",
+ "Show Recovery Codes": "Show Recovery Codes",
+ "Regenerate Recovery Codes": "Regenerate Recovery Codes",
+ "Disable": "Disable",
+ "Create Team": "Create Team",
+ "Team Details": "Team Details",
+ "Create a new team to collaborate with others on projects.": "Create a new team to collaborate with others on projects.",
+ "Team Members": "Team Members",
+ "All of the people that are part of this team.": "All of the people that are part of this team.",
+ "Leave Team": "Leave Team",
+ "Are you sure you would like to leave this team?": "Are you sure you would like to leave this team?",
+ "Leave": "Leave",
+ "Remove Team Member": "Remove Team Member",
+ "Are you sure you would like to remove this person from the team?": "Are you sure you would like to remove this person from the team?",
+ "Remove": "Remove",
+ "Manage Role": "Manage Role",
+ "The provided password does not match your current password.": "The provided password does not match your current password.",
+ "We were unable to find a registered user with this email address.": "We were unable to find a registered user with this email address.",
+ "This user already belongs to the team.": "This user already belongs to the team.",
+ "This user has already been invited to the team.": "This user has already been invited to the team.",
+ "You may not leave a team that you created.": "You may not leave a team that you created.",
+ "Data Retrieved Successfully": "Data Retrieved Successfully",
+ "Done !": "Done !",
+ "auth.password": "auth.password",
+ "The password is incorrect.": "The password is incorrect.",
+ "The provided password was incorrect.": "The provided password was incorrect.",
+ "Load More": "Load More",
+ "Create Plugin": "Create Plugin",
+ "Description": "Description",
+ "Icon": "Icon",
+ "Color": "Color",
+ "Upload Plugin": "Upload Plugin",
+ "Tables": "Tables",
+ "Enable Plugin": "Enable Plugin",
+ "Disable Plugin": "Disable Plugin",
+ "Delete Plugin": "Delete Plugin",
+ "Github": "Github",
+ "Docs": "Docs",
+ "Add New Plugin": "Add New Plugin",
+ "GitHub": "GitHub",
+ "Start Install The Package": "Start Install The Package",
+ "Authors": "Authors",
+ "Licenses": "Licenses",
+ "Upload New Plugin File": "Upload New Plugin File",
+ "Table": "Table",
+ "Table Name": "Table Name",
+ "Columns": "Columns",
+ "Column Name": "Column Name",
+ "Column Type": "Column Type",
+ "Default": "Default",
+ "Length": "Length",
+ "Nullable": "Nullable",
+ "Index": "Index",
+ "Auto Increment": "Auto Increment",
+ "Primary": "Primary",
+ "Unique": "Unique",
+ "Unsigned": "Unsigned",
+ "Foreign Key": "Foreign Key",
+ "Foreign Table": "Foreign Table",
+ "Foreign Column": "Foreign Column",
+ "On Delete Cascade": "On Delete Cascade",
+ "Timestamps": "Timestamps",
+ "Soft Deletes": "Soft Deletes",
+ "Table Generator": "Table Generator",
+ "Generate Migration": "Generate Migration",
+ "Run Migrate": "Run Migrate",
+ "Generate CRUD": "Generate CRUD",
+ "Generate Models": "Generate Models",
+ "Generate Controllers": "Generate Controllers",
+ "Generate Form Request": "Generate Form Request",
+ "Generate JSON Resource": "Generate JSON Resource",
+ "Generate Views": "Generate Views",
+ "Generate Tables": "Generate Tables",
+ "Generate Routes": "Generate Routes",
+ "Generate API Routes": "Generate API Routes",
+ "Generate Menu": "Generate Menu",
+ "Generate Flutter App": "Generate Flutter App",
+ "Generate Flutter Module": "Generate Flutter Module",
+ "Generate Flutter CRUD": "Generate Flutter CRUD",
+ "Back": "Back",
+ "Generate": "Generate",
+ "Module": "Module",
+ "Comment": "Comment",
+ "Soft deletes": "Soft deletes",
+ "Migrated": "Migrated",
+ "Generated": "Generated",
+ "Module Not Found": "Module Not Found",
+ "Migration Created Successfully": "Migration Created Successfully",
+ "Plugin Already Exists": "Plugin Already Exists",
+ "Plugin Created Successfully": "Plugin Created Successfully",
+ "Plugins Has Been Reloaded": "Plugins Has Been Reloaded",
+ "Plugin Status Changed Successfully": "Plugin Status Changed Successfully",
+ "Plugin Deleted Successfully": "Plugin Deleted Successfully",
+ "Plugin Install Start In Background": "Plugin Install Start In Background",
+ "Your Module Has Been Added Success": "Your Module Has Been Added Success",
+ "Sorry Your File Uploaded Is Not Correct": "Sorry Your File Uploaded Is Not Correct",
+ "Table Not Found": "Table Not Found",
+ "Table Already Exists": "Table Already Exists",
+ "Table Migrated Successfully": "Table Migrated Successfully",
+ "Table Generated Successfully": "Table Generated Successfully",
+ "Table updated successfully": "Table updated successfully",
+ "Table deleted successfully": "Table deleted successfully",
+ "Plugin Has Been Deleted": "Plugin Has Been Deleted",
+ "Id": "Id",
+ "Table Has Been Deleted": "Table Has Been Deleted",
+ "Settings": "Settings",
+ "Plugins": "Plugins",
+ "There are no items to show.": "There are no items to show.",
+ "Actions": "Actions",
+ "Reset": "Reset",
+ "Date Range": "Date Range",
+ "Remove search": "Remove search",
+ "...": "...",
+ "The password confirmation has expired.": "The password confirmation has expired.",
+ "No user is logged in": "No user is logged in",
+ "Date": "Date",
+ "Home": "Home",
+ "Documentation": "Documentation",
+ "Change Language": "Change Language",
+ "Current Language": "Current Language",
+ "Import Translations": "Import Translations",
+ "Upload Or Drop your excel file here": "Upload Or Drop your excel file here",
+ "Import": "Import",
+ "Tools": "Tools"
+}
\ No newline at end of file
diff --git a/lang/de.json b/lang/de.json
new file mode 100644
index 0000000..ddb7516
--- /dev/null
+++ b/lang/de.json
@@ -0,0 +1,238 @@
+{
+ "Are you sure you want to continue?": "Bist du sicher, dass du fortfahren willst?",
+ "Browse": "Durchsuchen",
+ "Cancel": "Abbrechen",
+ "Clear selection": "Auswahl aufheben",
+ "Confirm": "Bestätigen",
+ "Drag and drop your files or Browse": "Dateien per Drag and Drop oder durchsuchen",
+ "Excel Export": "Excel Export",
+ "Export results": "Ergebnisse exportieren",
+ "Go to page :page": "Gehe zu Seite :page",
+ "Item selected": "Ausgewähltes Element",
+ "Items selected": "Ausgewählte Elemente",
+ "Pagination Navigation": "Blättern nach Seiten",
+ "Remove search": "Entferne Suche",
+ "Reset": "Zurücksetzen",
+ "Search": "Suche",
+ "Select all on this page": "Alles auf dieser Seite auswählen",
+ "Select all results": "Alle Ergebnisse auswählen",
+ "of": "von",
+ "per page": "pro Seite",
+ "results": "Ergebnisse",
+ "to": "zu",
+ "If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:": "If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:",
+ "Create Account": "Create Account",
+ "If you already have an account, you may accept this invitation by clicking the button below:": "If you already have an account, you may accept this invitation by clicking the button below:",
+ "You may accept this invitation by clicking the button below:": "You may accept this invitation by clicking the button below:",
+ "Accept Invitation": "Accept Invitation",
+ "If you did not expect to receive an invitation to this team, you may discard this email.": "If you did not expect to receive an invitation to this team, you may discard this email.",
+ "API Token Permissions": "API Token Permissions",
+ "Save": "Save",
+ "API Tokens": "API Tokens",
+ "Create API Token": "Create API Token",
+ "API tokens allow third-party services to authenticate with our application on your behalf.": "API tokens allow third-party services to authenticate with our application on your behalf.",
+ "Name": "Name",
+ "Permissions": "Permissions",
+ "Create": "Create",
+ "Manage API Tokens": "Manage API Tokens",
+ "You may delete any of your existing tokens if they are no longer needed.": "You may delete any of your existing tokens if they are no longer needed.",
+ "Last used": "Last used",
+ "Delete API Token": "Delete API Token",
+ "Are you sure you would like to delete this API token?": "Are you sure you would like to delete this API token?",
+ "Delete": "Delete",
+ "API Token": "API Token",
+ "This is a secure area of the application. Please confirm your password before continuing.": "This is a secure area of the application. Please confirm your password before continuing.",
+ "Password": "Password",
+ "Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.": "Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.",
+ "Email": "Email",
+ "Email Password Reset Link": "Email Password Reset Link",
+ "Login": "Login",
+ "Remember me": "Remember me",
+ "Forgot your password?": "Forgot your password?",
+ "Log in": "Log in",
+ "Terms of Service": "Terms of Service",
+ "Privacy Policy": "Privacy Policy",
+ "Confirm Password": "Confirm Password",
+ "Reset Password": "Reset Password",
+ "Two-factor Confirmation": "Two-factor Confirmation",
+ "Please confirm access to your account by entering the authentication code provided by your authenticator application.": "Please confirm access to your account by entering the authentication code provided by your authenticator application.",
+ "Please confirm access to your account by entering one of your emergency recovery codes.": "Please confirm access to your account by entering one of your emergency recovery codes.",
+ "Code": "Code",
+ "Recovery Code": "Recovery Code",
+ "Use a recovery code": "Use a recovery code",
+ "Use an authentication code": "Use an authentication code",
+ "A new verification link has been sent to the email address you provided during registration.": "A new verification link has been sent to the email address you provided during registration.",
+ "Resend Verification Email": "Resend Verification Email",
+ "Log Out": "Log Out",
+ "pagination.previous": "pagination.previous",
+ "pagination.next": "pagination.next",
+ "Showing": "Showing",
+ "Manage Account": "Manage Account",
+ "Copy": "Copy",
+ "Download File": "Download File",
+ "Edit": "Edit",
+ "Empty Transactions": "Empty Transactions",
+ "No Team": "No Team",
+ "Current Team": "sCurrent Team",
+ "Manage Team": "Manage Team",
+ "Team Settings": "Team Settings",
+ "Create New Team": "Create New Team",
+ "Switch Teams": "Switch Teams",
+ "Lang": "Lang",
+ "Browser Sessions": "Browser Sessions",
+ "Manage and log out your active sessions on other browsers and devices.": "Manage and log out your active sessions on other browsers and devices.",
+ "Log Out Other Browser Sessions": "Log Out Other Browser Sessions",
+ "Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.": "Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.",
+ "If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password.": "If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password.",
+ "This device": "This device",
+ "Last active": "Last active",
+ "Done.": "Done.",
+ "Two Factor Authentication": "Two Factor Authentication",
+ "Add additional security to your account using two factor authentication.": "Add additional security to your account using two factor authentication.",
+ "Finish enabling two factor authentication.": "Finish enabling two factor authentication.",
+ "You have enabled two factor authentication.": "You have enabled two factor authentication.",
+ "You have not enabled two factor authentication.": "You have not enabled two factor authentication.",
+ "Setup Key": "Setup Key",
+ "Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.": "Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.",
+ "Enable": "Enable",
+ "Show Recovery Codes": "Show Recovery Codes",
+ "Regenerate Recovery Codes": "Regenerate Recovery Codes",
+ "Disable": "Disable",
+ "Profile Information": "Profile Information",
+ "Photo": "Photo",
+ "Select A New Photo": "Select A New Photo",
+ "Remove Photo": "Remove Photo",
+ "Your email address is unverified.": "Your email address is unverified.",
+ "Click here to re-send the verification email.": "Click here to re-send the verification email.",
+ "A new verification link has been sent to your email address.": "A new verification link has been sent to your email address.",
+ "Add Team Member": "Add Team Member",
+ "Please provide the email address of the person you would like to add to this team.": "Please provide the email address of the person you would like to add to this team.",
+ "Role": "Role",
+ "Create Team": "Create Team",
+ "Team Details": "Team Details",
+ "Create a new team to collaborate with others on projects.": "Create a new team to collaborate with others on projects.",
+ "Team Owner": "Team Owner",
+ "Team Name": "Team Name",
+ "Delete Team": "Delete Team",
+ "Permanently delete this team.": "Permanently delete this team.",
+ "Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain.": "Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain.",
+ "Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted.": "Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted.",
+ "Team Members": "Team Members",
+ "All of the people that are part of this team.": "All of the people that are part of this team.",
+ "Leave Team": "Leave Team",
+ "Are you sure you would like to leave this team?": "Are you sure you would like to leave this team?",
+ "Leave": "Leave",
+ "Remove Team Member": "Remove Team Member",
+ "Are you sure you would like to remove this person from the team?": "Are you sure you would like to remove this person from the team?",
+ "Remove": "Remove",
+ "Manage Role": "Manage Role",
+ "Pending Team Invitations": "Pending Team Invitations",
+ "These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.": "These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.",
+ "The provided password does not match your current password.": "The provided password does not match your current password.",
+ "We were unable to find a registered user with this email address.": "We were unable to find a registered user with this email address.",
+ "This user already belongs to the team.": "This user already belongs to the team.",
+ "This user has already been invited to the team.": "This user has already been invited to the team.",
+ "You may not leave a team that you created.": "You may not leave a team that you created.",
+ "Data Retrieved Successfully": "Data Retrieved Successfully",
+ "Done !": "Done !",
+ "auth.password": "auth.password",
+ "The password is incorrect.": "The password is incorrect.",
+ "The provided password was incorrect.": "The provided password was incorrect.",
+ "Load More": "Load More",
+ "Create Plugin": "Create Plugin",
+ "Description": "Description",
+ "Icon": "Icon",
+ "Color": "Color",
+ "Upload Plugin": "Upload Plugin",
+ "Tables": "Tables",
+ "Enable Plugin": "Enable Plugin",
+ "Disable Plugin": "Disable Plugin",
+ "Delete Plugin": "Delete Plugin",
+ "Github": "Github",
+ "Docs": "Docs",
+ "Add New Plugin": "Add New Plugin",
+ "GitHub": "GitHub",
+ "Start Install The Package": "Start Install The Package",
+ "Authors": "Authors",
+ "Licenses": "Licenses",
+ "Upload New Plugin File": "Upload New Plugin File",
+ "Table": "Table",
+ "Table Name": "Table Name",
+ "Columns": "Columns",
+ "Column Name": "Column Name",
+ "Column Type": "Column Type",
+ "Default": "Default",
+ "Length": "Length",
+ "Nullable": "Nullable",
+ "Index": "Index",
+ "Auto Increment": "Auto Increment",
+ "Primary": "Primary",
+ "Unique": "Unique",
+ "Unsigned": "Unsigned",
+ "Foreign Key": "Foreign Key",
+ "Foreign Table": "Foreign Table",
+ "Foreign Column": "Foreign Column",
+ "On Delete Cascade": "On Delete Cascade",
+ "Timestamps": "Timestamps",
+ "Soft Deletes": "Soft Deletes",
+ "Table Generator": "Table Generator",
+ "Generate Migration": "Generate Migration",
+ "Run Migrate": "Run Migrate",
+ "Generate CRUD": "Generate CRUD",
+ "Generate Models": "Generate Models",
+ "Generate Controllers": "Generate Controllers",
+ "Generate Form Request": "Generate Form Request",
+ "Generate JSON Resource": "Generate JSON Resource",
+ "Generate Views": "Generate Views",
+ "Generate Tables": "Generate Tables",
+ "Generate Routes": "Generate Routes",
+ "Generate API Routes": "Generate API Routes",
+ "Generate Menu": "Generate Menu",
+ "Generate Flutter App": "Generate Flutter App",
+ "Generate Flutter Module": "Generate Flutter Module",
+ "Generate Flutter CRUD": "Generate Flutter CRUD",
+ "Back": "Back",
+ "Generate": "Generate",
+ "Module": "Module",
+ "Comment": "Comment",
+ "Soft deletes": "Soft deletes",
+ "Migrated": "Migrated",
+ "Generated": "Generated",
+ "Module Not Found": "Module Not Found",
+ "Migration Created Successfully": "Migration Created Successfully",
+ "Plugin Already Exists": "Plugin Already Exists",
+ "Plugin Created Successfully": "Plugin Created Successfully",
+ "Plugins Has Been Reloaded": "Plugins Has Been Reloaded",
+ "Plugin Status Changed Successfully": "Plugin Status Changed Successfully",
+ "Plugin Deleted Successfully": "Plugin Deleted Successfully",
+ "Plugin Install Start In Background": "Plugin Install Start In Background",
+ "Your Module Has Been Added Success": "Your Module Has Been Added Success",
+ "Sorry Your File Uploaded Is Not Correct": "Sorry Your File Uploaded Is Not Correct",
+ "Table Not Found": "Table Not Found",
+ "Table Already Exists": "Table Already Exists",
+ "Table Migrated Successfully": "Table Migrated Successfully",
+ "Table Generated Successfully": "Table Generated Successfully",
+ "Table updated successfully": "Table updated successfully",
+ "Table deleted successfully": "Table deleted successfully",
+ "Plugin Has Been Deleted": "Plugin Has Been Deleted",
+ "Id": "Id",
+ "Table Has Been Deleted": "Table Has Been Deleted",
+ "Settings": "Settings",
+ "Plugins": "Plugins",
+ "Please confirm your password before continuing": "Please confirm your password before continuing",
+ "There are no items to show.": "There are no items to show.",
+ "Actions": "Actions",
+ "Date Range": "Date Range",
+ "...": "...",
+ "The password confirmation has expired.": "The password confirmation has expired.",
+ "No user is logged in": "No user is logged in",
+ "Date": "Date",
+ "Home": "Home",
+ "Documentation": "Documentation",
+ "Change Language": "Change Language",
+ "Current Language": "Current Language",
+ "Import Translations": "Import Translations",
+ "Upload Or Drop your excel file here": "Upload Or Drop your excel file here",
+ "Import": "Import",
+ "Tools": "Tools"
+}
\ No newline at end of file
diff --git a/lang/en.json b/lang/en.json
new file mode 100644
index 0000000..72a85e2
--- /dev/null
+++ b/lang/en.json
@@ -0,0 +1,243 @@
+{
+ "Current Team": "Current Team",
+ "Manage Team": "Manage Team",
+ "Team Settings": "Team Settings",
+ "Create New Team": "Create New Team",
+ "Switch Teams": "Switch Teams",
+ "Team Name": "Team Name",
+ "The team's name and owner information.": "The team's name and owner information.",
+ "Team Owner": "Team Owner",
+ "Add Team Member": "Add Team Member",
+ "Please provide the email address of the person you would like to add to this team.": "Please provide the email address of the person you would like to add to this team.",
+ "Email": "Email",
+ "Role": "Role",
+ "Pending Team Invitations": "Pending Team Invitations",
+ "These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.": "These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.",
+ "Delete Team": "Delete Team",
+ "Permanently delete this team.": "Permanently delete this team.",
+ "Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain.": "Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain.",
+ "Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted.": "Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted.",
+ "Manage Account": "Manage Account",
+ "API Tokens": "API Tokens",
+ "Profile Information": "Profile Information",
+ "Update your account's profile information and email address.": "Update your account's profile information and email address.",
+ "Photo": "Photo",
+ "Select A New Photo": "Select A New Photo",
+ "Remove Photo": "Remove Photo",
+ "Name": "Name",
+ "Your email address is unverified.": "Your email address is unverified.",
+ "Click here to re-send the verification email.": "Click here to re-send the verification email.",
+ "Save": "Save",
+ "Two Factor Authentication": "Two Factor Authentication",
+ "Add additional security to your account using two factor authentication.": "Add additional security to your account using two factor authentication.",
+ "You have not enabled two factor authentication.": "You have not enabled two factor authentication.",
+ "When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone's Google Authenticator application.": "When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone's Google Authenticator application.",
+ "Enable": "Enable",
+ "Please confirm your password before continuing": "",
+ "Finish enabling two factor authentication.": "Finish enabling two factor authentication.",
+ "To finish enabling two factor authentication, scan the following QR code using your phone's authenticator application or enter the setup key and provide the generated OTP code.": "To finish enabling two factor authentication, scan the following QR code using your phone's authenticator application or enter the setup key and provide the generated OTP code.",
+ "Setup Key": "Setup Key",
+ "Code": "Code",
+ "Browser Sessions": "Browser Sessions",
+ "Manage and log out your active sessions on other browsers and devices.": "Manage and log out your active sessions on other browsers and devices.",
+ "If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password.": "If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password.",
+ "This device": "This device",
+ "Log Out Other Browser Sessions": "Log Out Other Browser Sessions",
+ "Password": "Password",
+ "Remember me": "Remember me",
+ "Forgot your password?": "Forgot your password?",
+ "Log in": "Log in",
+ "Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.": "Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.",
+ "Email Password Reset Link": "Email Password Reset Link",
+ "Create API Token": "Create API Token",
+ "API tokens allow third-party services to authenticate with our application on your behalf.": "API tokens allow third-party services to authenticate with our application on your behalf.",
+ "Permissions": "Permissions",
+ "Create": "Create",
+ "Edit": "Edit",
+ "Delete": "Delete",
+ "Please copy your new API token. For your security, it won't be shown again.": "Please copy your new API token. For your security, it won't be shown again.",
+ "Manage API Tokens": "Manage API Tokens",
+ "You may delete any of your existing tokens if they are no longer needed.": "You may delete any of your existing tokens if they are no longer needed.",
+ "API Token Permissions": "API Token Permissions",
+ "A new verification link has been sent to your email address.": "A new verification link has been sent to your email address.",
+ "Are you sure you want to continue?": "",
+ "Browse": "",
+ "Cancel": "",
+ "Clear selection": "",
+ "Confirm": "",
+ "Drag and drop your files or Browse": "",
+ "Excel Export": "",
+ "Export results": "",
+ "Go to page :page": "",
+ "Item selected": "",
+ "Items selected": "",
+ "No user is logged in": "",
+ "Pagination Navigation": "",
+ "Remove search": "",
+ "Reset": "",
+ "Search": "",
+ "Select all on this page": "",
+ "Select all results": "",
+ "of": "",
+ "per page": "",
+ "results": "",
+ "to": "",
+ "If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:": "If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:",
+ "Create Account": "Create Account",
+ "If you already have an account, you may accept this invitation by clicking the button below:": "If you already have an account, you may accept this invitation by clicking the button below:",
+ "You may accept this invitation by clicking the button below:": "You may accept this invitation by clicking the button below:",
+ "Accept Invitation": "Accept Invitation",
+ "If you did not expect to receive an invitation to this team, you may discard this email.": "If you did not expect to receive an invitation to this team, you may discard this email.",
+ "Last used": "Last used",
+ "Delete API Token": "Delete API Token",
+ "Are you sure you would like to delete this API token?": "Are you sure you would like to delete this API token?",
+ "API Token": "API Token",
+ "This is a secure area of the application. Please confirm your password before continuing.": "This is a secure area of the application. Please confirm your password before continuing.",
+ "Login": "Login",
+ "Terms of Service": "Terms of Service",
+ "Privacy Policy": "Privacy Policy",
+ "Confirm Password": "Confirm Password",
+ "Reset Password": "Reset Password",
+ "Two-factor Confirmation": "Two-factor Confirmation",
+ "Please confirm access to your account by entering the authentication code provided by your authenticator application.": "Please confirm access to your account by entering the authentication code provided by your authenticator application.",
+ "Please confirm access to your account by entering one of your emergency recovery codes.": "Please confirm access to your account by entering one of your emergency recovery codes.",
+ "Recovery Code": "Recovery Code",
+ "Use a recovery code": "Use a recovery code",
+ "Use an authentication code": "Use an authentication code",
+ "A new verification link has been sent to the email address you provided during registration.": "A new verification link has been sent to the email address you provided during registration.",
+ "Resend Verification Email": "Resend Verification Email",
+ "Log Out": "Log Out",
+ "pagination.previous": "pagination.previous",
+ "pagination.next": "pagination.next",
+ "Showing": "Showing",
+ "Copy": "Copy",
+ "Download File": "Download File",
+ "Empty Transactions": "Empty Transactions",
+ "No Team": "No Team",
+ "Lang": "Lang",
+ "Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.": "Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.",
+ "Last active": "Last active",
+ "Done.": "Done.",
+ "You have enabled two factor authentication.": "You have enabled two factor authentication.",
+ "Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.": "Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.",
+ "Show Recovery Codes": "Show Recovery Codes",
+ "Regenerate Recovery Codes": "Regenerate Recovery Codes",
+ "Disable": "Disable",
+ "Create Team": "Create Team",
+ "Team Details": "Team Details",
+ "Create a new team to collaborate with others on projects.": "Create a new team to collaborate with others on projects.",
+ "Team Members": "Team Members",
+ "All of the people that are part of this team.": "All of the people that are part of this team.",
+ "Leave Team": "Leave Team",
+ "Are you sure you would like to leave this team?": "Are you sure you would like to leave this team?",
+ "Leave": "Leave",
+ "Remove Team Member": "Remove Team Member",
+ "Are you sure you would like to remove this person from the team?": "Are you sure you would like to remove this person from the team?",
+ "Remove": "Remove",
+ "Manage Role": "Manage Role",
+ "The provided password does not match your current password.": "The provided password does not match your current password.",
+ "We were unable to find a registered user with this email address.": "We were unable to find a registered user with this email address.",
+ "This user already belongs to the team.": "This user already belongs to the team.",
+ "This user has already been invited to the team.": "This user has already been invited to the team.",
+ "You may not leave a team that you created.": "You may not leave a team that you created.",
+ "Data Retrieved Successfully": "Data Retrieved Successfully",
+ "Done !": "Done !",
+ "auth.password": "auth.password",
+ "The password is incorrect.": "The password is incorrect.",
+ "The provided password was incorrect.": "The provided password was incorrect.",
+ "Load More": "Load More",
+ "Create Plugin": "Create Plugin",
+ "Description": "Description",
+ "Icon": "Icon",
+ "Color": "Color",
+ "Upload Plugin": "Upload Plugin",
+ "Tables": "Tables",
+ "Enable Plugin": "Enable Plugin",
+ "Disable Plugin": "Disable Plugin",
+ "Delete Plugin": "Delete Plugin",
+ "Github": "Github",
+ "Docs": "Docs",
+ "Add New Plugin": "Add New Plugin",
+ "GitHub": "GitHub",
+ "Start Install The Package": "Start Install The Package",
+ "Authors": "Authors",
+ "Licenses": "Licenses",
+ "Upload New Plugin File": "Upload New Plugin File",
+ "Table": "Table",
+ "Table Name": "Table Name",
+ "Columns": "Columns",
+ "Column Name": "Column Name",
+ "Column Type": "Column Type",
+ "Default": "Default",
+ "Length": "Length",
+ "Nullable": "Nullable",
+ "Index": "Index",
+ "Auto Increment": "Auto Increment",
+ "Primary": "Primary",
+ "Unique": "Unique",
+ "Unsigned": "Unsigned",
+ "Foreign Key": "Foreign Key",
+ "Foreign Table": "Foreign Table",
+ "Foreign Column": "Foreign Column",
+ "On Delete Cascade": "On Delete Cascade",
+ "Timestamps": "Timestamps",
+ "Soft Deletes": "Soft Deletes",
+ "Table Generator": "Table Generator",
+ "Generate Migration": "Generate Migration",
+ "Run Migrate": "Run Migrate",
+ "Generate CRUD": "Generate CRUD",
+ "Generate Models": "Generate Models",
+ "Generate Controllers": "Generate Controllers",
+ "Generate Form Request": "Generate Form Request",
+ "Generate JSON Resource": "Generate JSON Resource",
+ "Generate Views": "Generate Views",
+ "Generate Tables": "Generate Tables",
+ "Generate Routes": "Generate Routes",
+ "Generate API Routes": "Generate API Routes",
+ "Generate Menu": "Generate Menu",
+ "Generate Flutter App": "Generate Flutter App",
+ "Generate Flutter Module": "Generate Flutter Module",
+ "Generate Flutter CRUD": "Generate Flutter CRUD",
+ "Back": "Back",
+ "Generate": "Generate",
+ "Module": "Module",
+ "Comment": "Comment",
+ "Soft deletes": "Soft deletes",
+ "Migrated": "Migrated",
+ "Generated": "Generated",
+ "Module Not Found": "Module Not Found",
+ "Migration Created Successfully": "Migration Created Successfully",
+ "Plugin Already Exists": "Plugin Already Exists",
+ "Plugin Created Successfully": "Plugin Created Successfully",
+ "Plugins Has Been Reloaded": "Plugins Has Been Reloaded",
+ "Plugin Status Changed Successfully": "Plugin Status Changed Successfully",
+ "Plugin Deleted Successfully": "Plugin Deleted Successfully",
+ "Plugin Install Start In Background": "Plugin Install Start In Background",
+ "Your Module Has Been Added Success": "Your Module Has Been Added Success",
+ "Sorry Your File Uploaded Is Not Correct": "Sorry Your File Uploaded Is Not Correct",
+ "Table Not Found": "Table Not Found",
+ "Table Already Exists": "Table Already Exists",
+ "Table Migrated Successfully": "Table Migrated Successfully",
+ "Table Generated Successfully": "Table Generated Successfully",
+ "Table updated successfully": "Table updated successfully",
+ "Table deleted successfully": "Table deleted successfully",
+ "Plugin Has Been Deleted": "Plugin Has Been Deleted",
+ "Id": "Id",
+ "Table Has Been Deleted": "Table Has Been Deleted",
+ "Settings": "Settings",
+ "Plugins": "Plugins",
+ "There are no items to show.": "There are no items to show.",
+ "Actions": "Actions",
+ "Date Range": "Date Range",
+ "...": "...",
+ "The password confirmation has expired.": "The password confirmation has expired.",
+ "Date": "Date",
+ "Home": "Home",
+ "Documentation": "Documentation",
+ "Change Language": "Change Language",
+ "Current Language": "Current Language",
+ "Import Translations": "Import Translations",
+ "Upload Or Drop your excel file here": "Upload Or Drop your excel file here",
+ "Import": "Import",
+ "Tools": "Tools"
+}
\ No newline at end of file
diff --git a/modules_statuses.json b/modules_statuses.json
new file mode 100644
index 0000000..2c63c08
--- /dev/null
+++ b/modules_statuses.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/package.json b/package.json
index 4e934ca..d73f88f 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,44 @@
{
"private": true,
- "type": "module",
"scripts": {
"dev": "vite",
- "build": "vite build"
+ "build": "vite build && vite build --ssr"
},
"devDependencies": {
- "axios": "^1.6.4",
- "laravel-vite-plugin": "^1.0",
- "vite": "^5.0"
+ "@protonemedia/laravel-splade": "^1.1.0",
+ "@tailwindcss/forms": "^0.5.3",
+ "@tailwindcss/typography": "^0.5.8",
+ "@vitejs/plugin-vue": "^4.0.0",
+ "autoprefixer": "^10.4.13",
+ "axios": "^1.1.2",
+ "laravel-vite-plugin": "^0.7.3",
+ "lodash": "^4.17.21",
+ "postcss": "^8.4.18",
+ "postcss-scss": "^4.0.6",
+ "sass": "^1.57.1",
+ "tailwindcss": "^3.2.1",
+ "vite": "^4.0.0",
+ "vue": "^3.2.41"
+ },
+ "dependencies": {
+ "jquery": "^3.7.1",
+ "@vueuse/core": "^10.5.0",
+ "@suadelabs/vue3-multiselect": "^1.0.2",
+ "@tailwindcss/line-clamp": "^0.4.2",
+ "boxicons": "^2.1.4",
+ "codemirror-editor-vue3": "^2.1.8",
+ "moment": "^2.29.4",
+ "numeral": "^2.0.6",
+ "postcss-import": "^15.1.0",
+ "tailwindcss-rtl": "^0.9.0",
+ "tippy.js": "^6.3.7",
+ "lodash-es": "^4.17.21",
+ "vue-draggable-next": "^2.2.1",
+ "vue3-editor": "^0.1.1",
+ "vue3-swatches": "^1.2.3",
+ "swiper": "^11.0.5",
+ "vue3-tel-input": "^1.0.4",
+ "vue3-carousel": "^0.3.1",
+ "md-editor-v3": "^4.12.1"
}
}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..67cdf1a
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/resources/css/.DS_Store b/resources/css/.DS_Store
new file mode 100644
index 0000000..2ccdbc3
Binary files /dev/null and b/resources/css/.DS_Store differ
diff --git a/resources/css/_checkbox-radio-switch.css b/resources/css/_checkbox-radio-switch.css
new file mode 100644
index 0000000..ea593de
--- /dev/null
+++ b/resources/css/_checkbox-radio-switch.css
@@ -0,0 +1,59 @@
+@layer components {
+ .checkbox, .radio, .switch {
+ @apply inline-flex items-center cursor-pointer relative;
+ }
+
+ .checkbox input[type=checkbox], .radio input[type=radio], .switch input[type=checkbox] {
+ @apply absolute left-0 opacity-0 -z-1;
+ }
+
+ .checkbox input[type=checkbox]+.check, .radio input[type=radio]+.check, .switch input[type=checkbox]+.check {
+ @apply border-gray-700 border transition-colors duration-200 dark:bg-slate-800;
+ }
+
+ .checkbox input[type=checkbox]:focus+.check, .radio input[type=radio]:focus+.check, .switch input[type=checkbox]:focus+.check {
+ @apply ring ring-blue-700;
+ }
+
+ .checkbox input[type=checkbox]+.check, .radio input[type=radio]+.check {
+ @apply block w-5 h-5;
+ }
+
+ .checkbox input[type=checkbox]+.check {
+ @apply rounded;
+ }
+
+ .switch input[type=checkbox]+.check {
+ @apply flex items-center shrink-0 w-12 h-6 p-0.5 bg-gray-200;
+ }
+
+ .radio input[type=radio]+.check, .switch input[type=checkbox]+.check, .switch input[type=checkbox]+.check:before {
+ @apply rounded-full;
+ }
+
+ .checkbox input[type=checkbox]:checked+.check, .radio input[type=radio]:checked+.check {
+ @apply bg-no-repeat bg-center border-4;
+ }
+
+ .checkbox input[type=checkbox]:checked+.check {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1'%3E%3Cpath style='fill:%23fff' d='M 0.04038059,0.6267767 0.14644661,0.52071068 0.42928932,0.80355339 0.3232233,0.90961941 z M 0.21715729,0.80355339 0.85355339,0.16715729 0.95961941,0.2732233 0.3232233,0.90961941 z'%3E%3C/path%3E%3C/svg%3E");
+ }
+
+ .radio input[type=radio]:checked+.check {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z' /%3E%3C/svg%3E");
+ }
+
+ .switch input[type=checkbox]:checked+.check, .checkbox input[type=checkbox]:checked+.check, .radio input[type=radio]:checked+.check {
+ @apply bg-blue-600 border-blue-600;
+ }
+
+ .switch input[type=checkbox]+.check:before {
+ content: '';
+ @apply block w-5 h-5 bg-white border border-gray-700;
+ }
+
+ .switch input[type=checkbox]:checked+.check:before {
+ transform: translate3d(110%, 0 ,0);
+ @apply border-blue-600;
+ }
+}
diff --git a/resources/css/_progress.css b/resources/css/_progress.css
new file mode 100644
index 0000000..65d6796
--- /dev/null
+++ b/resources/css/_progress.css
@@ -0,0 +1,21 @@
+@layer base {
+ progress {
+ @apply h-3 rounded-full overflow-hidden;
+ }
+
+ progress::-webkit-progress-bar {
+ @apply bg-blue-200;
+ }
+
+ progress::-webkit-progress-value {
+ @apply bg-blue-500;
+ }
+
+ progress::-moz-progress-bar {
+ @apply bg-blue-500;
+ }
+
+ progress::-ms-fill {
+ @apply bg-blue-500 border-0;
+ }
+}
diff --git a/resources/css/_scrollbars.css b/resources/css/_scrollbars.css
new file mode 100644
index 0000000..a181b84
--- /dev/null
+++ b/resources/css/_scrollbars.css
@@ -0,0 +1,41 @@
+@layer base {
+ html {
+ scrollbar-width: thin;
+ scrollbar-color: rgb(156, 163, 175) rgb(249, 250, 251);
+ }
+
+ body::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+ }
+
+ body::-webkit-scrollbar-track {
+ @apply bg-gray-50;
+ }
+
+ body::-webkit-scrollbar-thumb {
+ @apply bg-gray-400 rounded;
+ }
+
+ body::-webkit-scrollbar-thumb:hover {
+ @apply bg-gray-500;
+ }
+}
+
+@layer utilities {
+ .dark-scrollbars-compat {
+ scrollbar-color: rgb(71, 85, 105) rgb(30, 41, 59);
+ }
+
+ .dark-scrollbars::-webkit-scrollbar-track {
+ @apply bg-slate-800;
+ }
+
+ .dark-scrollbars::-webkit-scrollbar-thumb {
+ @apply bg-slate-600;
+ }
+
+ .dark-scrollbars::-webkit-scrollbar-thumb:hover {
+ @apply bg-slate-500;
+ }
+}
diff --git a/resources/css/_table.css b/resources/css/_table.css
new file mode 100644
index 0000000..40146ac
--- /dev/null
+++ b/resources/css/_table.css
@@ -0,0 +1,48 @@
+@layer base {
+ /*table {*/
+ /* @apply w-full;*/
+ /*}*/
+
+ /*thead {*/
+ /* @apply hidden lg:table-header-group;*/
+ /*}*/
+
+ /*tr {*/
+ /* @apply max-w-full block relative border-b-4 border-gray-100*/
+ /* lg:table-row lg:border-b-0 dark:border-slate-800;*/
+ /*}*/
+
+ /*tr:last-child {*/
+ /* @apply border-b-0;*/
+ /*}*/
+
+ /*td:not(:first-child) {*/
+ /* @apply lg:border-l lg:border-t-0 lg:border-r-0 lg:border-b-0 lg:border-gray-100 lg:dark:border-slate-700;*/
+ /*}*/
+
+ /*th {*/
+ /* @apply lg:text-left lg:p-3;*/
+ /*}*/
+
+ /*td {*/
+ /* @apply flex justify-between text-right py-3 px-4 align-top border-b border-gray-100*/
+ /* lg:table-cell lg:text-left lg:p-3 lg:align-middle lg:border-b-0 dark:border-slate-800;*/
+ /*}*/
+
+ /*td:last-child {*/
+ /* @apply border-b-0;*/
+ /*}*/
+
+ /*tbody tr, tbody tr:nth-child(odd) {*/
+ /* @apply lg:hover:bg-gray-100 lg:dark:hover:bg-slate-700/70;*/
+ /*}*/
+
+ /*tbody tr:nth-child(odd) {*/
+ /* @apply lg:bg-gray-100/50 lg:dark:bg-slate-800/50;*/
+ /*}*/
+
+ /*td:before {*/
+ /* content: attr(data-label);*/
+ /* @apply font-semibold pr-3 text-left lg:hidden;*/
+ /*}*/
+}
diff --git a/resources/css/app.css b/resources/css/app.css
index e69de29..ce958e2 100644
--- a/resources/css/app.css
+++ b/resources/css/app.css
@@ -0,0 +1,60 @@
+@import "./tailwind/_base.css";
+@import "./tailwind/_components.css";
+@import "./tailwind/_utilities.css";
+
+@import "./_checkbox-radio-switch.css";
+@import "./_progress.css";
+@import "./_scrollbars.css";
+@import "./_table.css";
+
+@import 'module.esm.css';
+
+@import 'tippy.js/dist/tippy.css';
+@import 'tippy.js/themes/light.css';
+
+@import 'boxicons/css/boxicons.min.css';
+
+@import url("https://fonts.googleapis.com/css2?family=ABeeZee:ital@0;1&family=IBM+Plex+Sans+Arabic:wght@100;200;300;400;500;600;700&display=swap");
+
+@layer base {
+ html {
+ -webkit-tap-highlight-color: transparent;
+ }
+
+ :root.dark {
+ color-scheme: dark;
+ }
+
+ [dir='rtl'] select {
+ background-position: left 0.5rem center !important;
+ padding-left: 2.5rem;
+ padding-right: 0.75rem;
+ }
+}
+
+@layer components {
+ .filament-login-page {
+ @apply relative bg-no-repeat;
+ background-image: radial-gradient(
+ circle at top,
+ theme('colors.primary.100'),
+ theme('colors.white') 50%
+ );
+ }
+
+ .dark .filament-login-page {
+ background-image: radial-gradient(
+ circle at top,
+ theme('colors.primary.800'),
+ theme('colors.gray.800'),
+ theme('colors.gray.900') 100%
+ );
+ }
+
+ .filament-login-page form::before {
+ @apply w-2/3 absolute inset-x-0 h-px mx-auto bg-gradient-to-r from-gray-200 via-primary-400 to-gray-200 dark:from-gray-700 dark:via-primary-400 dark:to-gray-700;
+ content: '';
+ z-index: 1;
+ top: -1px;
+ }
+}
diff --git a/resources/css/module.esm.css b/resources/css/module.esm.css
new file mode 100644
index 0000000..089f91c
--- /dev/null
+++ b/resources/css/module.esm.css
@@ -0,0 +1,1817 @@
+@charset "UTF-8";
+
+/* node_modules/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css */
+.filepond--image-preview-markup {
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+.filepond--image-preview-wrapper {
+ z-index: 2;
+}
+.filepond--image-preview-overlay {
+ display: block;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ min-height: 5rem;
+ max-height: 7rem;
+ margin: 0;
+ opacity: 0;
+ z-index: 2;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.filepond--image-preview-overlay svg {
+ width: 100%;
+ height: auto;
+ color: inherit;
+ max-height: inherit;
+}
+.filepond--image-preview-overlay-idle {
+ mix-blend-mode: multiply;
+ color: rgba(40, 40, 40, 0.85);
+}
+.filepond--image-preview-overlay-success {
+ mix-blend-mode: normal;
+ color: rgba(54, 151, 99, 1);
+}
+.filepond--image-preview-overlay-failure {
+ mix-blend-mode: normal;
+ color: rgba(196, 78, 71, 1);
+}
+@supports (-webkit-marquee-repetition: infinite) and ((-o-object-fit: fill) or (object-fit: fill)) {
+ .filepond--image-preview-overlay-idle {
+ mix-blend-mode: normal;
+ }
+}
+.filepond--image-preview-wrapper {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ height: 100%;
+ margin: 0;
+ border-radius: 0.45em;
+ overflow: hidden;
+ background: rgba(0, 0, 0, 0.01);
+}
+.filepond--image-preview {
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 1;
+ display: flex;
+ align-items: center;
+ height: 100%;
+ width: 100%;
+ pointer-events: none;
+ background: #222;
+ will-change: transform, opacity;
+}
+.filepond--image-clip {
+ position: relative;
+ overflow: hidden;
+ margin: 0 auto;
+}
+.filepond--image-clip[data-transparency-indicator=grid] img,
+.filepond--image-clip[data-transparency-indicator=grid] canvas {
+ background-color: #fff;
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0 H50 V50 H0'/%3E%3Cpath d='M50 50 H100 V100 H50'/%3E%3C/svg%3E");
+ background-size: 1.25em 1.25em;
+}
+.filepond--image-bitmap,
+.filepond--image-vector {
+ position: absolute;
+ left: 0;
+ top: 0;
+ will-change: transform;
+}
+.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper {
+ border-radius: 0;
+}
+.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview {
+ height: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper {
+ border-radius: 99999rem;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay {
+ top: auto;
+ bottom: 0;
+ -webkit-transform: scaleY(-1);
+ transform: scaleY(-1);
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*="center"]) {
+ margin-bottom: 0.325em;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left] {
+ left: calc(50% - 3em);
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right] {
+ right: calc(50% - 3em);
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],
+.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right] {
+ margin-bottom: calc(0.325em + 0.1875em);
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center] {
+ margin-top: 0;
+ margin-bottom: 0.1875em;
+ margin-left: 0.1875em;
+}
+
+/* node_modules/filepond-plugin-media-preview/dist/filepond-plugin-media-preview.css */
+.filepond--media-preview audio {
+ display: none;
+}
+.filepond--media-preview .audioplayer {
+ width: calc(100% - 1.4em);
+ margin: 2.3em auto auto;
+}
+.filepond--media-preview .playpausebtn {
+ margin-top: 0.3em;
+ margin-right: 0.3em;
+ height: 25px;
+ width: 25px;
+ border-radius: 25px;
+ border: none;
+ background-repeat: no-repeat;
+ background-position: center;
+ float: left;
+ outline: none;
+ cursor: pointer;
+}
+.filepond--media-preview .playpausebtn:hover {
+ background-color: rgba(0, 0, 0, 0.5);
+}
+.filepond--media-preview .play {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=);
+}
+.filepond--media-preview .pause {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC);
+}
+.filepond--media-preview .timeline {
+ width: calc(100% - 2.5em);
+ height: 3px;
+ margin-top: 1em;
+ float: left;
+ border-radius: 15px;
+ background: rgba(255, 255, 255, 0.3);
+}
+.filepond--media-preview .playhead {
+ width: 13px;
+ height: 13px;
+ border-radius: 50%;
+ margin-top: -5px;
+ background: white;
+}
+.filepond--media-preview-wrapper {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ height: 100%;
+ margin: 0;
+ border-radius: 0.45em;
+ overflow: hidden;
+ background: rgba(0, 0, 0, 0.01);
+ pointer-events: auto;
+}
+.filepond--media-preview-wrapper:before {
+ content: " ";
+ position: absolute;
+ width: 100%;
+ height: 2em;
+ background: linear-gradient(to bottom, black 0%, rgba(0, 0, 0, 0) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000", endColorstr="#00000000", GradientType=0);
+ z-index: 3;
+}
+.filepond--media-preview {
+ position: relative;
+ z-index: 1;
+ display: block;
+ width: 100%;
+ height: 100%;
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+ will-change: transform, opacity;
+}
+.filepond--media-preview video,
+.filepond--media-preview audio {
+ width: 100%;
+ will-change: transform;
+}
+
+/* node_modules/filepond/dist/filepond.min.css */
+.filepond--assistant {
+ position: absolute;
+ overflow: hidden;
+ height: 1px;
+ width: 1px;
+ padding: 0;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ -webkit-clip-path: inset(50%);
+ clip-path: inset(50%);
+ white-space: nowrap;
+}
+.filepond--browser.filepond--browser {
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ left: 1em;
+ top: 1.75em;
+ width: calc(100% - 2em);
+ opacity: 0;
+ font-size: 0;
+}
+.filepond--data {
+ position: absolute;
+ width: 0;
+ height: 0;
+ padding: 0;
+ margin: 0;
+ border: none;
+ visibility: hidden;
+ pointer-events: none;
+ contain: strict;
+}
+.filepond--drip {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden;
+ opacity: .1;
+ pointer-events: none;
+ border-radius: .5em;
+ background: rgba(0, 0, 0, .01);
+}
+.filepond--drip-blob {
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+ width: 8em;
+ height: 8em;
+ margin-left: -4em;
+ margin-top: -4em;
+ background: #292625;
+ border-radius: 50%;
+}
+.filepond--drip-blob,
+.filepond--drop-label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ will-change: transform, opacity;
+}
+.filepond--drop-label {
+ right: 0;
+ margin: 0;
+ color: #4f4f4f;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.filepond--drop-label.filepond--drop-label label {
+ display: block;
+ margin: 0;
+ padding: .5em;
+}
+.filepond--drop-label label {
+ cursor: default;
+ font-size: .875em;
+ font-weight: 400;
+ text-align: center;
+ line-height: 1.5;
+}
+.filepond--label-action {
+ text-decoration: underline;
+ -webkit-text-decoration-skip: ink;
+ text-decoration-skip-ink: auto;
+ -webkit-text-decoration-color: #a7a4a4;
+ text-decoration-color: #a7a4a4;
+ cursor: pointer;
+}
+.filepond--root[data-disabled] .filepond--drop-label label {
+ opacity: .5;
+}
+.filepond--file-action-button.filepond--file-action-button {
+ font-size: 1em;
+ width: 1.625em;
+ height: 1.625em;
+ font-family: inherit;
+ line-height: inherit;
+ margin: 0;
+ padding: 0;
+ border: none;
+ outline: none;
+ will-change: transform, opacity;
+}
+.filepond--file-action-button.filepond--file-action-button span {
+ position: absolute;
+ overflow: hidden;
+ height: 1px;
+ width: 1px;
+ padding: 0;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ -webkit-clip-path: inset(50%);
+ clip-path: inset(50%);
+ white-space: nowrap;
+}
+.filepond--file-action-button.filepond--file-action-button svg {
+ width: 100%;
+ height: 100%;
+}
+.filepond--file-action-button.filepond--file-action-button:after {
+ position: absolute;
+ left: -.75em;
+ right: -.75em;
+ top: -.75em;
+ bottom: -.75em;
+ content: "";
+}
+.filepond--file-action-button {
+ cursor: auto;
+ color: #fff;
+ border-radius: 50%;
+ background-color: rgba(0, 0, 0, .5);
+ background-image: none;
+ box-shadow: 0 0 0 0 hsla(0, 0%, 100%, 0);
+ transition: box-shadow .25s ease-in;
+}
+.filepond--file-action-button:focus,
+.filepond--file-action-button:hover {
+ box-shadow: 0 0 0 .125em hsla(0, 0%, 100%, .9);
+}
+.filepond--file-action-button[disabled] {
+ color: hsla(0, 0%, 100%, .5);
+ background-color: rgba(0, 0, 0, .25);
+}
+.filepond--file-action-button[hidden] {
+ display: none;
+}
+.filepond--action-edit-item.filepond--action-edit-item {
+ width: 2em;
+ height: 2em;
+ padding: .1875em;
+}
+.filepond--action-edit-item.filepond--action-edit-item[data-align*=center] {
+ margin-left: -.1875em;
+}
+.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom] {
+ margin-bottom: -.1875em;
+}
+.filepond--action-edit-item-alt {
+ border: none;
+ line-height: inherit;
+ background: transparent;
+ font-family: inherit;
+ color: inherit;
+ outline: none;
+ padding: 0;
+ margin: 0 0 0 .25em;
+ pointer-events: all;
+ position: absolute;
+}
+.filepond--action-edit-item-alt svg {
+ width: 1.3125em;
+ height: 1.3125em;
+}
+.filepond--action-edit-item-alt span {
+ font-size: 0;
+ opacity: 0;
+}
+.filepond--file-info {
+ position: static;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ flex: 1;
+ margin: 0 .5em 0 0;
+ min-width: 0;
+ will-change: transform, opacity;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.filepond--file-info * {
+ margin: 0;
+}
+.filepond--file-info .filepond--file-info-main {
+ font-size: .75em;
+ line-height: 1.2;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+.filepond--file-info .filepond--file-info-sub {
+ font-size: .625em;
+ opacity: .5;
+ transition: opacity .25s ease-in-out;
+ white-space: nowrap;
+}
+.filepond--file-info .filepond--file-info-sub:empty {
+ display: none;
+}
+.filepond--file-status {
+ position: static;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-end;
+ flex-grow: 0;
+ flex-shrink: 0;
+ margin: 0;
+ min-width: 2.25em;
+ text-align: right;
+ will-change: transform, opacity;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.filepond--file-status * {
+ margin: 0;
+ white-space: nowrap;
+}
+.filepond--file-status .filepond--file-status-main {
+ font-size: .75em;
+ line-height: 1.2;
+}
+.filepond--file-status .filepond--file-status-sub {
+ font-size: .625em;
+ opacity: .5;
+ transition: opacity .25s ease-in-out;
+}
+.filepond--file-wrapper.filepond--file-wrapper {
+ border: none;
+ margin: 0;
+ padding: 0;
+ min-width: 0;
+ height: 100%;
+}
+.filepond--file-wrapper.filepond--file-wrapper > legend {
+ position: absolute;
+ overflow: hidden;
+ height: 1px;
+ width: 1px;
+ padding: 0;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ -webkit-clip-path: inset(50%);
+ clip-path: inset(50%);
+ white-space: nowrap;
+}
+.filepond--file {
+ position: static;
+ display: flex;
+ height: 100%;
+ align-items: flex-start;
+ padding: .5625em;
+ color: #fff;
+ border-radius: .5em;
+}
+.filepond--file .filepond--file-status {
+ margin-left: auto;
+ margin-right: 2.25em;
+}
+.filepond--file .filepond--processing-complete-indicator {
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ z-index: 3;
+}
+.filepond--file .filepond--file-action-button,
+.filepond--file .filepond--processing-complete-indicator,
+.filepond--file .filepond--progress-indicator {
+ position: absolute;
+}
+.filepond--file [data-align*=left] {
+ left: .5625em;
+}
+.filepond--file [data-align*=right] {
+ right: .5625em;
+}
+.filepond--file [data-align*=center] {
+ left: calc(50% - .8125em);
+}
+.filepond--file [data-align*=bottom] {
+ bottom: 1.125em;
+}
+.filepond--file [data-align=center] {
+ top: calc(50% - .8125em);
+}
+.filepond--file .filepond--progress-indicator {
+ margin-top: .1875em;
+}
+.filepond--file .filepond--progress-indicator[data-align*=right] {
+ margin-right: .1875em;
+}
+.filepond--file .filepond--progress-indicator[data-align*=left] {
+ margin-left: .1875em;
+}
+[data-filepond-item-state*=error] .filepond--file-info,
+[data-filepond-item-state*=invalid] .filepond--file-info,
+[data-filepond-item-state=cancelled] .filepond--file-info {
+ margin-right: 2.25em;
+}
+[data-filepond-item-state~=processing] .filepond--file-status-sub {
+ opacity: 0;
+}
+[data-filepond-item-state~=processing] .filepond--action-abort-item-processing ~ .filepond--file-status .filepond--file-status-sub {
+ opacity: .5;
+}
+[data-filepond-item-state=processing-error] .filepond--file-status-sub {
+ opacity: 0;
+}
+[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing ~ .filepond--file-status .filepond--file-status-sub {
+ opacity: .5;
+}
+[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg {
+ -webkit-animation: fall .5s linear .125s both;
+ animation: fall .5s linear .125s both;
+}
+[data-filepond-item-state=processing-complete] .filepond--file-status-sub {
+ opacity: .5;
+}
+[data-filepond-item-state=processing-complete] .filepond--file-info-sub,
+[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden]) ~ .filepond--file-status .filepond--file-status-sub {
+ opacity: 0;
+}
+[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing ~ .filepond--file-info .filepond--file-info-sub {
+ opacity: .5;
+}
+[data-filepond-item-state*=error] .filepond--file-wrapper,
+[data-filepond-item-state*=error] .filepond--panel,
+[data-filepond-item-state*=invalid] .filepond--file-wrapper,
+[data-filepond-item-state*=invalid] .filepond--panel {
+ -webkit-animation: shake .65s linear both;
+ animation: shake .65s linear both;
+}
+[data-filepond-item-state*=busy] .filepond--progress-indicator svg {
+ -webkit-animation: spin 1s linear infinite;
+ animation: spin 1s linear infinite;
+}
+@-webkit-keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn);
+ }
+}
+@keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn);
+ }
+}
+@-webkit-keyframes shake {
+ 10%, 90% {
+ -webkit-transform: translateX(-.0625em);
+ transform: translateX(-.0625em);
+ }
+ 20%, 80% {
+ -webkit-transform: translateX(.125em);
+ transform: translateX(.125em);
+ }
+ 30%, 50%, 70% {
+ -webkit-transform: translateX(-.25em);
+ transform: translateX(-.25em);
+ }
+ 40%, 60% {
+ -webkit-transform: translateX(.25em);
+ transform: translateX(.25em);
+ }
+}
+@keyframes shake {
+ 10%, 90% {
+ -webkit-transform: translateX(-.0625em);
+ transform: translateX(-.0625em);
+ }
+ 20%, 80% {
+ -webkit-transform: translateX(.125em);
+ transform: translateX(.125em);
+ }
+ 30%, 50%, 70% {
+ -webkit-transform: translateX(-.25em);
+ transform: translateX(-.25em);
+ }
+ 40%, 60% {
+ -webkit-transform: translateX(.25em);
+ transform: translateX(.25em);
+ }
+}
+@-webkit-keyframes fall {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.5);
+ transform: scale(.5);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+ 70% {
+ opacity: 1;
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+}
+@keyframes fall {
+ 0% {
+ opacity: 0;
+ -webkit-transform: scale(.5);
+ transform: scale(.5);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+ 70% {
+ opacity: 1;
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+ -webkit-animation-timing-function: ease-in-out;
+ animation-timing-function: ease-in-out;
+ }
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-animation-timing-function: ease-out;
+ animation-timing-function: ease-out;
+ }
+}
+.filepond--hopper[data-hopper-state=drag-over] > * {
+ pointer-events: none;
+}
+.filepond--hopper[data-hopper-state=drag-over]:after {
+ content: "";
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 100;
+}
+.filepond--progress-indicator {
+ z-index: 103;
+}
+.filepond--file-action-button {
+ z-index: 102;
+}
+.filepond--file-status {
+ z-index: 101;
+}
+.filepond--file-info {
+ z-index: 100;
+}
+.filepond--item {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ z-index: 1;
+ padding: 0;
+ margin: .25em;
+ will-change: transform, opacity;
+}
+.filepond--item > .filepond--panel {
+ z-index: -1;
+}
+.filepond--item > .filepond--panel .filepond--panel-bottom {
+ box-shadow: 0 .0625em .125em -.0625em rgba(0, 0, 0, .25);
+}
+.filepond--item > .filepond--file-wrapper,
+.filepond--item > .filepond--panel {
+ transition: opacity .15s ease-out;
+}
+.filepond--item[data-drag-state] {
+ cursor: -webkit-grab;
+ cursor: grab;
+}
+.filepond--item[data-drag-state] > .filepond--panel {
+ transition: box-shadow .125s ease-in-out;
+ box-shadow: 0 0 0 transparent;
+}
+.filepond--item[data-drag-state=drag] {
+ cursor: -webkit-grabbing;
+ cursor: grabbing;
+}
+.filepond--item[data-drag-state=drag] > .filepond--panel {
+ box-shadow: 0 .125em .3125em rgba(0, 0, 0, .325);
+}
+.filepond--item[data-drag-state]:not([data-drag-state=idle]) {
+ z-index: 2;
+}
+.filepond--item-panel {
+ background-color: #64605e;
+}
+[data-filepond-item-state=processing-complete] .filepond--item-panel {
+ background-color: #369763;
+}
+[data-filepond-item-state*=error] .filepond--item-panel,
+[data-filepond-item-state*=invalid] .filepond--item-panel {
+ background-color: #c44e47;
+}
+.filepond--item-panel {
+ border-radius: .5em;
+ transition: background-color .25s;
+}
+.filepond--list-scroller {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ will-change: transform;
+}
+.filepond--list-scroller[data-state=overflow] .filepond--list {
+ bottom: 0;
+ right: 0;
+}
+.filepond--list-scroller[data-state=overflow] {
+ overflow-y: scroll;
+ overflow-x: hidden;
+ -webkit-overflow-scrolling: touch;
+ -webkit-mask: linear-gradient(180deg, #000 calc(100% - .5em), transparent);
+ mask: linear-gradient(180deg, #000 calc(100% - .5em), transparent);
+}
+.filepond--list-scroller::-webkit-scrollbar {
+ background: transparent;
+}
+.filepond--list-scroller::-webkit-scrollbar:vertical {
+ width: 1em;
+}
+.filepond--list-scroller::-webkit-scrollbar:horizontal {
+ height: 0;
+}
+.filepond--list-scroller::-webkit-scrollbar-thumb {
+ background-color: rgba(0, 0, 0, .3);
+ border-radius: 99999px;
+ border: .3125em solid transparent;
+ background-clip: content-box;
+}
+.filepond--list.filepond--list {
+ position: absolute;
+ top: 0;
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ will-change: transform;
+}
+.filepond--list {
+ left: .75em;
+ right: .75em;
+}
+.filepond--root[data-style-panel-layout~=integrated] {
+ width: 100%;
+ height: 100%;
+ max-width: none;
+ margin: 0;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root {
+ border-radius: 0;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root > *,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root > * {
+ display: none;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label {
+ bottom: 0;
+ height: auto;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 7;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel {
+ display: none;
+}
+.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller {
+ overflow: hidden;
+ height: 100%;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.filepond--root[data-style-panel-layout~=compact] .filepond--list,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--list {
+ left: 0;
+ right: 0;
+ height: 100%;
+}
+.filepond--root[data-style-panel-layout~=compact] .filepond--item,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--item {
+ margin: 0;
+}
+.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper {
+ height: 100%;
+}
+.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,
+.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label {
+ z-index: 7;
+}
+.filepond--root[data-style-panel-layout~=circle] {
+ border-radius: 99999rem;
+ overflow: hidden;
+}
+.filepond--root[data-style-panel-layout~=circle] > .filepond--panel {
+ border-radius: inherit;
+}
+.filepond--root[data-style-panel-layout~=circle] > .filepond--panel > * {
+ display: none;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,
+.filepond--root[data-style-panel-layout~=circle] .filepond--file-status {
+ display: none;
+}
+.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item {
+ opacity: 1 !important;
+ visibility: visible !important;
+}
+@media not all and (min-resolution:0.001dpcm) {
+ @supports (-webkit-appearance:none) and (stroke-color:transparent) {
+ .filepond--root[data-style-panel-layout~=circle] {
+ will-change: transform;
+ }
+ }
+}
+.filepond--panel-root {
+ border-radius: .5em;
+ background-color: #f1f0ef;
+}
+.filepond--panel {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ margin: 0;
+ height: 100% !important;
+ pointer-events: none;
+}
+.filepond-panel:not([data-scalable=false]) {
+ height: auto !important;
+}
+.filepond--panel[data-scalable=false] > div {
+ display: none;
+}
+.filepond--panel[data-scalable=true] {
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ background-color: transparent !important;
+ border: none !important;
+}
+.filepond--panel-bottom,
+.filepond--panel-center,
+.filepond--panel-top {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ margin: 0;
+ padding: 0;
+}
+.filepond--panel-bottom,
+.filepond--panel-top {
+ height: .5em;
+}
+.filepond--panel-top {
+ border-bottom-left-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+ border-bottom: none !important;
+}
+.filepond--panel-top:after {
+ content: "";
+ position: absolute;
+ height: 2px;
+ left: 0;
+ right: 0;
+ bottom: -1px;
+ background-color: inherit;
+}
+.filepond--panel-bottom,
+.filepond--panel-center {
+ will-change: transform;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-transform-origin: left top;
+ transform-origin: left top;
+ -webkit-transform: translate3d(0, .5em, 0);
+ transform: translate3d(0, .5em, 0);
+}
+.filepond--panel-bottom {
+ border-top-left-radius: 0 !important;
+ border-top-right-radius: 0 !important;
+ border-top: none !important;
+}
+.filepond--panel-bottom:before {
+ content: "";
+ position: absolute;
+ height: 2px;
+ left: 0;
+ right: 0;
+ top: -1px;
+ background-color: inherit;
+}
+.filepond--panel-center {
+ height: 100px !important;
+ border-top: none !important;
+ border-bottom: none !important;
+ border-radius: 0 !important;
+}
+.filepond--panel-center:not([style]) {
+ visibility: hidden;
+}
+.filepond--progress-indicator {
+ position: static;
+ width: 1.25em;
+ height: 1.25em;
+ color: #fff;
+ margin: 0;
+ pointer-events: none;
+ will-change: transform, opacity;
+}
+.filepond--progress-indicator svg {
+ width: 100%;
+ height: 100%;
+ vertical-align: top;
+ transform-box: fill-box;
+}
+.filepond--progress-indicator path {
+ fill: none;
+ stroke: currentColor;
+}
+.filepond--list-scroller {
+ z-index: 6;
+}
+.filepond--drop-label {
+ z-index: 5;
+}
+.filepond--drip {
+ z-index: 3;
+}
+.filepond--root > .filepond--panel {
+ z-index: 2;
+}
+.filepond--browser {
+ z-index: 1;
+}
+.filepond--root {
+ box-sizing: border-box;
+ position: relative;
+ margin-bottom: 1em;
+ font-size: 1rem;
+ line-height: normal;
+ font-family:
+ -apple-system,
+ BlinkMacSystemFont,
+ Segoe UI,
+ Roboto,
+ Helvetica,
+ Arial,
+ sans-serif,
+ Apple Color Emoji,
+ Segoe UI Emoji,
+ Segoe UI Symbol;
+ font-weight: 450;
+ text-align: left;
+ text-rendering: optimizeLegibility;
+ direction: ltr;
+ contain: layout style size;
+}
+.filepond--root * {
+ box-sizing: inherit;
+ line-height: inherit;
+}
+.filepond--root :not(text) {
+ font-size: inherit;
+}
+.filepond--root[data-disabled] {
+ pointer-events: none;
+}
+.filepond--root[data-disabled] .filepond--list-scroller {
+ pointer-events: all;
+}
+.filepond--root[data-disabled] .filepond--list {
+ pointer-events: none;
+}
+.filepond--root .filepond--drop-label {
+ min-height: 4.75em;
+}
+.filepond--root .filepond--list-scroller {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.filepond--root .filepond--credits {
+ position: absolute;
+ right: 0;
+ opacity: .175;
+ line-height: .85;
+ font-size: 11px;
+ color: inherit;
+ text-decoration: none;
+ z-index: 3;
+ bottom: -14px;
+}
+.filepond--root .filepond--credits[style] {
+ top: 0;
+ bottom: auto;
+ margin-top: 14px;
+}
+
+/* node_modules/trix/dist/trix.css */
+trix-editor {
+ border: 1px solid #bbb;
+ border-radius: 3px;
+ margin: 0;
+ padding: 0.4em 0.6em;
+ min-height: 5em;
+ outline: none;
+}
+trix-toolbar * {
+ box-sizing: border-box;
+}
+trix-toolbar .trix-button-row {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ overflow-x: auto;
+}
+trix-toolbar .trix-button-group {
+ display: flex;
+ margin-bottom: 10px;
+ border: 1px solid #bbb;
+ border-top-color: #ccc;
+ border-bottom-color: #888;
+ border-radius: 3px;
+}
+trix-toolbar .trix-button-group:not(:first-child) {
+ margin-left: 1.5vw;
+}
+@media (max-device-width: 768px) {
+ trix-toolbar .trix-button-group:not(:first-child) {
+ margin-left: 0;
+ }
+}
+trix-toolbar .trix-button-group-spacer {
+ flex-grow: 1;
+}
+@media (max-device-width: 768px) {
+ trix-toolbar .trix-button-group-spacer {
+ display: none;
+ }
+}
+trix-toolbar .trix-button {
+ position: relative;
+ float: left;
+ color: rgba(0, 0, 0, 0.6);
+ font-size: 0.75em;
+ font-weight: 600;
+ white-space: nowrap;
+ padding: 0 0.5em;
+ margin: 0;
+ outline: none;
+ border: none;
+ border-bottom: 1px solid #ddd;
+ border-radius: 0;
+ background: transparent;
+}
+trix-toolbar .trix-button:not(:first-child) {
+ border-left: 1px solid #ccc;
+}
+trix-toolbar .trix-button.trix-active {
+ background: #cbeefa;
+ color: black;
+}
+trix-toolbar .trix-button:not(:disabled) {
+ cursor: pointer;
+}
+trix-toolbar .trix-button:disabled {
+ color: rgba(0, 0, 0, 0.125);
+}
+@media (max-device-width: 768px) {
+ trix-toolbar .trix-button {
+ letter-spacing: -0.01em;
+ padding: 0 0.3em;
+ }
+}
+trix-toolbar .trix-button--icon {
+ font-size: inherit;
+ width: 2.6em;
+ height: 1.6em;
+ max-width: calc(0.8em + 4vw);
+ text-indent: -9999px;
+}
+@media (max-device-width: 768px) {
+ trix-toolbar .trix-button--icon {
+ height: 2em;
+ max-width: calc(0.8em + 3.5vw);
+ }
+}
+trix-toolbar .trix-button--icon::before {
+ display: inline-block;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ opacity: 0.6;
+ content: "";
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+}
+@media (max-device-width: 768px) {
+ trix-toolbar .trix-button--icon::before {
+ right: 6%;
+ left: 6%;
+ }
+}
+trix-toolbar .trix-button--icon.trix-active::before {
+ opacity: 1;
+}
+trix-toolbar .trix-button--icon:disabled::before {
+ opacity: 0.125;
+}
+trix-toolbar .trix-button--icon-attach::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M16.5%206v11.5a4%204%200%201%201-8%200V5a2.5%202.5%200%200%201%205%200v10.5a1%201%200%201%201-2%200V6H10v9.5a2.5%202.5%200%200%200%205%200V5a4%204%200%201%200-8%200v12.5a5.5%205.5%200%200%200%2011%200V6h-1.5z%22%2F%3E%3C%2Fsvg%3E);
+ top: 8%;
+ bottom: 4%;
+}
+trix-toolbar .trix-button--icon-bold::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M15.6%2011.8c1-.7%201.6-1.8%201.6-2.8a4%204%200%200%200-4-4H7v14h7c2.1%200%203.7-1.7%203.7-3.8%200-1.5-.8-2.8-2.1-3.4zM10%207.5h3a1.5%201.5%200%201%201%200%203h-3v-3zm3.5%209H10v-3h3.5a1.5%201.5%200%201%201%200%203z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-italic::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M10%205v3h2.2l-3.4%208H6v3h8v-3h-2.2l3.4-8H18V5h-8z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-link::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M9.88%2013.7a4.3%204.3%200%200%201%200-6.07l3.37-3.37a4.26%204.26%200%200%201%206.07%200%204.3%204.3%200%200%201%200%206.06l-1.96%201.72a.91.91%200%201%201-1.3-1.3l1.97-1.71a2.46%202.46%200%200%200-3.48-3.48l-3.38%203.37a2.46%202.46%200%200%200%200%203.48.91.91%200%201%201-1.3%201.3z%22%2F%3E%3Cpath%20d%3D%22M4.25%2019.46a4.3%204.3%200%200%201%200-6.07l1.93-1.9a.91.91%200%201%201%201.3%201.3l-1.93%201.9a2.46%202.46%200%200%200%203.48%203.48l3.37-3.38c.96-.96.96-2.52%200-3.48a.91.91%200%201%201%201.3-1.3%204.3%204.3%200%200%201%200%206.07l-3.38%203.38a4.26%204.26%200%200%201-6.07%200z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-strike::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12.73%2014l.28.14c.26.15.45.3.57.44.12.14.18.3.18.5%200%20.3-.15.56-.44.75-.3.2-.76.3-1.39.3A13.52%2013.52%200%200%201%207%2014.95v3.37a10.64%2010.64%200%200%200%204.84.88c1.26%200%202.35-.19%203.28-.56.93-.37%201.64-.9%202.14-1.57s.74-1.45.74-2.32c0-.26-.02-.51-.06-.75h-5.21zm-5.5-4c-.08-.34-.12-.7-.12-1.1%200-1.29.52-2.3%201.58-3.02%201.05-.72%202.5-1.08%204.34-1.08%201.62%200%203.28.34%204.97%201l-1.3%202.93c-1.47-.6-2.73-.9-3.8-.9-.55%200-.96.08-1.2.26-.26.17-.38.38-.38.64%200%20.27.16.52.48.74.17.12.53.3%201.05.53H7.23zM3%2013h18v-2H3v2z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-quote::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M6%2017h3l2-4V7H5v6h3zm8%200h3l2-4V7h-6v6h3z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-heading-1::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12%209v3H9v7H6v-7H3V9h9zM8%204h14v3h-6v12h-3V7H8V4z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-code::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M18.2%2012L15%2015.2l1.4%201.4L21%2012l-4.6-4.6L15%208.8l3.2%203.2zM5.8%2012L9%208.8%207.6%207.4%203%2012l4.6%204.6L9%2015.2%205.8%2012z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-bullet-list::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%204a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm0%206a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm0%206a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm4%203h14v-2H8v2zm0-6h14v-2H8v2zm0-8v2h14V5H8z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-number-list::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M2%2017h2v.5H3v1h1v.5H2v1h3v-4H2v1zm1-9h1V4H2v1h1v3zm-1%203h1.8L2%2013.1v.9h3v-1H3.2L5%2010.9V10H2v1zm5-6v2h14V5H7zm0%2014h14v-2H7v2zm0-6h14v-2H7v2z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-undo::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12.5%208c-2.6%200-5%201-6.9%202.6L2%207v9h9l-3.6-3.6A8%208%200%200%201%2020%2016l2.4-.8a10.5%2010.5%200%200%200-10-7.2z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-redo::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M18.4%2010.6a10.5%2010.5%200%200%200-16.9%204.6L4%2016a8%208%200%200%201%2012.7-3.6L13%2016h9V7l-3.6%203.6z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-decrease-nesting-level::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M3%2019h19v-2H3v2zm7-6h12v-2H10v2zm-8.3-.3l2.8%202.9L6%2014.2%204%2012l2-2-1.4-1.5L1%2012l.7.7zM3%205v2h19V5H3z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-button--icon-increase-nesting-level::before {
+ background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M3%2019h19v-2H3v2zm7-6h12v-2H10v2zm-6.9-1L1%2014.2l1.4%201.4L6%2012l-.7-.7-2.8-2.8L1%209.9%203.1%2012zM3%205v2h19V5H3z%22%2F%3E%3C%2Fsvg%3E);
+}
+trix-toolbar .trix-dialogs {
+ position: relative;
+}
+trix-toolbar .trix-dialog {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ font-size: 0.75em;
+ padding: 15px 10px;
+ background: #fff;
+ box-shadow: 0 0.3em 1em #ccc;
+ border-top: 2px solid #888;
+ border-radius: 5px;
+ z-index: 5;
+}
+trix-toolbar .trix-input--dialog {
+ font-size: inherit;
+ font-weight: normal;
+ padding: 0.5em 0.8em;
+ margin: 0 10px 0 0;
+ border-radius: 3px;
+ border: 1px solid #bbb;
+ background-color: #fff;
+ box-shadow: none;
+ outline: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+trix-toolbar .trix-input--dialog.validate:invalid {
+ box-shadow: #F00 0px 0px 1.5px 1px;
+}
+trix-toolbar .trix-button--dialog {
+ font-size: inherit;
+ padding: 0.5em;
+ border-bottom: none;
+}
+trix-toolbar .trix-dialog--link {
+ max-width: 600px;
+}
+trix-toolbar .trix-dialog__link-fields {
+ display: flex;
+ align-items: baseline;
+}
+trix-toolbar .trix-dialog__link-fields .trix-input {
+ flex: 1;
+}
+trix-toolbar .trix-dialog__link-fields .trix-button-group {
+ flex: 0 0 content;
+ margin: 0;
+}
+trix-editor [data-trix-mutable]:not(.attachment__caption-editor) {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+trix-editor [data-trix-mutable]::-moz-selection,
+trix-editor [data-trix-cursor-target]::-moz-selection,
+trix-editor [data-trix-mutable] ::-moz-selection {
+ background: none;
+}
+trix-editor [data-trix-mutable]::selection,
+trix-editor [data-trix-cursor-target]::selection,
+trix-editor [data-trix-mutable] ::selection {
+ background: none;
+}
+trix-editor [data-trix-mutable].attachment__caption-editor:focus::-moz-selection {
+ background: highlight;
+}
+trix-editor [data-trix-mutable].attachment__caption-editor:focus::selection {
+ background: highlight;
+}
+trix-editor [data-trix-mutable].attachment.attachment--file {
+ box-shadow: 0 0 0 2px highlight;
+ border-color: transparent;
+}
+trix-editor [data-trix-mutable].attachment img {
+ box-shadow: 0 0 0 2px highlight;
+}
+trix-editor .attachment {
+ position: relative;
+}
+trix-editor .attachment:hover {
+ cursor: default;
+}
+trix-editor .attachment--preview .attachment__caption:hover {
+ cursor: text;
+}
+trix-editor .attachment__progress {
+ position: absolute;
+ z-index: 1;
+ height: 20px;
+ top: calc(50% - 10px);
+ left: 5%;
+ width: 90%;
+ opacity: 0.9;
+ transition: opacity 200ms ease-in;
+}
+trix-editor .attachment__progress[value="100"] {
+ opacity: 0;
+}
+trix-editor .attachment__caption-editor {
+ display: inline-block;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit;
+ color: inherit;
+ text-align: center;
+ vertical-align: top;
+ border: none;
+ outline: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+}
+trix-editor .attachment__toolbar {
+ position: absolute;
+ z-index: 1;
+ top: -0.9em;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+trix-editor .trix-button-group {
+ display: inline-flex;
+}
+trix-editor .trix-button {
+ position: relative;
+ float: left;
+ color: #666;
+ white-space: nowrap;
+ font-size: 80%;
+ padding: 0 0.8em;
+ margin: 0;
+ outline: none;
+ border: none;
+ border-radius: 0;
+ background: transparent;
+}
+trix-editor .trix-button:not(:first-child) {
+ border-left: 1px solid #ccc;
+}
+trix-editor .trix-button.trix-active {
+ background: #cbeefa;
+}
+trix-editor .trix-button:not(:disabled) {
+ cursor: pointer;
+}
+trix-editor .trix-button--remove {
+ text-indent: -9999px;
+ display: inline-block;
+ padding: 0;
+ outline: none;
+ width: 1.8em;
+ height: 1.8em;
+ line-height: 1.8em;
+ border-radius: 50%;
+ background-color: #fff;
+ border: 2px solid highlight;
+ box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.25);
+}
+trix-editor .trix-button--remove::before {
+ display: inline-block;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ opacity: 0.7;
+ content: "";
+ background-image: url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19%206.4L17.6%205%2012%2010.6%206.4%205%205%206.4l5.6%205.6L5%2017.6%206.4%2019l5.6-5.6%205.6%205.6%201.4-1.4-5.6-5.6z%22%2F%3E%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3C%2Fsvg%3E);
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: 90%;
+}
+trix-editor .trix-button--remove:hover {
+ border-color: #333;
+}
+trix-editor .trix-button--remove:hover::before {
+ opacity: 1;
+}
+trix-editor .attachment__metadata-container {
+ position: relative;
+}
+trix-editor .attachment__metadata {
+ position: absolute;
+ left: 50%;
+ top: 2em;
+ transform: translate(-50%, 0);
+ max-width: 90%;
+ padding: 0.1em 0.6em;
+ font-size: 0.8em;
+ color: #fff;
+ background-color: rgba(0, 0, 0, 0.7);
+ border-radius: 3px;
+}
+trix-editor .attachment__metadata .attachment__name {
+ display: inline-block;
+ max-width: 100%;
+ vertical-align: bottom;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+trix-editor .attachment__metadata .attachment__size {
+ margin-left: 0.2em;
+ white-space: nowrap;
+}
+.trix-content {
+ line-height: 1.5;
+}
+.trix-content * {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+.trix-content h1 {
+ font-size: 1.2em;
+ line-height: 1.2;
+}
+.trix-content blockquote {
+ border: 0 solid #ccc;
+ border-left-width: 0.3em;
+ margin-left: 0.3em;
+ padding-left: 0.6em;
+}
+.trix-content [dir=rtl] blockquote,
+.trix-content blockquote[dir=rtl] {
+ border-width: 0;
+ border-right-width: 0.3em;
+ margin-right: 0.3em;
+ padding-right: 0.6em;
+}
+.trix-content li {
+ margin-left: 1em;
+}
+.trix-content [dir=rtl] li {
+ margin-right: 1em;
+}
+.trix-content pre {
+ display: inline-block;
+ width: 100%;
+ vertical-align: top;
+ font-family: monospace;
+ font-size: 0.9em;
+ padding: 0.5em;
+ white-space: pre;
+ background-color: #eee;
+ overflow-x: auto;
+}
+.trix-content img {
+ max-width: 100%;
+ height: auto;
+}
+.trix-content .attachment {
+ display: inline-block;
+ position: relative;
+ max-width: 100%;
+}
+.trix-content .attachment a {
+ color: inherit;
+ text-decoration: none;
+}
+.trix-content .attachment a:hover,
+.trix-content .attachment a:visited:hover {
+ color: inherit;
+}
+.trix-content .attachment__caption {
+ text-align: center;
+}
+.trix-content .attachment__caption .attachment__name + .attachment__size::before {
+ content: " \b7 ";
+}
+.trix-content .attachment--preview {
+ width: 100%;
+ text-align: center;
+}
+.trix-content .attachment--preview .attachment__caption {
+ color: #666;
+ font-size: 0.9em;
+ line-height: 1.2;
+}
+.trix-content .attachment--file {
+ color: #333;
+ line-height: 1;
+ margin: 0 2px 2px 2px;
+ padding: 0.4em 1em;
+ border: 1px solid #bbb;
+ border-radius: 5px;
+}
+.trix-content .attachment-gallery {
+ display: flex;
+ flex-wrap: wrap;
+ position: relative;
+}
+.trix-content .attachment-gallery .attachment {
+ flex: 1 0 33%;
+ padding: 0 0.5em;
+ max-width: 33%;
+}
+.trix-content .attachment-gallery.attachment-gallery--2 .attachment,
+.trix-content .attachment-gallery.attachment-gallery--4 .attachment {
+ flex-basis: 50%;
+ max-width: 50%;
+}
+
+/* packages/forms/resources/css/components/color-picker.css */
+.filament-forms-color-picker-preview {
+ background-image: repeating-linear-gradient(45deg, #aaa 25%, transparent 25%, transparent 75%, #aaa 75%, #aaa), repeating-linear-gradient(45deg, #aaa 25%, #fff 25%, #fff 75%, #aaa 75%, #aaa);
+ background-position: 0 0, 4px 4px;
+ background-size: 8px 8px;
+}
+.filament-forms-color-picker-preview::after {
+ @apply absolute inset-0;
+ content: "";
+ background: var(--color);
+}
+
+/* packages/forms/resources/css/components/file-upload.css */
+.filepond--root {
+ @apply mb-0 overflow-hidden;
+}
+.filepond--panel-root {
+ @apply bg-white border border-gray-300 rounded-lg shadow-sm;
+}
+.filepond--drip-blob {
+ @apply bg-gray-900;
+}
+.dark .filepond--drop-label {
+ @apply text-gray-200;
+}
+.dark .filepond--panel-root {
+ @apply border-gray-600 text-white bg-gray-700;
+}
+.dark .filepond--drip-blob {
+ @apply bg-gray-100;
+}
+.filepond--root[data-style-panel-layout=compact] .filepond--item {
+ @apply mb-0.5;
+}
+.filepond--root[data-style-panel-layout=compact] .filepond--drop-label label {
+ @apply text-sm;
+}
+.filepond--root[data-style-panel-layout=compact] .filepond--drop-label {
+ min-height: 2.625em;
+}
+.filepond--root[data-style-panel-layout=compact] .filepond--file {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+}
+.filepond--root[data-style-panel-layout=grid] .filepond--item {
+ width: calc(50% - 0.5em);
+ display: inline;
+}
+@media screen(lg) {
+ .filepond--root[data-style-panel-layout=grid] .filepond--item {
+ width: calc(33.33% - 0.5em);
+ }
+}
+.filepond--download-icon {
+ @apply inline-block align-bottom bg-white w-4 h-4 mr-1 pointer-events-auto hover:bg-white/70;
+ -webkit-mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItZG93bmxvYWQiPjxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00Ij48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz0iNyAxMCAxMiAxNSAxNyAxMCI+PC9wb2x5bGluZT48bGluZSB4MT0iMTIiIHkxPSIxNSIgeDI9IjEyIiB5Mj0iMyI+PC9saW5lPjwvc3ZnPg==);
+ mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItZG93bmxvYWQiPjxwYXRoIGQ9Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00Ij48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz0iNyAxMCAxMiAxNSAxNyAxMCI+PC9wb2x5bGluZT48bGluZSB4MT0iMTIiIHkxPSIxNSIgeDI9IjEyIiB5Mj0iMyI+PC9saW5lPjwvc3ZnPg==);
+ -webkit-mask-repeat: no-repeat;
+ mask-repeat: no-repeat;
+ -webkit-mask-size: 100%;
+ mask-size: 100%;
+}
+.filepond--open-icon {
+ @apply inline-block align-bottom bg-white w-4 h-4 mr-1 pointer-events-auto hover:bg-white/70;
+ -webkit-mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTRNMTQgNGg2bTAgMHY2bTAtNkwxMCAxNCIgLz4KPC9zdmc+Cg==);
+ mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPgogIDxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwMC0yIDJ2MTBhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJ2LTRNMTQgNGg2bTAgMHY2bTAtNkwxMCAxNCIgLz4KPC9zdmc+Cg==);
+ -webkit-mask-repeat: no-repeat;
+ mask-repeat: no-repeat;
+ -webkit-mask-size: 100%;
+ mask-size: 100%;
+}
+
+/* packages/forms/resources/css/components/rich-editor.css */
+.dark .trix-button {
+ @apply bg-gray-700 border-gray-600 text-gray-200;
+}
+.dark .trix-button-group {
+ @apply border-gray-600;
+}
+
+/* packages/forms/resources/css/components/select.css */
+.choices {
+ @apply relative;
+}
+.choices:focus {
+ @apply outline-none;
+}
+.choices:last-child {
+ @apply mb-0;
+}
+.choices.is-open {
+ @apply overflow-visible;
+}
+.choices.is-disabled .choices__inner,
+.choices.is-disabled .choices__input {
+ @apply select-none;
+}
+.choices.is-disabled .choices__item {
+ @apply cursor-not-allowed pointer-events-none opacity-70;
+}
+.choices [hidden] {
+ display: none !important;
+}
+.choices[data-type*=select-one] {
+ @apply cursor-pointer;
+}
+.choices[data-type*=select-one] .choices__input {
+ @apply block w-full p-2 border-b m-0;
+}
+.dark .choices[data-type*=select-one] .choices__input {
+ @apply bg-gray-700;
+}
+.choices[data-type*=select-multiple] .choices__inner {
+ @apply cursor-text;
+}
+.choices__inner {
+ @apply py-2 px-3 inline-block align-top w-full bg-white bg-no-repeat border border-gray-300 transition duration-75 rounded-lg shadow-sm;
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");
+ background-position: right 0.5rem center;
+ background-size: 1.5em 1.5em;
+}
+.dark .choices__inner {
+ @apply border-gray-600 bg-gray-700 text-white;
+}
+[dir=rtl] .choices__inner {
+ background-position: left 0.5rem center;
+}
+.is-focused .choices__inner,
+.is-open .choices__inner {
+ @apply border-primary-500 ring-1 ring-inset ring-primary-500;
+}
+.choices__list {
+ @apply m-0 pl-0 list-none;
+}
+.choices__list--single {
+ @apply pr-12 inline-block w-full;
+}
+[dir=rtl] .choices__list--single {
+ @apply pl-12 pr-0;
+}
+.choices__list--single .choices__item {
+ @apply w-full;
+}
+.choices__list--multiple {
+ @apply pr-6 flex flex-wrap gap-1;
+}
+[dir=rtl] .choices__list--multiple {
+ @apply pl-6 pr-0;
+}
+.choices__list--multiple:not(:empty) {
+ @apply flex mb-1;
+}
+.choices__list--multiple .choices__item {
+ @apply inline-flex gap-2 items-center justify-between cursor-pointer break-all box-border px-2 py-0.5 text-sm font-medium tracking-tight text-primary-700 rounded-lg bg-primary-500/10 space-x-1;
+}
+.dark .choices__list--multiple .choices__item {
+ @apply text-primary-500;
+}
+[dir=rtl] .choices__list--multiple .choices__item {
+ @apply break-normal space-x-reverse;
+}
+.choices__list--dropdown,
+.choices__list[aria-expanded] {
+ @apply mt-2 rounded-lg invisible z-[1] absolute w-full bg-white border border-gray-300 shadow-sm top-full overflow-hidden break-words will-change-[visibility];
+}
+.dark .choices__list--dropdown,
+.dark .choices__list[aria-expanded] {
+ @apply bg-gray-700 border-gray-600;
+}
+.is-active.choices__list--dropdown,
+.is-active.choices__list[aria-expanded] {
+ @apply visible z-10;
+}
+.choices__list--dropdown .choices__list,
+.choices__list[aria-expanded] .choices__list {
+ @apply relative max-h-60 overflow-auto will-change-scroll;
+}
+.choices__list--dropdown .choices__item,
+.choices__list[aria-expanded] .choices__item {
+ @apply relative px-3 py-2;
+}
+[dir=rtl] .choices__list--dropdown .choices__item,
+[dir=rtl] .choices__list[aria-expanded] .choices__item {
+ @apply text-right;
+}
+.choices__list--dropdown .choices__item--selectable.is-highlighted,
+.choices__list[aria-expanded] .choices__item--selectable.is-highlighted {
+ @apply bg-primary-600 text-white;
+}
+.choices__list--dropdown .choices__item--selectable.is-highlighted::after,
+.choices__list[aria-expanded] .choices__item--selectable.is-highlighted::after {
+ @apply opacity-70;
+}
+.choices__item {
+ @apply cursor-default;
+}
+.choices__item--selectable {
+ @apply cursor-pointer;
+}
+.choices__item--disabled {
+ @apply cursor-not-allowed pointer-events-none select-none opacity-70;
+}
+.choices__placeholder {
+ @apply opacity-70;
+}
+.choices__button {
+ @apply appearance-none border-0 bg-transparent bg-no-repeat bg-center cursor-pointer;
+ text-indent: -9999px;
+}
+.choices__button:focus {
+ @apply outline-none;
+}
+.choices[data-type*=select-one] .choices__button {
+ @apply p-0 absolute right-0 mr-9 h-4 w-4 opacity-60;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);
+ background-size: 0.7em 0.7em;
+ top: calc(50% - 0.55em);
+}
+.dark .choices[data-type*=select-one] .choices__button {
+ @apply opacity-30;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);
+}
+[dir=rtl] .choices[data-type*=select-one] .choices__button {
+ @apply left-0 right-auto ml-9 mr-0;
+}
+.choices[data-type*=select-one] .choices__button:hover,
+.choices[data-type*=select-one] .choices__button:focus {
+ @apply opacity-75;
+}
+.dark .choices[data-type*=select-one] .choices__button:hover,
+.dark .choices[data-type*=select-one] .choices__button:focus {
+ @apply opacity-60;
+}
+.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button {
+ @apply hidden;
+}
+.choices[data-type*=select-multiple] .choices__button {
+ @apply text-primary-700 inline-block w-3 h-3 opacity-60;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);
+ background-size: 0.6em 0.6em;
+}
+.dark .choices[data-type*=select-multiple] .choices__button {
+ @apply opacity-75;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);
+}
+.choices[data-type*=select-multiple] .choices__button:hover,
+.choices[data-type*=select-multiple] .choices__button:focus {
+ @apply opacity-75;
+}
+.dark .choices[data-type*=select-multiple] .choices__button:hover,
+.dark .choices[data-type*=select-multiple] .choices__button:focus {
+ @apply opacity-100;
+}
+.choices__list--dropdown .choices__input {
+ padding: 0.5rem 0.75rem !important;
+ border-top-width: 0 !important;
+ border-left-width: 0 !important;
+ border-bottom-width: 1px !important;
+ border-right-width: 0 !important;
+ border-color: rgb(209 213 219) !important;
+}
+.dark .choices__list--dropdown .choices__input {
+ @apply placeholder-gray-300;
+ border-color: rgb(75 85 99) !important;
+}
+.choices__input {
+ @apply inline-block max-w-full border-none;
+ border-color: transparent !important;
+ background-color: transparent !important;
+ padding: 0 !important;
+}
+.choices__input:focus {
+ outline-color: transparent !important;
+ box-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;
+}
+.choices__input::-webkit-search-decoration,
+.choices__input::-webkit-search-cancel-button,
+.choices__input::-webkit-search-results-button,
+.choices__input::-webkit-search-results-decoration {
+ @apply hidden;
+}
+.choices__input::-ms-clear,
+.choices__input::-ms-reveal {
+ @apply hidden w-0 h-0;
+}
+
+/* packages/forms/resources/css/components/tags-input.css */
+.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator {
+ @apply opacity-0;
+}
diff --git a/resources/css/module.esm.js b/resources/css/module.esm.js
new file mode 100644
index 0000000..71b8ce1
--- /dev/null
+++ b/resources/css/module.esm.js
@@ -0,0 +1,35279 @@
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
+var __commonJS = (callback, module) => () => {
+ if (!module) {
+ module = {exports: {}};
+ callback(module.exports, module);
+ }
+ return module.exports;
+};
+var __export = (target, all) => {
+ for (var name2 in all)
+ __defProp(target, name2, {get: all[name2], enumerable: true});
+};
+var __exportStar = (target, module, desc) => {
+ if (module && typeof module === "object" || typeof module === "function") {
+ for (let key of __getOwnPropNames(module))
+ if (!__hasOwnProp.call(target, key) && key !== "default")
+ __defProp(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable});
+ }
+ return target;
+};
+var __toModule = (module) => {
+ return __exportStar(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module);
+};
+
+// node_modules/dayjs/plugin/customParseFormat.js
+var require_customParseFormat = __commonJS((exports, module) => {
+ !function(e2, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = t2() : typeof define == "function" && define.amd ? define(t2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_plugin_customParseFormat = t2();
+ }(exports, function() {
+ "use strict";
+ var e2 = {LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A"}, t2 = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n2 = /\d\d/, r2 = /\d\d?/, i = /\d*[^-_:/,()\s\d]+/, o2 = {}, s2 = function(e3) {
+ return (e3 = +e3) + (e3 > 68 ? 1900 : 2e3);
+ };
+ var a2 = function(e3) {
+ return function(t3) {
+ this[e3] = +t3;
+ };
+ }, f = [/[+-]\d\d:?(\d\d)?|Z/, function(e3) {
+ (this.zone || (this.zone = {})).offset = function(e4) {
+ if (!e4)
+ return 0;
+ if (e4 === "Z")
+ return 0;
+ var t3 = e4.match(/([+-]|\d\d)/g), n3 = 60 * t3[1] + (+t3[2] || 0);
+ return n3 === 0 ? 0 : t3[0] === "+" ? -n3 : n3;
+ }(e3);
+ }], h = function(e3) {
+ var t3 = o2[e3];
+ return t3 && (t3.indexOf ? t3 : t3.s.concat(t3.f));
+ }, u = function(e3, t3) {
+ var n3, r3 = o2.meridiem;
+ if (r3) {
+ for (var i2 = 1; i2 <= 24; i2 += 1)
+ if (e3.indexOf(r3(i2, 0, t3)) > -1) {
+ n3 = i2 > 12;
+ break;
+ }
+ } else
+ n3 = e3 === (t3 ? "pm" : "PM");
+ return n3;
+ }, d = {A: [i, function(e3) {
+ this.afternoon = u(e3, false);
+ }], a: [i, function(e3) {
+ this.afternoon = u(e3, true);
+ }], S: [/\d/, function(e3) {
+ this.milliseconds = 100 * +e3;
+ }], SS: [n2, function(e3) {
+ this.milliseconds = 10 * +e3;
+ }], SSS: [/\d{3}/, function(e3) {
+ this.milliseconds = +e3;
+ }], s: [r2, a2("seconds")], ss: [r2, a2("seconds")], m: [r2, a2("minutes")], mm: [r2, a2("minutes")], H: [r2, a2("hours")], h: [r2, a2("hours")], HH: [r2, a2("hours")], hh: [r2, a2("hours")], D: [r2, a2("day")], DD: [n2, a2("day")], Do: [i, function(e3) {
+ var t3 = o2.ordinal, n3 = e3.match(/\d+/);
+ if (this.day = n3[0], t3)
+ for (var r3 = 1; r3 <= 31; r3 += 1)
+ t3(r3).replace(/\[|\]/g, "") === e3 && (this.day = r3);
+ }], M: [r2, a2("month")], MM: [n2, a2("month")], MMM: [i, function(e3) {
+ var t3 = h("months"), n3 = (h("monthsShort") || t3.map(function(e4) {
+ return e4.slice(0, 3);
+ })).indexOf(e3) + 1;
+ if (n3 < 1)
+ throw new Error();
+ this.month = n3 % 12 || n3;
+ }], MMMM: [i, function(e3) {
+ var t3 = h("months").indexOf(e3) + 1;
+ if (t3 < 1)
+ throw new Error();
+ this.month = t3 % 12 || t3;
+ }], Y: [/[+-]?\d+/, a2("year")], YY: [n2, function(e3) {
+ this.year = s2(e3);
+ }], YYYY: [/\d{4}/, a2("year")], Z: f, ZZ: f};
+ function c2(n3) {
+ var r3, i2;
+ r3 = n3, i2 = o2 && o2.formats;
+ for (var s3 = (n3 = r3.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(t3, n4, r4) {
+ var o3 = r4 && r4.toUpperCase();
+ return n4 || i2[r4] || e2[r4] || i2[o3].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(e3, t4, n5) {
+ return t4 || n5.slice(1);
+ });
+ })).match(t2), a3 = s3.length, f2 = 0; f2 < a3; f2 += 1) {
+ var h2 = s3[f2], u2 = d[h2], c3 = u2 && u2[0], l = u2 && u2[1];
+ s3[f2] = l ? {regex: c3, parser: l} : h2.replace(/^\[|\]$/g, "");
+ }
+ return function(e3) {
+ for (var t3 = {}, n4 = 0, r4 = 0; n4 < a3; n4 += 1) {
+ var i3 = s3[n4];
+ if (typeof i3 == "string")
+ r4 += i3.length;
+ else {
+ var o3 = i3.regex, f3 = i3.parser, h3 = e3.slice(r4), u3 = o3.exec(h3)[0];
+ f3.call(t3, u3), e3 = e3.replace(u3, "");
+ }
+ }
+ return function(e4) {
+ var t4 = e4.afternoon;
+ if (t4 !== void 0) {
+ var n5 = e4.hours;
+ t4 ? n5 < 12 && (e4.hours += 12) : n5 === 12 && (e4.hours = 0), delete e4.afternoon;
+ }
+ }(t3), t3;
+ };
+ }
+ return function(e3, t3, n3) {
+ n3.p.customParseFormat = true, e3 && e3.parseTwoDigitYear && (s2 = e3.parseTwoDigitYear);
+ var r3 = t3.prototype, i2 = r3.parse;
+ r3.parse = function(e4) {
+ var t4 = e4.date, r4 = e4.utc, s3 = e4.args;
+ this.$u = r4;
+ var a3 = s3[1];
+ if (typeof a3 == "string") {
+ var f2 = s3[2] === true, h2 = s3[3] === true, u2 = f2 || h2, d2 = s3[2];
+ h2 && (d2 = s3[2]), o2 = this.$locale(), !f2 && d2 && (o2 = n3.Ls[d2]), this.$d = function(e5, t5, n4) {
+ try {
+ if (["x", "X"].indexOf(t5) > -1)
+ return new Date((t5 === "X" ? 1e3 : 1) * e5);
+ var r5 = c2(t5)(e5), i3 = r5.year, o3 = r5.month, s4 = r5.day, a4 = r5.hours, f3 = r5.minutes, h3 = r5.seconds, u3 = r5.milliseconds, d3 = r5.zone, l2 = new Date(), m2 = s4 || (i3 || o3 ? 1 : l2.getDate()), M3 = i3 || l2.getFullYear(), Y2 = 0;
+ i3 && !o3 || (Y2 = o3 > 0 ? o3 - 1 : l2.getMonth());
+ var p2 = a4 || 0, v = f3 || 0, D2 = h3 || 0, g = u3 || 0;
+ return d3 ? new Date(Date.UTC(M3, Y2, m2, p2, v, D2, g + 60 * d3.offset * 1e3)) : n4 ? new Date(Date.UTC(M3, Y2, m2, p2, v, D2, g)) : new Date(M3, Y2, m2, p2, v, D2, g);
+ } catch (e6) {
+ return new Date("");
+ }
+ }(t4, a3, r4), this.init(), d2 && d2 !== true && (this.$L = this.locale(d2).$L), u2 && t4 != this.format(a3) && (this.$d = new Date("")), o2 = {};
+ } else if (a3 instanceof Array)
+ for (var l = a3.length, m = 1; m <= l; m += 1) {
+ s3[1] = a3[m - 1];
+ var M2 = n3.apply(this, s3);
+ if (M2.isValid()) {
+ this.$d = M2.$d, this.$L = M2.$L, this.init();
+ break;
+ }
+ m === l && (this.$d = new Date(""));
+ }
+ else
+ i2.call(this, e4);
+ };
+ };
+ });
+});
+
+// node_modules/dayjs/plugin/localeData.js
+var require_localeData = __commonJS((exports, module) => {
+ !function(n2, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2() : typeof define == "function" && define.amd ? define(e2) : (n2 = typeof globalThis != "undefined" ? globalThis : n2 || self).dayjs_plugin_localeData = e2();
+ }(exports, function() {
+ "use strict";
+ return function(n2, e2, t2) {
+ var r2 = e2.prototype, o2 = function(n3) {
+ return n3 && (n3.indexOf ? n3 : n3.s);
+ }, u = function(n3, e3, t3, r3, u2) {
+ var i2 = n3.name ? n3 : n3.$locale(), a3 = o2(i2[e3]), s3 = o2(i2[t3]), f = a3 || s3.map(function(n4) {
+ return n4.slice(0, r3);
+ });
+ if (!u2)
+ return f;
+ var d = i2.weekStart;
+ return f.map(function(n4, e4) {
+ return f[(e4 + (d || 0)) % 7];
+ });
+ }, i = function() {
+ return t2.Ls[t2.locale()];
+ }, a2 = function(n3, e3) {
+ return n3.formats[e3] || function(n4) {
+ return n4.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(n5, e4, t3) {
+ return e4 || t3.slice(1);
+ });
+ }(n3.formats[e3.toUpperCase()]);
+ }, s2 = function() {
+ var n3 = this;
+ return {months: function(e3) {
+ return e3 ? e3.format("MMMM") : u(n3, "months");
+ }, monthsShort: function(e3) {
+ return e3 ? e3.format("MMM") : u(n3, "monthsShort", "months", 3);
+ }, firstDayOfWeek: function() {
+ return n3.$locale().weekStart || 0;
+ }, weekdays: function(e3) {
+ return e3 ? e3.format("dddd") : u(n3, "weekdays");
+ }, weekdaysMin: function(e3) {
+ return e3 ? e3.format("dd") : u(n3, "weekdaysMin", "weekdays", 2);
+ }, weekdaysShort: function(e3) {
+ return e3 ? e3.format("ddd") : u(n3, "weekdaysShort", "weekdays", 3);
+ }, longDateFormat: function(e3) {
+ return a2(n3.$locale(), e3);
+ }, meridiem: this.$locale().meridiem, ordinal: this.$locale().ordinal};
+ };
+ r2.localeData = function() {
+ return s2.bind(this)();
+ }, t2.localeData = function() {
+ var n3 = i();
+ return {firstDayOfWeek: function() {
+ return n3.weekStart || 0;
+ }, weekdays: function() {
+ return t2.weekdays();
+ }, weekdaysShort: function() {
+ return t2.weekdaysShort();
+ }, weekdaysMin: function() {
+ return t2.weekdaysMin();
+ }, months: function() {
+ return t2.months();
+ }, monthsShort: function() {
+ return t2.monthsShort();
+ }, longDateFormat: function(e3) {
+ return a2(n3, e3);
+ }, meridiem: n3.meridiem, ordinal: n3.ordinal};
+ }, t2.months = function() {
+ return u(i(), "months");
+ }, t2.monthsShort = function() {
+ return u(i(), "monthsShort", "months", 3);
+ }, t2.weekdays = function(n3) {
+ return u(i(), "weekdays", null, null, n3);
+ }, t2.weekdaysShort = function(n3) {
+ return u(i(), "weekdaysShort", "weekdays", 3, n3);
+ }, t2.weekdaysMin = function(n3) {
+ return u(i(), "weekdaysMin", "weekdays", 2, n3);
+ };
+ };
+ });
+});
+
+// node_modules/dayjs/plugin/timezone.js
+var require_timezone = __commonJS((exports, module) => {
+ !function(t2, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2() : typeof define == "function" && define.amd ? define(e2) : (t2 = typeof globalThis != "undefined" ? globalThis : t2 || self).dayjs_plugin_timezone = e2();
+ }(exports, function() {
+ "use strict";
+ var t2 = {year: 0, month: 1, day: 2, hour: 3, minute: 4, second: 5}, e2 = {};
+ return function(n2, i, o2) {
+ var r2, a2 = function(t3, n3, i2) {
+ i2 === void 0 && (i2 = {});
+ var o3 = new Date(t3), r3 = function(t4, n4) {
+ n4 === void 0 && (n4 = {});
+ var i3 = n4.timeZoneName || "short", o4 = t4 + "|" + i3, r4 = e2[o4];
+ return r4 || (r4 = new Intl.DateTimeFormat("en-US", {hour12: false, timeZone: t4, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", timeZoneName: i3}), e2[o4] = r4), r4;
+ }(n3, i2);
+ return r3.formatToParts(o3);
+ }, u = function(e3, n3) {
+ for (var i2 = a2(e3, n3), r3 = [], u2 = 0; u2 < i2.length; u2 += 1) {
+ var f2 = i2[u2], s3 = f2.type, m = f2.value, c2 = t2[s3];
+ c2 >= 0 && (r3[c2] = parseInt(m, 10));
+ }
+ var d = r3[3], l = d === 24 ? 0 : d, v = r3[0] + "-" + r3[1] + "-" + r3[2] + " " + l + ":" + r3[4] + ":" + r3[5] + ":000", h = +e3;
+ return (o2.utc(v).valueOf() - (h -= h % 1e3)) / 6e4;
+ }, f = i.prototype;
+ f.tz = function(t3, e3) {
+ t3 === void 0 && (t3 = r2);
+ var n3 = this.utcOffset(), i2 = this.toDate(), a3 = i2.toLocaleString("en-US", {timeZone: t3}), u2 = Math.round((i2 - new Date(a3)) / 1e3 / 60), f2 = o2(a3).$set("millisecond", this.$ms).utcOffset(15 * -Math.round(i2.getTimezoneOffset() / 15) - u2, true);
+ if (e3) {
+ var s3 = f2.utcOffset();
+ f2 = f2.add(n3 - s3, "minute");
+ }
+ return f2.$x.$timezone = t3, f2;
+ }, f.offsetName = function(t3) {
+ var e3 = this.$x.$timezone || o2.tz.guess(), n3 = a2(this.valueOf(), e3, {timeZoneName: t3}).find(function(t4) {
+ return t4.type.toLowerCase() === "timezonename";
+ });
+ return n3 && n3.value;
+ };
+ var s2 = f.startOf;
+ f.startOf = function(t3, e3) {
+ if (!this.$x || !this.$x.$timezone)
+ return s2.call(this, t3, e3);
+ var n3 = o2(this.format("YYYY-MM-DD HH:mm:ss:SSS"));
+ return s2.call(n3, t3, e3).tz(this.$x.$timezone, true);
+ }, o2.tz = function(t3, e3, n3) {
+ var i2 = n3 && e3, a3 = n3 || e3 || r2, f2 = u(+o2(), a3);
+ if (typeof t3 != "string")
+ return o2(t3).tz(a3);
+ var s3 = function(t4, e4, n4) {
+ var i3 = t4 - 60 * e4 * 1e3, o3 = u(i3, n4);
+ if (e4 === o3)
+ return [i3, e4];
+ var r3 = u(i3 -= 60 * (o3 - e4) * 1e3, n4);
+ return o3 === r3 ? [i3, o3] : [t4 - 60 * Math.min(o3, r3) * 1e3, Math.max(o3, r3)];
+ }(o2.utc(t3, i2).valueOf(), f2, a3), m = s3[0], c2 = s3[1], d = o2(m).utcOffset(c2);
+ return d.$x.$timezone = a3, d;
+ }, o2.tz.guess = function() {
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
+ }, o2.tz.setDefault = function(t3) {
+ r2 = t3;
+ };
+ };
+ });
+});
+
+// node_modules/dayjs/plugin/utc.js
+var require_utc = __commonJS((exports, module) => {
+ !function(t2, i) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = i() : typeof define == "function" && define.amd ? define(i) : (t2 = typeof globalThis != "undefined" ? globalThis : t2 || self).dayjs_plugin_utc = i();
+ }(exports, function() {
+ "use strict";
+ var t2 = "minute", i = /[+-]\d\d(?::?\d\d)?/g, e2 = /([+-]|\d\d)/g;
+ return function(s2, f, n2) {
+ var u = f.prototype;
+ n2.utc = function(t3) {
+ var i2 = {date: t3, utc: true, args: arguments};
+ return new f(i2);
+ }, u.utc = function(i2) {
+ var e3 = n2(this.toDate(), {locale: this.$L, utc: true});
+ return i2 ? e3.add(this.utcOffset(), t2) : e3;
+ }, u.local = function() {
+ return n2(this.toDate(), {locale: this.$L, utc: false});
+ };
+ var o2 = u.parse;
+ u.parse = function(t3) {
+ t3.utc && (this.$u = true), this.$utils().u(t3.$offset) || (this.$offset = t3.$offset), o2.call(this, t3);
+ };
+ var r2 = u.init;
+ u.init = function() {
+ if (this.$u) {
+ var t3 = this.$d;
+ this.$y = t3.getUTCFullYear(), this.$M = t3.getUTCMonth(), this.$D = t3.getUTCDate(), this.$W = t3.getUTCDay(), this.$H = t3.getUTCHours(), this.$m = t3.getUTCMinutes(), this.$s = t3.getUTCSeconds(), this.$ms = t3.getUTCMilliseconds();
+ } else
+ r2.call(this);
+ };
+ var a2 = u.utcOffset;
+ u.utcOffset = function(s3, f2) {
+ var n3 = this.$utils().u;
+ if (n3(s3))
+ return this.$u ? 0 : n3(this.$offset) ? a2.call(this) : this.$offset;
+ if (typeof s3 == "string" && (s3 = function(t3) {
+ t3 === void 0 && (t3 = "");
+ var s4 = t3.match(i);
+ if (!s4)
+ return null;
+ var f3 = ("" + s4[0]).match(e2) || ["-", 0, 0], n4 = f3[0], u3 = 60 * +f3[1] + +f3[2];
+ return u3 === 0 ? 0 : n4 === "+" ? u3 : -u3;
+ }(s3), s3 === null))
+ return this;
+ var u2 = Math.abs(s3) <= 16 ? 60 * s3 : s3, o3 = this;
+ if (f2)
+ return o3.$offset = u2, o3.$u = s3 === 0, o3;
+ if (s3 !== 0) {
+ var r3 = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();
+ (o3 = this.local().add(u2 + r3, t2)).$offset = u2, o3.$x.$localOffset = r3;
+ } else
+ o3 = this.utc();
+ return o3;
+ };
+ var h = u.format;
+ u.format = function(t3) {
+ var i2 = t3 || (this.$u ? "YYYY-MM-DDTHH:mm:ss[Z]" : "");
+ return h.call(this, i2);
+ }, u.valueOf = function() {
+ var t3 = this.$utils().u(this.$offset) ? 0 : this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset());
+ return this.$d.valueOf() - 6e4 * t3;
+ }, u.isUTC = function() {
+ return !!this.$u;
+ }, u.toISOString = function() {
+ return this.toDate().toISOString();
+ }, u.toString = function() {
+ return this.toDate().toUTCString();
+ };
+ var l = u.toDate;
+ u.toDate = function(t3) {
+ return t3 === "s" && this.$offset ? n2(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate() : l.call(this);
+ };
+ var c2 = u.diff;
+ u.diff = function(t3, i2, e3) {
+ if (t3 && this.$u === t3.$u)
+ return c2.call(this, t3, i2, e3);
+ var s3 = this.local(), f2 = n2(t3).local();
+ return c2.call(s3, f2, i2, e3);
+ };
+ };
+ });
+});
+
+// node_modules/dayjs/dayjs.min.js
+var require_dayjs_min = __commonJS((exports, module) => {
+ !function(t2, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2() : typeof define == "function" && define.amd ? define(e2) : (t2 = typeof globalThis != "undefined" ? globalThis : t2 || self).dayjs = e2();
+ }(exports, function() {
+ "use strict";
+ var t2 = 1e3, e2 = 6e4, n2 = 36e5, r2 = "millisecond", i = "second", s2 = "minute", u = "hour", a2 = "day", o2 = "week", f = "month", h = "quarter", c2 = "year", d = "date", $ = "Invalid Date", l = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M2 = {name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_")}, m = function(t3, e3, n3) {
+ var r3 = String(t3);
+ return !r3 || r3.length >= e3 ? t3 : "" + Array(e3 + 1 - r3.length).join(n3) + t3;
+ }, g = {s: m, z: function(t3) {
+ var e3 = -t3.utcOffset(), n3 = Math.abs(e3), r3 = Math.floor(n3 / 60), i2 = n3 % 60;
+ return (e3 <= 0 ? "+" : "-") + m(r3, 2, "0") + ":" + m(i2, 2, "0");
+ }, m: function t3(e3, n3) {
+ if (e3.date() < n3.date())
+ return -t3(n3, e3);
+ var r3 = 12 * (n3.year() - e3.year()) + (n3.month() - e3.month()), i2 = e3.clone().add(r3, f), s3 = n3 - i2 < 0, u2 = e3.clone().add(r3 + (s3 ? -1 : 1), f);
+ return +(-(r3 + (n3 - i2) / (s3 ? i2 - u2 : u2 - i2)) || 0);
+ }, a: function(t3) {
+ return t3 < 0 ? Math.ceil(t3) || 0 : Math.floor(t3);
+ }, p: function(t3) {
+ return {M: f, y: c2, w: o2, d: a2, D: d, h: u, m: s2, s: i, ms: r2, Q: h}[t3] || String(t3 || "").toLowerCase().replace(/s$/, "");
+ }, u: function(t3) {
+ return t3 === void 0;
+ }}, v = "en", D2 = {};
+ D2[v] = M2;
+ var p2 = function(t3) {
+ return t3 instanceof _;
+ }, S2 = function t3(e3, n3, r3) {
+ var i2;
+ if (!e3)
+ return v;
+ if (typeof e3 == "string") {
+ var s3 = e3.toLowerCase();
+ D2[s3] && (i2 = s3), n3 && (D2[s3] = n3, i2 = s3);
+ var u2 = e3.split("-");
+ if (!i2 && u2.length > 1)
+ return t3(u2[0]);
+ } else {
+ var a3 = e3.name;
+ D2[a3] = e3, i2 = a3;
+ }
+ return !r3 && i2 && (v = i2), i2 || !r3 && v;
+ }, w = function(t3, e3) {
+ if (p2(t3))
+ return t3.clone();
+ var n3 = typeof e3 == "object" ? e3 : {};
+ return n3.date = t3, n3.args = arguments, new _(n3);
+ }, O = g;
+ O.l = S2, O.i = p2, O.w = function(t3, e3) {
+ return w(t3, {locale: e3.$L, utc: e3.$u, x: e3.$x, $offset: e3.$offset});
+ };
+ var _ = function() {
+ function M3(t3) {
+ this.$L = S2(t3.locale, null, true), this.parse(t3);
+ }
+ var m2 = M3.prototype;
+ return m2.parse = function(t3) {
+ this.$d = function(t4) {
+ var e3 = t4.date, n3 = t4.utc;
+ if (e3 === null)
+ return new Date(NaN);
+ if (O.u(e3))
+ return new Date();
+ if (e3 instanceof Date)
+ return new Date(e3);
+ if (typeof e3 == "string" && !/Z$/i.test(e3)) {
+ var r3 = e3.match(l);
+ if (r3) {
+ var i2 = r3[2] - 1 || 0, s3 = (r3[7] || "0").substring(0, 3);
+ return n3 ? new Date(Date.UTC(r3[1], i2, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3)) : new Date(r3[1], i2, r3[3] || 1, r3[4] || 0, r3[5] || 0, r3[6] || 0, s3);
+ }
+ }
+ return new Date(e3);
+ }(t3), this.$x = t3.x || {}, this.init();
+ }, m2.init = function() {
+ var t3 = this.$d;
+ this.$y = t3.getFullYear(), this.$M = t3.getMonth(), this.$D = t3.getDate(), this.$W = t3.getDay(), this.$H = t3.getHours(), this.$m = t3.getMinutes(), this.$s = t3.getSeconds(), this.$ms = t3.getMilliseconds();
+ }, m2.$utils = function() {
+ return O;
+ }, m2.isValid = function() {
+ return !(this.$d.toString() === $);
+ }, m2.isSame = function(t3, e3) {
+ var n3 = w(t3);
+ return this.startOf(e3) <= n3 && n3 <= this.endOf(e3);
+ }, m2.isAfter = function(t3, e3) {
+ return w(t3) < this.startOf(e3);
+ }, m2.isBefore = function(t3, e3) {
+ return this.endOf(e3) < w(t3);
+ }, m2.$g = function(t3, e3, n3) {
+ return O.u(t3) ? this[e3] : this.set(n3, t3);
+ }, m2.unix = function() {
+ return Math.floor(this.valueOf() / 1e3);
+ }, m2.valueOf = function() {
+ return this.$d.getTime();
+ }, m2.startOf = function(t3, e3) {
+ var n3 = this, r3 = !!O.u(e3) || e3, h2 = O.p(t3), $2 = function(t4, e4) {
+ var i2 = O.w(n3.$u ? Date.UTC(n3.$y, e4, t4) : new Date(n3.$y, e4, t4), n3);
+ return r3 ? i2 : i2.endOf(a2);
+ }, l2 = function(t4, e4) {
+ return O.w(n3.toDate()[t4].apply(n3.toDate("s"), (r3 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e4)), n3);
+ }, y2 = this.$W, M4 = this.$M, m3 = this.$D, g2 = "set" + (this.$u ? "UTC" : "");
+ switch (h2) {
+ case c2:
+ return r3 ? $2(1, 0) : $2(31, 11);
+ case f:
+ return r3 ? $2(1, M4) : $2(0, M4 + 1);
+ case o2:
+ var v2 = this.$locale().weekStart || 0, D3 = (y2 < v2 ? y2 + 7 : y2) - v2;
+ return $2(r3 ? m3 - D3 : m3 + (6 - D3), M4);
+ case a2:
+ case d:
+ return l2(g2 + "Hours", 0);
+ case u:
+ return l2(g2 + "Minutes", 1);
+ case s2:
+ return l2(g2 + "Seconds", 2);
+ case i:
+ return l2(g2 + "Milliseconds", 3);
+ default:
+ return this.clone();
+ }
+ }, m2.endOf = function(t3) {
+ return this.startOf(t3, false);
+ }, m2.$set = function(t3, e3) {
+ var n3, o3 = O.p(t3), h2 = "set" + (this.$u ? "UTC" : ""), $2 = (n3 = {}, n3[a2] = h2 + "Date", n3[d] = h2 + "Date", n3[f] = h2 + "Month", n3[c2] = h2 + "FullYear", n3[u] = h2 + "Hours", n3[s2] = h2 + "Minutes", n3[i] = h2 + "Seconds", n3[r2] = h2 + "Milliseconds", n3)[o3], l2 = o3 === a2 ? this.$D + (e3 - this.$W) : e3;
+ if (o3 === f || o3 === c2) {
+ var y2 = this.clone().set(d, 1);
+ y2.$d[$2](l2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d;
+ } else
+ $2 && this.$d[$2](l2);
+ return this.init(), this;
+ }, m2.set = function(t3, e3) {
+ return this.clone().$set(t3, e3);
+ }, m2.get = function(t3) {
+ return this[O.p(t3)]();
+ }, m2.add = function(r3, h2) {
+ var d2, $2 = this;
+ r3 = Number(r3);
+ var l2 = O.p(h2), y2 = function(t3) {
+ var e3 = w($2);
+ return O.w(e3.date(e3.date() + Math.round(t3 * r3)), $2);
+ };
+ if (l2 === f)
+ return this.set(f, this.$M + r3);
+ if (l2 === c2)
+ return this.set(c2, this.$y + r3);
+ if (l2 === a2)
+ return y2(1);
+ if (l2 === o2)
+ return y2(7);
+ var M4 = (d2 = {}, d2[s2] = e2, d2[u] = n2, d2[i] = t2, d2)[l2] || 1, m3 = this.$d.getTime() + r3 * M4;
+ return O.w(m3, this);
+ }, m2.subtract = function(t3, e3) {
+ return this.add(-1 * t3, e3);
+ }, m2.format = function(t3) {
+ var e3 = this, n3 = this.$locale();
+ if (!this.isValid())
+ return n3.invalidDate || $;
+ var r3 = t3 || "YYYY-MM-DDTHH:mm:ssZ", i2 = O.z(this), s3 = this.$H, u2 = this.$m, a3 = this.$M, o3 = n3.weekdays, f2 = n3.months, h2 = function(t4, n4, i3, s4) {
+ return t4 && (t4[n4] || t4(e3, r3)) || i3[n4].slice(0, s4);
+ }, c3 = function(t4) {
+ return O.s(s3 % 12 || 12, t4, "0");
+ }, d2 = n3.meridiem || function(t4, e4, n4) {
+ var r4 = t4 < 12 ? "AM" : "PM";
+ return n4 ? r4.toLowerCase() : r4;
+ }, l2 = {YY: String(this.$y).slice(-2), YYYY: this.$y, M: a3 + 1, MM: O.s(a3 + 1, 2, "0"), MMM: h2(n3.monthsShort, a3, f2, 3), MMMM: h2(f2, a3), D: this.$D, DD: O.s(this.$D, 2, "0"), d: String(this.$W), dd: h2(n3.weekdaysMin, this.$W, o3, 2), ddd: h2(n3.weekdaysShort, this.$W, o3, 3), dddd: o3[this.$W], H: String(s3), HH: O.s(s3, 2, "0"), h: c3(1), hh: c3(2), a: d2(s3, u2, true), A: d2(s3, u2, false), m: String(u2), mm: O.s(u2, 2, "0"), s: String(this.$s), ss: O.s(this.$s, 2, "0"), SSS: O.s(this.$ms, 3, "0"), Z: i2};
+ return r3.replace(y, function(t4, e4) {
+ return e4 || l2[t4] || i2.replace(":", "");
+ });
+ }, m2.utcOffset = function() {
+ return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
+ }, m2.diff = function(r3, d2, $2) {
+ var l2, y2 = O.p(d2), M4 = w(r3), m3 = (M4.utcOffset() - this.utcOffset()) * e2, g2 = this - M4, v2 = O.m(this, M4);
+ return v2 = (l2 = {}, l2[c2] = v2 / 12, l2[f] = v2, l2[h] = v2 / 3, l2[o2] = (g2 - m3) / 6048e5, l2[a2] = (g2 - m3) / 864e5, l2[u] = g2 / n2, l2[s2] = g2 / e2, l2[i] = g2 / t2, l2)[y2] || g2, $2 ? v2 : O.a(v2);
+ }, m2.daysInMonth = function() {
+ return this.endOf(f).$D;
+ }, m2.$locale = function() {
+ return D2[this.$L];
+ }, m2.locale = function(t3, e3) {
+ if (!t3)
+ return this.$L;
+ var n3 = this.clone(), r3 = S2(t3, e3, true);
+ return r3 && (n3.$L = r3), n3;
+ }, m2.clone = function() {
+ return O.w(this.$d, this);
+ }, m2.toDate = function() {
+ return new Date(this.valueOf());
+ }, m2.toJSON = function() {
+ return this.isValid() ? this.toISOString() : null;
+ }, m2.toISOString = function() {
+ return this.$d.toISOString();
+ }, m2.toString = function() {
+ return this.$d.toUTCString();
+ }, M3;
+ }(), T = _.prototype;
+ return w.prototype = T, [["$ms", r2], ["$s", i], ["$m", s2], ["$H", u], ["$W", a2], ["$M", f], ["$y", c2], ["$D", d]].forEach(function(t3) {
+ T[t3[1]] = function(e3) {
+ return this.$g(e3, t3[0], t3[1]);
+ };
+ }), w.extend = function(t3, e3) {
+ return t3.$i || (t3(e3, _, w), t3.$i = true), w;
+ }, w.locale = S2, w.isDayjs = p2, w.unix = function(t3) {
+ return w(1e3 * t3);
+ }, w.en = D2[v], w.Ls = D2, w.p = {}, w;
+ });
+});
+
+// node_modules/dayjs/locale/ar.js
+var require_ar = __commonJS((exports, module) => {
+ !function(e2, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = t2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], t2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_ar = t2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function t2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var n2 = t2(e2), r2 = "\u064A\u0646\u0627\u064A\u0631_\u0641\u0628\u0631\u0627\u064A\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064A\u0644_\u0645\u0627\u064A\u0648_\u064A\u0648\u0646\u064A\u0648_\u064A\u0648\u0644\u064A\u0648_\u0623\u063A\u0633\u0637\u0633_\u0633\u0628\u062A\u0645\u0628\u0631_\u0623\u0643\u062A\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062F\u064A\u0633\u0645\u0628\u0631".split("_"), _ = {1: "\u0661", 2: "\u0662", 3: "\u0663", 4: "\u0664", 5: "\u0665", 6: "\u0666", 7: "\u0667", 8: "\u0668", 9: "\u0669", 0: "\u0660"}, d = {"\u0661": "1", "\u0662": "2", "\u0663": "3", "\u0664": "4", "\u0665": "5", "\u0666": "6", "\u0667": "7", "\u0668": "8", "\u0669": "9", "\u0660": "0"}, o2 = {name: "ar", weekdays: "\u0627\u0644\u0623\u062D\u062F_\u0627\u0644\u0625\u062B\u0646\u064A\u0646_\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062E\u0645\u064A\u0633_\u0627\u0644\u062C\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062A".split("_"), weekdaysShort: "\u0623\u062D\u062F_\u0625\u062B\u0646\u064A\u0646_\u062B\u0644\u0627\u062B\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062E\u0645\u064A\u0633_\u062C\u0645\u0639\u0629_\u0633\u0628\u062A".split("_"), weekdaysMin: "\u062D_\u0646_\u062B_\u0631_\u062E_\u062C_\u0633".split("_"), months: r2, monthsShort: r2, weekStart: 6, relativeTime: {future: "\u0628\u0639\u062F %s", past: "\u0645\u0646\u0630 %s", s: "\u062B\u0627\u0646\u064A\u0629 \u0648\u0627\u062D\u062F\u0629", m: "\u062F\u0642\u064A\u0642\u0629 \u0648\u0627\u062D\u062F\u0629", mm: "%d \u062F\u0642\u0627\u0626\u0642", h: "\u0633\u0627\u0639\u0629 \u0648\u0627\u062D\u062F\u0629", hh: "%d \u0633\u0627\u0639\u0627\u062A", d: "\u064A\u0648\u0645 \u0648\u0627\u062D\u062F", dd: "%d \u0623\u064A\u0627\u0645", M: "\u0634\u0647\u0631 \u0648\u0627\u062D\u062F", MM: "%d \u0623\u0634\u0647\u0631", y: "\u0639\u0627\u0645 \u0648\u0627\u062D\u062F", yy: "%d \u0623\u0639\u0648\u0627\u0645"}, preparse: function(e3) {
+ return e3.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function(e4) {
+ return d[e4];
+ }).replace(/،/g, ",");
+ }, postformat: function(e3) {
+ return e3.replace(/\d/g, function(e4) {
+ return _[e4];
+ }).replace(/,/g, "\u060C");
+ }, ordinal: function(e3) {
+ return e3;
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "D/\u200FM/\u200FYYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm"}};
+ return n2.default.locale(o2, null, true), o2;
+ });
+});
+
+// node_modules/dayjs/locale/bs.js
+var require_bs = __commonJS((exports, module) => {
+ !function(e2, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = t2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], t2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_bs = t2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function t2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var _ = t2(e2), a2 = {name: "bs", weekdays: "nedjelja_ponedjeljak_utorak_srijeda_\u010Detvrtak_petak_subota".split("_"), months: "januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"), weekStart: 1, weekdaysShort: "ned._pon._uto._sri._\u010Det._pet._sub.".split("_"), monthsShort: "jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"), weekdaysMin: "ne_po_ut_sr_\u010De_pe_su".split("_"), ordinal: function(e3) {
+ return e3;
+ }, formats: {LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd, D. MMMM YYYY H:mm"}};
+ return _.default.locale(a2, null, true), a2;
+ });
+});
+
+// node_modules/dayjs/locale/ca.js
+var require_ca = __commonJS((exports, module) => {
+ !function(e2, s2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = s2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], s2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_ca = s2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function s2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = s2(e2), _ = {name: "ca", weekdays: "Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"), weekdaysShort: "Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"), weekdaysMin: "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), months: "Gener_Febrer_Mar\xE7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"), monthsShort: "Gen._Febr._Mar\xE7_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"), weekStart: 1, formats: {LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM [de] YYYY", LLL: "D MMMM [de] YYYY [a les] H:mm", LLLL: "dddd D MMMM [de] YYYY [a les] H:mm", ll: "D MMM YYYY", lll: "D MMM YYYY, H:mm", llll: "ddd D MMM YYYY, H:mm"}, relativeTime: {future: "d'aqu\xED %s", past: "fa %s", s: "uns segons", m: "un minut", mm: "%d minuts", h: "una hora", hh: "%d hores", d: "un dia", dd: "%d dies", M: "un mes", MM: "%d mesos", y: "un any", yy: "%d anys"}, ordinal: function(e3) {
+ return "" + e3 + (e3 === 1 || e3 === 3 ? "r" : e3 === 2 ? "n" : e3 === 4 ? "t" : "\xE8");
+ }};
+ return t2.default.locale(_, null, true), _;
+ });
+});
+
+// node_modules/dayjs/locale/cs.js
+var require_cs = __commonJS((exports, module) => {
+ !function(e2, n2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = n2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], n2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_cs = n2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function n2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = n2(e2);
+ function s2(e3) {
+ return e3 > 1 && e3 < 5 && ~~(e3 / 10) != 1;
+ }
+ function r2(e3, n3, t3, r3) {
+ var d2 = e3 + " ";
+ switch (t3) {
+ case "s":
+ return n3 || r3 ? "p\xE1r sekund" : "p\xE1r sekundami";
+ case "m":
+ return n3 ? "minuta" : r3 ? "minutu" : "minutou";
+ case "mm":
+ return n3 || r3 ? d2 + (s2(e3) ? "minuty" : "minut") : d2 + "minutami";
+ case "h":
+ return n3 ? "hodina" : r3 ? "hodinu" : "hodinou";
+ case "hh":
+ return n3 || r3 ? d2 + (s2(e3) ? "hodiny" : "hodin") : d2 + "hodinami";
+ case "d":
+ return n3 || r3 ? "den" : "dnem";
+ case "dd":
+ return n3 || r3 ? d2 + (s2(e3) ? "dny" : "dn\xED") : d2 + "dny";
+ case "M":
+ return n3 || r3 ? "m\u011Bs\xEDc" : "m\u011Bs\xEDcem";
+ case "MM":
+ return n3 || r3 ? d2 + (s2(e3) ? "m\u011Bs\xEDce" : "m\u011Bs\xEDc\u016F") : d2 + "m\u011Bs\xEDci";
+ case "y":
+ return n3 || r3 ? "rok" : "rokem";
+ case "yy":
+ return n3 || r3 ? d2 + (s2(e3) ? "roky" : "let") : d2 + "lety";
+ }
+ }
+ var d = {name: "cs", weekdays: "ned\u011Ble_pond\u011Bl\xED_\xFAter\xFD_st\u0159eda_\u010Dtvrtek_p\xE1tek_sobota".split("_"), weekdaysShort: "ne_po_\xFAt_st_\u010Dt_p\xE1_so".split("_"), weekdaysMin: "ne_po_\xFAt_st_\u010Dt_p\xE1_so".split("_"), months: "leden_\xFAnor_b\u0159ezen_duben_kv\u011Bten_\u010Derven_\u010Dervenec_srpen_z\xE1\u0159\xED_\u0159\xEDjen_listopad_prosinec".split("_"), monthsShort: "led_\xFAno_b\u0159e_dub_kv\u011B_\u010Dvn_\u010Dvc_srp_z\xE1\u0159_\u0159\xEDj_lis_pro".split("_"), weekStart: 1, yearStart: 4, ordinal: function(e3) {
+ return e3 + ".";
+ }, formats: {LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY H:mm", LLLL: "dddd D. MMMM YYYY H:mm", l: "D. M. YYYY"}, relativeTime: {future: "za %s", past: "p\u0159ed %s", s: r2, m: r2, mm: r2, h: r2, hh: r2, d: r2, dd: r2, M: r2, MM: r2, y: r2, yy: r2}};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/da.js
+var require_da = __commonJS((exports, module) => {
+ !function(e2, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = t2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], t2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_da = t2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function t2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var d = t2(e2), n2 = {name: "da", weekdays: "s\xF8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xF8rdag".split("_"), weekdaysShort: "s\xF8n._man._tirs._ons._tors._fre._l\xF8r.".split("_"), weekdaysMin: "s\xF8._ma._ti._on._to._fr._l\xF8.".split("_"), months: "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"), monthsShort: "jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"), weekStart: 1, ordinal: function(e3) {
+ return e3 + ".";
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd [d.] D. MMMM YYYY [kl.] HH:mm"}, relativeTime: {future: "om %s", past: "%s siden", s: "f\xE5 sekunder", m: "et minut", mm: "%d minutter", h: "en time", hh: "%d timer", d: "en dag", dd: "%d dage", M: "en m\xE5ned", MM: "%d m\xE5neder", y: "et \xE5r", yy: "%d \xE5r"}};
+ return d.default.locale(n2, null, true), n2;
+ });
+});
+
+// node_modules/dayjs/locale/de.js
+var require_de = __commonJS((exports, module) => {
+ !function(e2, n2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = n2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], n2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_de = n2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function n2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = n2(e2), a2 = {s: "ein paar Sekunden", m: ["eine Minute", "einer Minute"], mm: "%d Minuten", h: ["eine Stunde", "einer Stunde"], hh: "%d Stunden", d: ["ein Tag", "einem Tag"], dd: ["%d Tage", "%d Tagen"], M: ["ein Monat", "einem Monat"], MM: ["%d Monate", "%d Monaten"], y: ["ein Jahr", "einem Jahr"], yy: ["%d Jahre", "%d Jahren"]};
+ function i(e3, n3, t3) {
+ var i2 = a2[t3];
+ return Array.isArray(i2) && (i2 = i2[n3 ? 0 : 1]), i2.replace("%d", e3);
+ }
+ var r2 = {name: "de", weekdays: "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), weekdaysShort: "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), weekdaysMin: "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), months: "Januar_Februar_M\xE4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), monthsShort: "Jan._Feb._M\xE4rz_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.".split("_"), ordinal: function(e3) {
+ return e3 + ".";
+ }, weekStart: 1, yearStart: 4, formats: {LTS: "HH:mm:ss", LT: "HH:mm", L: "DD.MM.YYYY", LL: "D. MMMM YYYY", LLL: "D. MMMM YYYY HH:mm", LLLL: "dddd, D. MMMM YYYY HH:mm"}, relativeTime: {future: "in %s", past: "vor %s", s: i, m: i, mm: i, h: i, hh: i, d: i, dd: i, M: i, MM: i, y: i, yy: i}};
+ return t2.default.locale(r2, null, true), r2;
+ });
+});
+
+// node_modules/dayjs/locale/en.js
+var require_en = __commonJS((exports, module) => {
+ !function(e2, n2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = n2() : typeof define == "function" && define.amd ? define(n2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_en = n2();
+ }(exports, function() {
+ "use strict";
+ return {name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_")};
+ });
+});
+
+// node_modules/dayjs/locale/es.js
+var require_es = __commonJS((exports, module) => {
+ !function(e2, o2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = o2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], o2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_es = o2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function o2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var s2 = o2(e2), d = {name: "es", monthsShort: "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"), weekdays: "domingo_lunes_martes_mi\xE9rcoles_jueves_viernes_s\xE1bado".split("_"), weekdaysShort: "dom._lun._mar._mi\xE9._jue._vie._s\xE1b.".split("_"), weekdaysMin: "do_lu_ma_mi_ju_vi_s\xE1".split("_"), months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), weekStart: 1, formats: {LT: "H:mm", LTS: "H:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY H:mm", LLLL: "dddd, D [de] MMMM [de] YYYY H:mm"}, relativeTime: {future: "en %s", past: "hace %s", s: "unos segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un d\xEDa", dd: "%d d\xEDas", M: "un mes", MM: "%d meses", y: "un a\xF1o", yy: "%d a\xF1os"}, ordinal: function(e3) {
+ return e3 + "\xBA";
+ }};
+ return s2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/fa.js
+var require_fa = __commonJS((exports, module) => {
+ !function(_, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_fa = e2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function e2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var t2 = e2(_), d = {name: "fa", weekdays: "\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647_\u062F\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200C\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647_\u062C\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"), weekdaysShort: "\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647_\u062F\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200C\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647_\u062C\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"), weekdaysMin: "\u06CC_\u062F_\u0633_\u0686_\u067E_\u062C_\u0634".split("_"), weekStart: 6, months: "\u0698\u0627\u0646\u0648\u06CC\u0647_\u0641\u0648\u0631\u06CC\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06CC\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06CC\u0647_\u0627\u0648\u062A_\u0633\u067E\u062A\u0627\u0645\u0628\u0631_\u0627\u06A9\u062A\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062F\u0633\u0627\u0645\u0628\u0631".split("_"), monthsShort: "\u0698\u0627\u0646\u0648\u06CC\u0647_\u0641\u0648\u0631\u06CC\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06CC\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06CC\u0647_\u0627\u0648\u062A_\u0633\u067E\u062A\u0627\u0645\u0628\u0631_\u0627\u06A9\u062A\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062F\u0633\u0627\u0645\u0628\u0631".split("_"), ordinal: function(_2) {
+ return _2;
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm"}, relativeTime: {future: "\u062F\u0631 %s", past: "%s \u067E\u06CC\u0634", s: "\u0686\u0646\u062F \u062B\u0627\u0646\u06CC\u0647", m: "\u06CC\u06A9 \u062F\u0642\u06CC\u0642\u0647", mm: "%d \u062F\u0642\u06CC\u0642\u0647", h: "\u06CC\u06A9 \u0633\u0627\u0639\u062A", hh: "%d \u0633\u0627\u0639\u062A", d: "\u06CC\u06A9 \u0631\u0648\u0632", dd: "%d \u0631\u0648\u0632", M: "\u06CC\u06A9 \u0645\u0627\u0647", MM: "%d \u0645\u0627\u0647", y: "\u06CC\u06A9 \u0633\u0627\u0644", yy: "%d \u0633\u0627\u0644"}};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/fr.js
+var require_fr = __commonJS((exports, module) => {
+ !function(e2, n2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = n2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], n2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_fr = n2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function n2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = n2(e2), i = {name: "fr", weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "di_lu_ma_me_je_ve_sa".split("_"), months: "janvier_f\xE9vrier_mars_avril_mai_juin_juillet_ao\xFBt_septembre_octobre_novembre_d\xE9cembre".split("_"), monthsShort: "janv._f\xE9vr._mars_avr._mai_juin_juil._ao\xFBt_sept._oct._nov._d\xE9c.".split("_"), weekStart: 1, yearStart: 4, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm"}, relativeTime: {future: "dans %s", past: "il y a %s", s: "quelques secondes", m: "une minute", mm: "%d minutes", h: "une heure", hh: "%d heures", d: "un jour", dd: "%d jours", M: "un mois", MM: "%d mois", y: "un an", yy: "%d ans"}, ordinal: function(e3) {
+ return "" + e3 + (e3 === 1 ? "er" : "");
+ }};
+ return t2.default.locale(i, null, true), i;
+ });
+});
+
+// node_modules/dayjs/locale/hi.js
+var require_hi = __commonJS((exports, module) => {
+ !function(_, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_hi = e2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function e2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var t2 = e2(_), d = {name: "hi", weekdays: "\u0930\u0935\u093F\u0935\u093E\u0930_\u0938\u094B\u092E\u0935\u093E\u0930_\u092E\u0902\u0917\u0932\u0935\u093E\u0930_\u092C\u0941\u0927\u0935\u093E\u0930_\u0917\u0941\u0930\u0942\u0935\u093E\u0930_\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930_\u0936\u0928\u093F\u0935\u093E\u0930".split("_"), months: "\u091C\u0928\u0935\u0930\u0940_\u092B\u093C\u0930\u0935\u0930\u0940_\u092E\u093E\u0930\u094D\u091A_\u0905\u092A\u094D\u0930\u0948\u0932_\u092E\u0908_\u091C\u0942\u0928_\u091C\u0941\u0932\u093E\u0908_\u0905\u0917\u0938\u094D\u0924_\u0938\u093F\u0924\u092E\u094D\u092C\u0930_\u0905\u0915\u094D\u091F\u0942\u092C\u0930_\u0928\u0935\u092E\u094D\u092C\u0930_\u0926\u093F\u0938\u092E\u094D\u092C\u0930".split("_"), weekdaysShort: "\u0930\u0935\u093F_\u0938\u094B\u092E_\u092E\u0902\u0917\u0932_\u092C\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094D\u0930_\u0936\u0928\u093F".split("_"), monthsShort: "\u091C\u0928._\u092B\u093C\u0930._\u092E\u093E\u0930\u094D\u091A_\u0905\u092A\u094D\u0930\u0948._\u092E\u0908_\u091C\u0942\u0928_\u091C\u0941\u0932._\u0905\u0917._\u0938\u093F\u0924._\u0905\u0915\u094D\u091F\u0942._\u0928\u0935._\u0926\u093F\u0938.".split("_"), weekdaysMin: "\u0930_\u0938\u094B_\u092E\u0902_\u092C\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"), ordinal: function(_2) {
+ return _2;
+ }, formats: {LT: "A h:mm \u092C\u091C\u0947", LTS: "A h:mm:ss \u092C\u091C\u0947", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY, A h:mm \u092C\u091C\u0947", LLLL: "dddd, D MMMM YYYY, A h:mm \u092C\u091C\u0947"}, relativeTime: {future: "%s \u092E\u0947\u0902", past: "%s \u092A\u0939\u0932\u0947", s: "\u0915\u0941\u091B \u0939\u0940 \u0915\u094D\u0937\u0923", m: "\u090F\u0915 \u092E\u093F\u0928\u091F", mm: "%d \u092E\u093F\u0928\u091F", h: "\u090F\u0915 \u0918\u0902\u091F\u093E", hh: "%d \u0918\u0902\u091F\u0947", d: "\u090F\u0915 \u0926\u093F\u0928", dd: "%d \u0926\u093F\u0928", M: "\u090F\u0915 \u092E\u0939\u0940\u0928\u0947", MM: "%d \u092E\u0939\u0940\u0928\u0947", y: "\u090F\u0915 \u0935\u0930\u094D\u0937", yy: "%d \u0935\u0930\u094D\u0937"}};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/hu.js
+var require_hu = __commonJS((exports, module) => {
+ !function(e2, n2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = n2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], n2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_hu = n2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function n2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = n2(e2), r2 = {name: "hu", weekdays: "vas\xE1rnap_h\xE9tf\u0151_kedd_szerda_cs\xFCt\xF6rt\xF6k_p\xE9ntek_szombat".split("_"), weekdaysShort: "vas_h\xE9t_kedd_sze_cs\xFCt_p\xE9n_szo".split("_"), weekdaysMin: "v_h_k_sze_cs_p_szo".split("_"), months: "janu\xE1r_febru\xE1r_m\xE1rcius_\xE1prilis_m\xE1jus_j\xFAnius_j\xFAlius_augusztus_szeptember_okt\xF3ber_november_december".split("_"), monthsShort: "jan_feb_m\xE1rc_\xE1pr_m\xE1j_j\xFAn_j\xFAl_aug_szept_okt_nov_dec".split("_"), ordinal: function(e3) {
+ return e3 + ".";
+ }, weekStart: 1, relativeTime: {future: "%s m\xFAlva", past: "%s", s: function(e3, n3, t3, r3) {
+ return "n\xE9h\xE1ny m\xE1sodperc" + (r3 || n3 ? "" : "e");
+ }, m: function(e3, n3, t3, r3) {
+ return "egy perc" + (r3 || n3 ? "" : "e");
+ }, mm: function(e3, n3, t3, r3) {
+ return e3 + " perc" + (r3 || n3 ? "" : "e");
+ }, h: function(e3, n3, t3, r3) {
+ return "egy " + (r3 || n3 ? "\xF3ra" : "\xF3r\xE1ja");
+ }, hh: function(e3, n3, t3, r3) {
+ return e3 + " " + (r3 || n3 ? "\xF3ra" : "\xF3r\xE1ja");
+ }, d: function(e3, n3, t3, r3) {
+ return "egy " + (r3 || n3 ? "nap" : "napja");
+ }, dd: function(e3, n3, t3, r3) {
+ return e3 + " " + (r3 || n3 ? "nap" : "napja");
+ }, M: function(e3, n3, t3, r3) {
+ return "egy " + (r3 || n3 ? "h\xF3nap" : "h\xF3napja");
+ }, MM: function(e3, n3, t3, r3) {
+ return e3 + " " + (r3 || n3 ? "h\xF3nap" : "h\xF3napja");
+ }, y: function(e3, n3, t3, r3) {
+ return "egy " + (r3 || n3 ? "\xE9v" : "\xE9ve");
+ }, yy: function(e3, n3, t3, r3) {
+ return e3 + " " + (r3 || n3 ? "\xE9v" : "\xE9ve");
+ }}, formats: {LT: "H:mm", LTS: "H:mm:ss", L: "YYYY.MM.DD.", LL: "YYYY. MMMM D.", LLL: "YYYY. MMMM D. H:mm", LLLL: "YYYY. MMMM D., dddd H:mm"}};
+ return t2.default.locale(r2, null, true), r2;
+ });
+});
+
+// node_modules/dayjs/locale/hy-am.js
+var require_hy_am = __commonJS((exports, module) => {
+ !function(_, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_hy_am = e2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function e2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var t2 = e2(_), d = {name: "hy-am", weekdays: "\u056F\u056B\u0580\u0561\u056F\u056B_\u0565\u0580\u056F\u0578\u0582\u0577\u0561\u0562\u0569\u056B_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B_\u0570\u056B\u0576\u0563\u0577\u0561\u0562\u0569\u056B_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"), months: "\u0570\u0578\u0582\u0576\u057E\u0561\u0580\u056B_\u0583\u0565\u057F\u0580\u057E\u0561\u0580\u056B_\u0574\u0561\u0580\u057F\u056B_\u0561\u057A\u0580\u056B\u056C\u056B_\u0574\u0561\u0575\u056B\u057D\u056B_\u0570\u0578\u0582\u0576\u056B\u057D\u056B_\u0570\u0578\u0582\u056C\u056B\u057D\u056B_\u0585\u0563\u0578\u057D\u057F\u0578\u057D\u056B_\u057D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580\u056B_\u0570\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580\u056B_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056B_\u0564\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580\u056B".split("_"), weekStart: 1, weekdaysShort: "\u056F\u0580\u056F_\u0565\u0580\u056F_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"), monthsShort: "\u0570\u0576\u057E_\u0583\u057F\u0580_\u0574\u0580\u057F_\u0561\u057A\u0580_\u0574\u0575\u057D_\u0570\u0576\u057D_\u0570\u056C\u057D_\u0585\u0563\u057D_\u057D\u057A\u057F_\u0570\u056F\u057F_\u0576\u0574\u0562_\u0564\u056F\u057F".split("_"), weekdaysMin: "\u056F\u0580\u056F_\u0565\u0580\u056F_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"), ordinal: function(_2) {
+ return _2;
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY \u0569.", LLL: "D MMMM YYYY \u0569., HH:mm", LLLL: "dddd, D MMMM YYYY \u0569., HH:mm"}, relativeTime: {future: "%s \u0570\u0565\u057F\u0578", past: "%s \u0561\u057C\u0561\u057B", s: "\u0574\u056B \u0584\u0561\u0576\u056B \u057E\u0561\u0575\u0580\u056F\u0575\u0561\u0576", m: "\u0580\u0578\u057A\u0565", mm: "%d \u0580\u0578\u057A\u0565", h: "\u056A\u0561\u0574", hh: "%d \u056A\u0561\u0574", d: "\u0585\u0580", dd: "%d \u0585\u0580", M: "\u0561\u0574\u056B\u057D", MM: "%d \u0561\u0574\u056B\u057D", y: "\u057F\u0561\u0580\u056B", yy: "%d \u057F\u0561\u0580\u056B"}};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/id.js
+var require_id = __commonJS((exports, module) => {
+ !function(e2, a2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = a2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], a2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_id = a2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function a2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = a2(e2), _ = {name: "id", weekdays: "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), months: "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), weekdaysShort: "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), monthsShort: "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"), weekdaysMin: "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), weekStart: 1, formats: {LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [pukul] HH.mm", LLLL: "dddd, D MMMM YYYY [pukul] HH.mm"}, relativeTime: {future: "dalam %s", past: "%s yang lalu", s: "beberapa detik", m: "semenit", mm: "%d menit", h: "sejam", hh: "%d jam", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun"}, ordinal: function(e3) {
+ return e3 + ".";
+ }};
+ return t2.default.locale(_, null, true), _;
+ });
+});
+
+// node_modules/dayjs/locale/it.js
+var require_it = __commonJS((exports, module) => {
+ !function(e2, o2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = o2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], o2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_it = o2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function o2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = o2(e2), n2 = {name: "it", weekdays: "domenica_luned\xEC_marted\xEC_mercoled\xEC_gioved\xEC_venerd\xEC_sabato".split("_"), weekdaysShort: "dom_lun_mar_mer_gio_ven_sab".split("_"), weekdaysMin: "do_lu_ma_me_gi_ve_sa".split("_"), months: "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"), weekStart: 1, monthsShort: "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"), formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm"}, relativeTime: {future: "tra %s", past: "%s fa", s: "qualche secondo", m: "un minuto", mm: "%d minuti", h: "un' ora", hh: "%d ore", d: "un giorno", dd: "%d giorni", M: "un mese", MM: "%d mesi", y: "un anno", yy: "%d anni"}, ordinal: function(e3) {
+ return e3 + "\xBA";
+ }};
+ return t2.default.locale(n2, null, true), n2;
+ });
+});
+
+// node_modules/dayjs/locale/ja.js
+var require_ja = __commonJS((exports, module) => {
+ !function(e2, _) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = _(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], _) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_ja = _(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function _(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = _(e2), d = {name: "ja", weekdays: "\u65E5\u66DC\u65E5_\u6708\u66DC\u65E5_\u706B\u66DC\u65E5_\u6C34\u66DC\u65E5_\u6728\u66DC\u65E5_\u91D1\u66DC\u65E5_\u571F\u66DC\u65E5".split("_"), weekdaysShort: "\u65E5_\u6708_\u706B_\u6C34_\u6728_\u91D1_\u571F".split("_"), weekdaysMin: "\u65E5_\u6708_\u706B_\u6C34_\u6728_\u91D1_\u571F".split("_"), months: "1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"), monthsShort: "1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"), ordinal: function(e3) {
+ return e3 + "\u65E5";
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY\u5E74M\u6708D\u65E5", LLL: "YYYY\u5E74M\u6708D\u65E5 HH:mm", LLLL: "YYYY\u5E74M\u6708D\u65E5 dddd HH:mm", l: "YYYY/MM/DD", ll: "YYYY\u5E74M\u6708D\u65E5", lll: "YYYY\u5E74M\u6708D\u65E5 HH:mm", llll: "YYYY\u5E74M\u6708D\u65E5(ddd) HH:mm"}, meridiem: function(e3) {
+ return e3 < 12 ? "\u5348\u524D" : "\u5348\u5F8C";
+ }, relativeTime: {future: "%s\u5F8C", past: "%s\u524D", s: "\u6570\u79D2", m: "1\u5206", mm: "%d\u5206", h: "1\u6642\u9593", hh: "%d\u6642\u9593", d: "1\u65E5", dd: "%d\u65E5", M: "1\u30F6\u6708", MM: "%d\u30F6\u6708", y: "1\u5E74", yy: "%d\u5E74"}};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/ka.js
+var require_ka = __commonJS((exports, module) => {
+ !function(_, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_ka = e2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function e2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var t2 = e2(_), d = {name: "ka", weekdays: "\u10D9\u10D5\u10D8\u10E0\u10D0_\u10DD\u10E0\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10E1\u10D0\u10DB\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10DD\u10D7\u10EE\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10EE\u10E3\u10D7\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10DE\u10D0\u10E0\u10D0\u10E1\u10D9\u10D4\u10D5\u10D8_\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8".split("_"), weekdaysShort: "\u10D9\u10D5\u10D8_\u10DD\u10E0\u10E8_\u10E1\u10D0\u10DB_\u10DD\u10D7\u10EE_\u10EE\u10E3\u10D7_\u10DE\u10D0\u10E0_\u10E8\u10D0\u10D1".split("_"), weekdaysMin: "\u10D9\u10D5_\u10DD\u10E0_\u10E1\u10D0_\u10DD\u10D7_\u10EE\u10E3_\u10DE\u10D0_\u10E8\u10D0".split("_"), months: "\u10D8\u10D0\u10DC\u10D5\u10D0\u10E0\u10D8_\u10D7\u10D4\u10D1\u10D4\u10E0\u10D5\u10D0\u10DA\u10D8_\u10DB\u10D0\u10E0\u10E2\u10D8_\u10D0\u10DE\u10E0\u10D8\u10DA\u10D8_\u10DB\u10D0\u10D8\u10E1\u10D8_\u10D8\u10D5\u10DC\u10D8\u10E1\u10D8_\u10D8\u10D5\u10DA\u10D8\u10E1\u10D8_\u10D0\u10D2\u10D5\u10D8\u10E1\u10E2\u10DD_\u10E1\u10D4\u10E5\u10E2\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8_\u10DD\u10E5\u10E2\u10DD\u10DB\u10D1\u10D4\u10E0\u10D8_\u10DC\u10DD\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8_\u10D3\u10D4\u10D9\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8".split("_"), monthsShort: "\u10D8\u10D0\u10DC_\u10D7\u10D4\u10D1_\u10DB\u10D0\u10E0_\u10D0\u10DE\u10E0_\u10DB\u10D0\u10D8_\u10D8\u10D5\u10DC_\u10D8\u10D5\u10DA_\u10D0\u10D2\u10D5_\u10E1\u10D4\u10E5_\u10DD\u10E5\u10E2_\u10DC\u10DD\u10D4_\u10D3\u10D4\u10D9".split("_"), weekStart: 1, formats: {LT: "h:mm A", LTS: "h:mm:ss A", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY h:mm A", LLLL: "dddd, D MMMM YYYY h:mm A"}, relativeTime: {future: "%s \u10E8\u10D4\u10DB\u10D3\u10D4\u10D2", past: "%s \u10EC\u10D8\u10DC", s: "\u10EC\u10D0\u10DB\u10D8", m: "\u10EC\u10E3\u10D7\u10D8", mm: "%d \u10EC\u10E3\u10D7\u10D8", h: "\u10E1\u10D0\u10D0\u10D7\u10D8", hh: "%d \u10E1\u10D0\u10D0\u10D7\u10D8\u10E1", d: "\u10D3\u10E6\u10D4\u10E1", dd: "%d \u10D3\u10E6\u10D8\u10E1 \u10D2\u10D0\u10DC\u10DB\u10D0\u10D5\u10DA\u10DD\u10D1\u10D0\u10E8\u10D8", M: "\u10D7\u10D5\u10D8\u10E1", MM: "%d \u10D7\u10D5\u10D8\u10E1", y: "\u10EC\u10D4\u10DA\u10D8", yy: "%d \u10EC\u10DA\u10D8\u10E1"}, ordinal: function(_2) {
+ return _2;
+ }};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/ku.js
+var require_ku = __commonJS((exports, module) => {
+ !function(e2, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? t2(exports, require_dayjs_min()) : typeof define == "function" && define.amd ? define(["exports", "dayjs"], t2) : t2((e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_ku = {}, e2.dayjs);
+ }(exports, function(e2, t2) {
+ "use strict";
+ function n2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var r2 = n2(t2), d = {1: "\u0661", 2: "\u0662", 3: "\u0663", 4: "\u0664", 5: "\u0665", 6: "\u0666", 7: "\u0667", 8: "\u0668", 9: "\u0669", 0: "\u0660"}, o2 = {"\u0661": "1", "\u0662": "2", "\u0663": "3", "\u0664": "4", "\u0665": "5", "\u0666": "6", "\u0667": "7", "\u0668": "8", "\u0669": "9", "\u0660": "0"}, u = ["\u06A9\u0627\u0646\u0648\u0648\u0646\u06CC \u062F\u0648\u0648\u06D5\u0645", "\u0634\u0648\u0628\u0627\u062A", "\u0626\u0627\u062F\u0627\u0631", "\u0646\u06CC\u0633\u0627\u0646", "\u0626\u0627\u06CC\u0627\u0631", "\u062D\u0648\u0632\u06D5\u06CC\u0631\u0627\u0646", "\u062A\u06D5\u0645\u0645\u0648\u0648\u0632", "\u0626\u0627\u0628", "\u0626\u06D5\u06CC\u0644\u0648\u0648\u0644", "\u062A\u0634\u0631\u06CC\u0646\u06CC \u06CC\u06D5\u06A9\u06D5\u0645", "\u062A\u0634\u0631\u06CC\u0646\u06CC \u062F\u0648\u0648\u06D5\u0645", "\u06A9\u0627\u0646\u0648\u0648\u0646\u06CC \u06CC\u06D5\u06A9\u06D5\u0645"], i = {name: "ku", months: u, monthsShort: u, weekdays: "\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5_\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5_\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5_\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5_\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5_\u0647\u06D5\u06CC\u0646\u06CC_\u0634\u06D5\u0645\u0645\u06D5".split("_"), weekdaysShort: "\u06CC\u06D5\u06A9\u0634\u06D5\u0645_\u062F\u0648\u0648\u0634\u06D5\u0645_\u0633\u06CE\u0634\u06D5\u0645_\u0686\u0648\u0627\u0631\u0634\u06D5\u0645_\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645_\u0647\u06D5\u06CC\u0646\u06CC_\u0634\u06D5\u0645\u0645\u06D5".split("_"), weekStart: 6, weekdaysMin: "\u06CC_\u062F_\u0633_\u0686_\u067E_\u0647\u0640_\u0634".split("_"), preparse: function(e3) {
+ return e3.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function(e4) {
+ return o2[e4];
+ }).replace(/،/g, ",");
+ }, postformat: function(e3) {
+ return e3.replace(/\d/g, function(e4) {
+ return d[e4];
+ }).replace(/,/g, "\u060C");
+ }, ordinal: function(e3) {
+ return e3;
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm"}, meridiem: function(e3) {
+ return e3 < 12 ? "\u067E.\u0646" : "\u062F.\u0646";
+ }, relativeTime: {future: "\u0644\u06D5 %s", past: "\u0644\u06D5\u0645\u06D5\u0648\u067E\u06CE\u0634 %s", s: "\u0686\u06D5\u0646\u062F \u0686\u0631\u06A9\u06D5\u06CC\u06D5\u06A9", m: "\u06CC\u06D5\u06A9 \u062E\u0648\u0644\u06D5\u06A9", mm: "%d \u062E\u0648\u0644\u06D5\u06A9", h: "\u06CC\u06D5\u06A9 \u06A9\u0627\u062A\u0698\u0645\u06CE\u0631", hh: "%d \u06A9\u0627\u062A\u0698\u0645\u06CE\u0631", d: "\u06CC\u06D5\u06A9 \u0695\u06C6\u0698", dd: "%d \u0695\u06C6\u0698", M: "\u06CC\u06D5\u06A9 \u0645\u0627\u0646\u06AF", MM: "%d \u0645\u0627\u0646\u06AF", y: "\u06CC\u06D5\u06A9 \u0633\u0627\u06B5", yy: "%d \u0633\u0627\u06B5"}};
+ r2.default.locale(i, null, true), e2.default = i, e2.englishToArabicNumbersMap = d, Object.defineProperty(e2, "__esModule", {value: true});
+ });
+});
+
+// node_modules/dayjs/locale/ms.js
+var require_ms = __commonJS((exports, module) => {
+ !function(e2, a2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = a2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], a2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_ms = a2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function a2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = a2(e2), s2 = {name: "ms", weekdays: "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), weekdaysShort: "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), weekdaysMin: "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), months: "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), monthsShort: "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), weekStart: 1, formats: {LT: "HH.mm", LTS: "HH.mm.ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH.mm", LLLL: "dddd, D MMMM YYYY HH.mm"}, relativeTime: {future: "dalam %s", past: "%s yang lepas", s: "beberapa saat", m: "seminit", mm: "%d minit", h: "sejam", hh: "%d jam", d: "sehari", dd: "%d hari", M: "sebulan", MM: "%d bulan", y: "setahun", yy: "%d tahun"}, ordinal: function(e3) {
+ return e3 + ".";
+ }};
+ return t2.default.locale(s2, null, true), s2;
+ });
+});
+
+// node_modules/dayjs/locale/my.js
+var require_my = __commonJS((exports, module) => {
+ !function(_, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_my = e2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function e2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var t2 = e2(_), d = {name: "my", weekdays: "\u1010\u1014\u1004\u103A\u1039\u1002\u1014\u103D\u1031_\u1010\u1014\u1004\u103A\u1039\u101C\u102C_\u1021\u1004\u103A\u1039\u1002\u102B_\u1017\u102F\u1012\u1039\u1013\u101F\u1030\u1038_\u1000\u103C\u102C\u101E\u1015\u1010\u1031\u1038_\u101E\u1031\u102C\u1000\u103C\u102C_\u1005\u1014\u1031".split("_"), months: "\u1007\u1014\u103A\u1014\u101D\u102B\u101B\u102E_\u1016\u1031\u1016\u1031\u102C\u103A\u101D\u102B\u101B\u102E_\u1019\u1010\u103A_\u1027\u1015\u103C\u102E_\u1019\u1031_\u1007\u103D\u1014\u103A_\u1007\u1030\u101C\u102D\u102F\u1004\u103A_\u101E\u103C\u1002\u102F\u1010\u103A_\u1005\u1000\u103A\u1010\u1004\u103A\u1018\u102C_\u1021\u1031\u102C\u1000\u103A\u1010\u102D\u102F\u1018\u102C_\u1014\u102D\u102F\u101D\u1004\u103A\u1018\u102C_\u1012\u102E\u1007\u1004\u103A\u1018\u102C".split("_"), weekStart: 1, weekdaysShort: "\u1014\u103D\u1031_\u101C\u102C_\u1002\u102B_\u101F\u1030\u1038_\u1000\u103C\u102C_\u101E\u1031\u102C_\u1014\u1031".split("_"), monthsShort: "\u1007\u1014\u103A_\u1016\u1031_\u1019\u1010\u103A_\u1015\u103C\u102E_\u1019\u1031_\u1007\u103D\u1014\u103A_\u101C\u102D\u102F\u1004\u103A_\u101E\u103C_\u1005\u1000\u103A_\u1021\u1031\u102C\u1000\u103A_\u1014\u102D\u102F_\u1012\u102E".split("_"), weekdaysMin: "\u1014\u103D\u1031_\u101C\u102C_\u1002\u102B_\u101F\u1030\u1038_\u1000\u103C\u102C_\u101E\u1031\u102C_\u1014\u1031".split("_"), ordinal: function(_2) {
+ return _2;
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm"}, relativeTime: {future: "\u101C\u102C\u1019\u100A\u103A\u1037 %s \u1019\u103E\u102C", past: "\u101C\u103D\u1014\u103A\u1001\u1032\u1037\u101E\u1031\u102C %s \u1000", s: "\u1005\u1000\u1039\u1000\u1014\u103A.\u1021\u1014\u100A\u103A\u1038\u1004\u101A\u103A", m: "\u1010\u1005\u103A\u1019\u102D\u1014\u1005\u103A", mm: "%d \u1019\u102D\u1014\u1005\u103A", h: "\u1010\u1005\u103A\u1014\u102C\u101B\u102E", hh: "%d \u1014\u102C\u101B\u102E", d: "\u1010\u1005\u103A\u101B\u1000\u103A", dd: "%d \u101B\u1000\u103A", M: "\u1010\u1005\u103A\u101C", MM: "%d \u101C", y: "\u1010\u1005\u103A\u1014\u103E\u1005\u103A", yy: "%d \u1014\u103E\u1005\u103A"}};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/nl.js
+var require_nl = __commonJS((exports, module) => {
+ !function(e2, a2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = a2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], a2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_nl = a2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function a2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var d = a2(e2), n2 = {name: "nl", weekdays: "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), weekdaysShort: "zo._ma._di._wo._do._vr._za.".split("_"), weekdaysMin: "zo_ma_di_wo_do_vr_za".split("_"), months: "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), monthsShort: "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"), ordinal: function(e3) {
+ return "[" + e3 + (e3 === 1 || e3 === 8 || e3 >= 20 ? "ste" : "de") + "]";
+ }, weekStart: 1, yearStart: 4, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD-MM-YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd D MMMM YYYY HH:mm"}, relativeTime: {future: "over %s", past: "%s geleden", s: "een paar seconden", m: "een minuut", mm: "%d minuten", h: "een uur", hh: "%d uur", d: "een dag", dd: "%d dagen", M: "een maand", MM: "%d maanden", y: "een jaar", yy: "%d jaar"}};
+ return d.default.locale(n2, null, true), n2;
+ });
+});
+
+// node_modules/dayjs/locale/pl.js
+var require_pl = __commonJS((exports, module) => {
+ !function(e2, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = t2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], t2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_pl = t2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function t2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var i = t2(e2);
+ function a2(e3) {
+ return e3 % 10 < 5 && e3 % 10 > 1 && ~~(e3 / 10) % 10 != 1;
+ }
+ function n2(e3, t3, i2) {
+ var n3 = e3 + " ";
+ switch (i2) {
+ case "m":
+ return t3 ? "minuta" : "minut\u0119";
+ case "mm":
+ return n3 + (a2(e3) ? "minuty" : "minut");
+ case "h":
+ return t3 ? "godzina" : "godzin\u0119";
+ case "hh":
+ return n3 + (a2(e3) ? "godziny" : "godzin");
+ case "MM":
+ return n3 + (a2(e3) ? "miesi\u0105ce" : "miesi\u0119cy");
+ case "yy":
+ return n3 + (a2(e3) ? "lata" : "lat");
+ }
+ }
+ var r2 = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015Bnia_pa\u017Adziernika_listopada_grudnia".split("_"), _ = "stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017Adziernik_listopad_grudzie\u0144".split("_"), s2 = /D MMMM/, d = function(e3, t3) {
+ return s2.test(t3) ? r2[e3.month()] : _[e3.month()];
+ };
+ d.s = _, d.f = r2;
+ var o2 = {name: "pl", weekdays: "niedziela_poniedzia\u0142ek_wtorek_\u015Broda_czwartek_pi\u0105tek_sobota".split("_"), weekdaysShort: "ndz_pon_wt_\u015Br_czw_pt_sob".split("_"), weekdaysMin: "Nd_Pn_Wt_\u015Ar_Cz_Pt_So".split("_"), months: d, monthsShort: "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017A_lis_gru".split("_"), ordinal: function(e3) {
+ return e3 + ".";
+ }, weekStart: 1, yearStart: 4, relativeTime: {future: "za %s", past: "%s temu", s: "kilka sekund", m: n2, mm: n2, h: n2, hh: n2, d: "1 dzie\u0144", dd: "%d dni", M: "miesi\u0105c", MM: n2, y: "rok", yy: n2}, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm"}};
+ return i.default.locale(o2, null, true), o2;
+ });
+});
+
+// node_modules/dayjs/locale/pt-br.js
+var require_pt_br = __commonJS((exports, module) => {
+ !function(e2, o2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = o2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], o2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_pt_br = o2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function o2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var a2 = o2(e2), s2 = {name: "pt-br", weekdays: "domingo_segunda-feira_ter\xE7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xE1bado".split("_"), weekdaysShort: "dom_seg_ter_qua_qui_sex_s\xE1b".split("_"), weekdaysMin: "Do_2\xAA_3\xAA_4\xAA_5\xAA_6\xAA_S\xE1".split("_"), months: "janeiro_fevereiro_mar\xE7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"), monthsShort: "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"), ordinal: function(e3) {
+ return e3 + "\xBA";
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY [\xE0s] HH:mm", LLLL: "dddd, D [de] MMMM [de] YYYY [\xE0s] HH:mm"}, relativeTime: {future: "em %s", past: "h\xE1 %s", s: "poucos segundos", m: "um minuto", mm: "%d minutos", h: "uma hora", hh: "%d horas", d: "um dia", dd: "%d dias", M: "um m\xEAs", MM: "%d meses", y: "um ano", yy: "%d anos"}};
+ return a2.default.locale(s2, null, true), s2;
+ });
+});
+
+// node_modules/dayjs/locale/pt.js
+var require_pt = __commonJS((exports, module) => {
+ !function(e2, a2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = a2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], a2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_pt = a2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function a2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var o2 = a2(e2), t2 = {name: "pt", weekdays: "domingo_segunda-feira_ter\xE7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xE1bado".split("_"), weekdaysShort: "dom_seg_ter_qua_qui_sex_sab".split("_"), weekdaysMin: "Do_2\xAA_3\xAA_4\xAA_5\xAA_6\xAA_Sa".split("_"), months: "janeiro_fevereiro_mar\xE7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"), monthsShort: "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"), ordinal: function(e3) {
+ return e3 + "\xBA";
+ }, weekStart: 1, yearStart: 4, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY [\xE0s] HH:mm", LLLL: "dddd, D [de] MMMM [de] YYYY [\xE0s] HH:mm"}, relativeTime: {future: "em %s", past: "h\xE1 %s", s: "alguns segundos", m: "um minuto", mm: "%d minutos", h: "uma hora", hh: "%d horas", d: "um dia", dd: "%d dias", M: "um m\xEAs", MM: "%d meses", y: "um ano", yy: "%d anos"}};
+ return o2.default.locale(t2, null, true), t2;
+ });
+});
+
+// node_modules/dayjs/locale/ro.js
+var require_ro = __commonJS((exports, module) => {
+ !function(e2, i) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = i(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], i) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_ro = i(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function i(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = i(e2), _ = {name: "ro", weekdays: "Duminic\u0103_Luni_Mar\u021Bi_Miercuri_Joi_Vineri_S\xE2mb\u0103t\u0103".split("_"), weekdaysShort: "Dum_Lun_Mar_Mie_Joi_Vin_S\xE2m".split("_"), weekdaysMin: "Du_Lu_Ma_Mi_Jo_Vi_S\xE2".split("_"), months: "Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"), monthsShort: "Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"), weekStart: 1, formats: {LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY H:mm", LLLL: "dddd, D MMMM YYYY H:mm"}, relativeTime: {future: "peste %s", past: "acum %s", s: "c\xE2teva secunde", m: "un minut", mm: "%d minute", h: "o or\u0103", hh: "%d ore", d: "o zi", dd: "%d zile", M: "o lun\u0103", MM: "%d luni", y: "un an", yy: "%d ani"}, ordinal: function(e3) {
+ return e3;
+ }};
+ return t2.default.locale(_, null, true), _;
+ });
+});
+
+// node_modules/dayjs/locale/ru.js
+var require_ru = __commonJS((exports, module) => {
+ !function(_, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = t2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], t2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_ru = t2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function t2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var e2 = t2(_), n2 = "\u044F\u043D\u0432\u0430\u0440\u044F_\u0444\u0435\u0432\u0440\u0430\u043B\u044F_\u043C\u0430\u0440\u0442\u0430_\u0430\u043F\u0440\u0435\u043B\u044F_\u043C\u0430\u044F_\u0438\u044E\u043D\u044F_\u0438\u044E\u043B\u044F_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F_\u043E\u043A\u0442\u044F\u0431\u0440\u044F_\u043D\u043E\u044F\u0431\u0440\u044F_\u0434\u0435\u043A\u0430\u0431\u0440\u044F".split("_"), s2 = "\u044F\u043D\u0432\u0430\u0440\u044C_\u0444\u0435\u0432\u0440\u0430\u043B\u044C_\u043C\u0430\u0440\u0442_\u0430\u043F\u0440\u0435\u043B\u044C_\u043C\u0430\u0439_\u0438\u044E\u043D\u044C_\u0438\u044E\u043B\u044C_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C_\u043E\u043A\u0442\u044F\u0431\u0440\u044C_\u043D\u043E\u044F\u0431\u0440\u044C_\u0434\u0435\u043A\u0430\u0431\u0440\u044C".split("_"), r2 = "\u044F\u043D\u0432._\u0444\u0435\u0432\u0440._\u043C\u0430\u0440._\u0430\u043F\u0440._\u043C\u0430\u044F_\u0438\u044E\u043D\u044F_\u0438\u044E\u043B\u044F_\u0430\u0432\u0433._\u0441\u0435\u043D\u0442._\u043E\u043A\u0442._\u043D\u043E\u044F\u0431._\u0434\u0435\u043A.".split("_"), o2 = "\u044F\u043D\u0432._\u0444\u0435\u0432\u0440._\u043C\u0430\u0440\u0442_\u0430\u043F\u0440._\u043C\u0430\u0439_\u0438\u044E\u043D\u044C_\u0438\u044E\u043B\u044C_\u0430\u0432\u0433._\u0441\u0435\u043D\u0442._\u043E\u043A\u0442._\u043D\u043E\u044F\u0431._\u0434\u0435\u043A.".split("_"), i = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;
+ function d(_2, t3, e3) {
+ var n3, s3;
+ return e3 === "m" ? t3 ? "\u043C\u0438\u043D\u0443\u0442\u0430" : "\u043C\u0438\u043D\u0443\u0442\u0443" : _2 + " " + (n3 = +_2, s3 = {mm: t3 ? "\u043C\u0438\u043D\u0443\u0442\u0430_\u043C\u0438\u043D\u0443\u0442\u044B_\u043C\u0438\u043D\u0443\u0442" : "\u043C\u0438\u043D\u0443\u0442\u0443_\u043C\u0438\u043D\u0443\u0442\u044B_\u043C\u0438\u043D\u0443\u0442", hh: "\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043E\u0432", dd: "\u0434\u0435\u043D\u044C_\u0434\u043D\u044F_\u0434\u043D\u0435\u0439", MM: "\u043C\u0435\u0441\u044F\u0446_\u043C\u0435\u0441\u044F\u0446\u0430_\u043C\u0435\u0441\u044F\u0446\u0435\u0432", yy: "\u0433\u043E\u0434_\u0433\u043E\u0434\u0430_\u043B\u0435\u0442"}[e3].split("_"), n3 % 10 == 1 && n3 % 100 != 11 ? s3[0] : n3 % 10 >= 2 && n3 % 10 <= 4 && (n3 % 100 < 10 || n3 % 100 >= 20) ? s3[1] : s3[2]);
+ }
+ var u = function(_2, t3) {
+ return i.test(t3) ? n2[_2.month()] : s2[_2.month()];
+ };
+ u.s = s2, u.f = n2;
+ var a2 = function(_2, t3) {
+ return i.test(t3) ? r2[_2.month()] : o2[_2.month()];
+ };
+ a2.s = o2, a2.f = r2;
+ var m = {name: "ru", weekdays: "\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435_\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A_\u0432\u0442\u043E\u0440\u043D\u0438\u043A_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043F\u044F\u0442\u043D\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043E\u0442\u0430".split("_"), weekdaysShort: "\u0432\u0441\u043A_\u043F\u043D\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043F\u0442\u043D_\u0441\u0431\u0442".split("_"), weekdaysMin: "\u0432\u0441_\u043F\u043D_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043F\u0442_\u0441\u0431".split("_"), months: u, monthsShort: a2, weekStart: 1, yearStart: 4, formats: {LT: "H:mm", LTS: "H:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY \u0433.", LLL: "D MMMM YYYY \u0433., H:mm", LLLL: "dddd, D MMMM YYYY \u0433., H:mm"}, relativeTime: {future: "\u0447\u0435\u0440\u0435\u0437 %s", past: "%s \u043D\u0430\u0437\u0430\u0434", s: "\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434", m: d, mm: d, h: "\u0447\u0430\u0441", hh: d, d: "\u0434\u0435\u043D\u044C", dd: d, M: "\u043C\u0435\u0441\u044F\u0446", MM: d, y: "\u0433\u043E\u0434", yy: d}, ordinal: function(_2) {
+ return _2;
+ }, meridiem: function(_2) {
+ return _2 < 4 ? "\u043D\u043E\u0447\u0438" : _2 < 12 ? "\u0443\u0442\u0440\u0430" : _2 < 17 ? "\u0434\u043D\u044F" : "\u0432\u0435\u0447\u0435\u0440\u0430";
+ }};
+ return e2.default.locale(m, null, true), m;
+ });
+});
+
+// node_modules/dayjs/locale/sv.js
+var require_sv = __commonJS((exports, module) => {
+ !function(e2, t2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = t2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], t2) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_sv = t2(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function t2(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var a2 = t2(e2), d = {name: "sv", weekdays: "s\xF6ndag_m\xE5ndag_tisdag_onsdag_torsdag_fredag_l\xF6rdag".split("_"), weekdaysShort: "s\xF6n_m\xE5n_tis_ons_tor_fre_l\xF6r".split("_"), weekdaysMin: "s\xF6_m\xE5_ti_on_to_fr_l\xF6".split("_"), months: "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), monthsShort: "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), weekStart: 1, yearStart: 4, ordinal: function(e3) {
+ var t3 = e3 % 10;
+ return "[" + e3 + (t3 === 1 || t3 === 2 ? "a" : "e") + "]";
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY-MM-DD", LL: "D MMMM YYYY", LLL: "D MMMM YYYY [kl.] HH:mm", LLLL: "dddd D MMMM YYYY [kl.] HH:mm", lll: "D MMM YYYY HH:mm", llll: "ddd D MMM YYYY HH:mm"}, relativeTime: {future: "om %s", past: "f\xF6r %s sedan", s: "n\xE5gra sekunder", m: "en minut", mm: "%d minuter", h: "en timme", hh: "%d timmar", d: "en dag", dd: "%d dagar", M: "en m\xE5nad", MM: "%d m\xE5nader", y: "ett \xE5r", yy: "%d \xE5r"}};
+ return a2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/tr.js
+var require_tr = __commonJS((exports, module) => {
+ !function(a2, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (a2 = typeof globalThis != "undefined" ? globalThis : a2 || self).dayjs_locale_tr = e2(a2.dayjs);
+ }(exports, function(a2) {
+ "use strict";
+ function e2(a3) {
+ return a3 && typeof a3 == "object" && "default" in a3 ? a3 : {default: a3};
+ }
+ var t2 = e2(a2), _ = {name: "tr", weekdays: "Pazar_Pazartesi_Sal\u0131_\xC7ar\u015Famba_Per\u015Fembe_Cuma_Cumartesi".split("_"), weekdaysShort: "Paz_Pts_Sal_\xC7ar_Per_Cum_Cts".split("_"), weekdaysMin: "Pz_Pt_Sa_\xC7a_Pe_Cu_Ct".split("_"), months: "Ocak_\u015Eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011Fustos_Eyl\xFCl_Ekim_Kas\u0131m_Aral\u0131k".split("_"), monthsShort: "Oca_\u015Eub_Mar_Nis_May_Haz_Tem_A\u011Fu_Eyl_Eki_Kas_Ara".split("_"), weekStart: 1, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY HH:mm", LLLL: "dddd, D MMMM YYYY HH:mm"}, relativeTime: {future: "%s sonra", past: "%s \xF6nce", s: "birka\xE7 saniye", m: "bir dakika", mm: "%d dakika", h: "bir saat", hh: "%d saat", d: "bir g\xFCn", dd: "%d g\xFCn", M: "bir ay", MM: "%d ay", y: "bir y\u0131l", yy: "%d y\u0131l"}, ordinal: function(a3) {
+ return a3 + ".";
+ }};
+ return t2.default.locale(_, null, true), _;
+ });
+});
+
+// node_modules/dayjs/locale/uk.js
+var require_uk = __commonJS((exports, module) => {
+ !function(_, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_uk = e2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function e2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var t2 = e2(_), s2 = "\u0441\u0456\u0447\u043D\u044F_\u043B\u044E\u0442\u043E\u0433\u043E_\u0431\u0435\u0440\u0435\u0437\u043D\u044F_\u043A\u0432\u0456\u0442\u043D\u044F_\u0442\u0440\u0430\u0432\u043D\u044F_\u0447\u0435\u0440\u0432\u043D\u044F_\u043B\u0438\u043F\u043D\u044F_\u0441\u0435\u0440\u043F\u043D\u044F_\u0432\u0435\u0440\u0435\u0441\u043D\u044F_\u0436\u043E\u0432\u0442\u043D\u044F_\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043D\u044F".split("_"), n2 = "\u0441\u0456\u0447\u0435\u043D\u044C_\u043B\u044E\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043D\u044C_\u043A\u0432\u0456\u0442\u0435\u043D\u044C_\u0442\u0440\u0430\u0432\u0435\u043D\u044C_\u0447\u0435\u0440\u0432\u0435\u043D\u044C_\u043B\u0438\u043F\u0435\u043D\u044C_\u0441\u0435\u0440\u043F\u0435\u043D\u044C_\u0432\u0435\u0440\u0435\u0441\u0435\u043D\u044C_\u0436\u043E\u0432\u0442\u0435\u043D\u044C_\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043D\u044C".split("_"), o2 = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;
+ function d(_2, e3, t3) {
+ var s3, n3;
+ return t3 === "m" ? e3 ? "\u0445\u0432\u0438\u043B\u0438\u043D\u0430" : "\u0445\u0432\u0438\u043B\u0438\u043D\u0443" : t3 === "h" ? e3 ? "\u0433\u043E\u0434\u0438\u043D\u0430" : "\u0433\u043E\u0434\u0438\u043D\u0443" : _2 + " " + (s3 = +_2, n3 = {ss: e3 ? "\u0441\u0435\u043A\u0443\u043D\u0434\u0430_\u0441\u0435\u043A\u0443\u043D\u0434\u0438_\u0441\u0435\u043A\u0443\u043D\u0434" : "\u0441\u0435\u043A\u0443\u043D\u0434\u0443_\u0441\u0435\u043A\u0443\u043D\u0434\u0438_\u0441\u0435\u043A\u0443\u043D\u0434", mm: e3 ? "\u0445\u0432\u0438\u043B\u0438\u043D\u0430_\u0445\u0432\u0438\u043B\u0438\u043D\u0438_\u0445\u0432\u0438\u043B\u0438\u043D" : "\u0445\u0432\u0438\u043B\u0438\u043D\u0443_\u0445\u0432\u0438\u043B\u0438\u043D\u0438_\u0445\u0432\u0438\u043B\u0438\u043D", hh: e3 ? "\u0433\u043E\u0434\u0438\u043D\u0430_\u0433\u043E\u0434\u0438\u043D\u0438_\u0433\u043E\u0434\u0438\u043D" : "\u0433\u043E\u0434\u0438\u043D\u0443_\u0433\u043E\u0434\u0438\u043D\u0438_\u0433\u043E\u0434\u0438\u043D", dd: "\u0434\u0435\u043D\u044C_\u0434\u043D\u0456_\u0434\u043D\u0456\u0432", MM: "\u043C\u0456\u0441\u044F\u0446\u044C_\u043C\u0456\u0441\u044F\u0446\u0456_\u043C\u0456\u0441\u044F\u0446\u0456\u0432", yy: "\u0440\u0456\u043A_\u0440\u043E\u043A\u0438_\u0440\u043E\u043A\u0456\u0432"}[t3].split("_"), s3 % 10 == 1 && s3 % 100 != 11 ? n3[0] : s3 % 10 >= 2 && s3 % 10 <= 4 && (s3 % 100 < 10 || s3 % 100 >= 20) ? n3[1] : n3[2]);
+ }
+ var i = function(_2, e3) {
+ return o2.test(e3) ? s2[_2.month()] : n2[_2.month()];
+ };
+ i.s = n2, i.f = s2;
+ var r2 = {name: "uk", weekdays: "\u043D\u0435\u0434\u0456\u043B\u044F_\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A_\u0432\u0456\u0432\u0442\u043E\u0440\u043E\u043A_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043F\u2019\u044F\u0442\u043D\u0438\u0446\u044F_\u0441\u0443\u0431\u043E\u0442\u0430".split("_"), weekdaysShort: "\u043D\u0434\u043B_\u043F\u043D\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043F\u0442\u043D_\u0441\u0431\u0442".split("_"), weekdaysMin: "\u043D\u0434_\u043F\u043D_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043F\u0442_\u0441\u0431".split("_"), months: i, monthsShort: "\u0441\u0456\u0447_\u043B\u044E\u0442_\u0431\u0435\u0440_\u043A\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043B\u0438\u043F_\u0441\u0435\u0440\u043F_\u0432\u0435\u0440_\u0436\u043E\u0432\u0442_\u043B\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"), weekStart: 1, relativeTime: {future: "\u0437\u0430 %s", past: "%s \u0442\u043E\u043C\u0443", s: "\u0434\u0435\u043A\u0456\u043B\u044C\u043A\u0430 \u0441\u0435\u043A\u0443\u043D\u0434", m: d, mm: d, h: d, hh: d, d: "\u0434\u0435\u043D\u044C", dd: d, M: "\u043C\u0456\u0441\u044F\u0446\u044C", MM: d, y: "\u0440\u0456\u043A", yy: d}, ordinal: function(_2) {
+ return _2;
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD.MM.YYYY", LL: "D MMMM YYYY \u0440.", LLL: "D MMMM YYYY \u0440., HH:mm", LLLL: "dddd, D MMMM YYYY \u0440., HH:mm"}};
+ return t2.default.locale(r2, null, true), r2;
+ });
+});
+
+// node_modules/dayjs/locale/vi.js
+var require_vi = __commonJS((exports, module) => {
+ !function(t2, n2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = n2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], n2) : (t2 = typeof globalThis != "undefined" ? globalThis : t2 || self).dayjs_locale_vi = n2(t2.dayjs);
+ }(exports, function(t2) {
+ "use strict";
+ function n2(t3) {
+ return t3 && typeof t3 == "object" && "default" in t3 ? t3 : {default: t3};
+ }
+ var h = n2(t2), _ = {name: "vi", weekdays: "ch\u1EE7 nh\u1EADt_th\u1EE9 hai_th\u1EE9 ba_th\u1EE9 t\u01B0_th\u1EE9 n\u0103m_th\u1EE9 s\xE1u_th\u1EE9 b\u1EA3y".split("_"), months: "th\xE1ng 1_th\xE1ng 2_th\xE1ng 3_th\xE1ng 4_th\xE1ng 5_th\xE1ng 6_th\xE1ng 7_th\xE1ng 8_th\xE1ng 9_th\xE1ng 10_th\xE1ng 11_th\xE1ng 12".split("_"), weekStart: 1, weekdaysShort: "CN_T2_T3_T4_T5_T6_T7".split("_"), monthsShort: "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"), weekdaysMin: "CN_T2_T3_T4_T5_T6_T7".split("_"), ordinal: function(t3) {
+ return t3;
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM [n\u0103m] YYYY", LLL: "D MMMM [n\u0103m] YYYY HH:mm", LLLL: "dddd, D MMMM [n\u0103m] YYYY HH:mm", l: "DD/M/YYYY", ll: "D MMM YYYY", lll: "D MMM YYYY HH:mm", llll: "ddd, D MMM YYYY HH:mm"}, relativeTime: {future: "%s t\u1EDBi", past: "%s tr\u01B0\u1EDBc", s: "v\xE0i gi\xE2y", m: "m\u1ED9t ph\xFAt", mm: "%d ph\xFAt", h: "m\u1ED9t gi\u1EDD", hh: "%d gi\u1EDD", d: "m\u1ED9t ng\xE0y", dd: "%d ng\xE0y", M: "m\u1ED9t th\xE1ng", MM: "%d th\xE1ng", y: "m\u1ED9t n\u0103m", yy: "%d n\u0103m"}};
+ return h.default.locale(_, null, true), _;
+ });
+});
+
+// node_modules/dayjs/locale/zh-cn.js
+var require_zh_cn = __commonJS((exports, module) => {
+ !function(e2, _) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = _(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], _) : (e2 = typeof globalThis != "undefined" ? globalThis : e2 || self).dayjs_locale_zh_cn = _(e2.dayjs);
+ }(exports, function(e2) {
+ "use strict";
+ function _(e3) {
+ return e3 && typeof e3 == "object" && "default" in e3 ? e3 : {default: e3};
+ }
+ var t2 = _(e2), d = {name: "zh-cn", weekdays: "\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"), weekdaysShort: "\u5468\u65E5_\u5468\u4E00_\u5468\u4E8C_\u5468\u4E09_\u5468\u56DB_\u5468\u4E94_\u5468\u516D".split("_"), weekdaysMin: "\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"), months: "\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"), monthsShort: "1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"), ordinal: function(e3, _2) {
+ return _2 === "W" ? e3 + "\u5468" : e3 + "\u65E5";
+ }, weekStart: 1, yearStart: 4, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY\u5E74M\u6708D\u65E5", LLL: "YYYY\u5E74M\u6708D\u65E5Ah\u70B9mm\u5206", LLLL: "YYYY\u5E74M\u6708D\u65E5ddddAh\u70B9mm\u5206", l: "YYYY/M/D", ll: "YYYY\u5E74M\u6708D\u65E5", lll: "YYYY\u5E74M\u6708D\u65E5 HH:mm", llll: "YYYY\u5E74M\u6708D\u65E5dddd HH:mm"}, relativeTime: {future: "%s\u5185", past: "%s\u524D", s: "\u51E0\u79D2", m: "1 \u5206\u949F", mm: "%d \u5206\u949F", h: "1 \u5C0F\u65F6", hh: "%d \u5C0F\u65F6", d: "1 \u5929", dd: "%d \u5929", M: "1 \u4E2A\u6708", MM: "%d \u4E2A\u6708", y: "1 \u5E74", yy: "%d \u5E74"}, meridiem: function(e3, _2) {
+ var t3 = 100 * e3 + _2;
+ return t3 < 600 ? "\u51CC\u6668" : t3 < 900 ? "\u65E9\u4E0A" : t3 < 1100 ? "\u4E0A\u5348" : t3 < 1300 ? "\u4E2D\u5348" : t3 < 1800 ? "\u4E0B\u5348" : "\u665A\u4E0A";
+ }};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/dayjs/locale/zh-tw.js
+var require_zh_tw = __commonJS((exports, module) => {
+ !function(_, e2) {
+ typeof exports == "object" && typeof module != "undefined" ? module.exports = e2(require_dayjs_min()) : typeof define == "function" && define.amd ? define(["dayjs"], e2) : (_ = typeof globalThis != "undefined" ? globalThis : _ || self).dayjs_locale_zh_tw = e2(_.dayjs);
+ }(exports, function(_) {
+ "use strict";
+ function e2(_2) {
+ return _2 && typeof _2 == "object" && "default" in _2 ? _2 : {default: _2};
+ }
+ var t2 = e2(_), d = {name: "zh-tw", weekdays: "\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"), weekdaysShort: "\u9031\u65E5_\u9031\u4E00_\u9031\u4E8C_\u9031\u4E09_\u9031\u56DB_\u9031\u4E94_\u9031\u516D".split("_"), weekdaysMin: "\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"), months: "\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"), monthsShort: "1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"), ordinal: function(_2, e3) {
+ return e3 === "W" ? _2 + "\u9031" : _2 + "\u65E5";
+ }, formats: {LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY\u5E74M\u6708D\u65E5", LLL: "YYYY\u5E74M\u6708D\u65E5 HH:mm", LLLL: "YYYY\u5E74M\u6708D\u65E5dddd HH:mm", l: "YYYY/M/D", ll: "YYYY\u5E74M\u6708D\u65E5", lll: "YYYY\u5E74M\u6708D\u65E5 HH:mm", llll: "YYYY\u5E74M\u6708D\u65E5dddd HH:mm"}, relativeTime: {future: "%s\u5167", past: "%s\u524D", s: "\u5E7E\u79D2", m: "1 \u5206\u9418", mm: "%d \u5206\u9418", h: "1 \u5C0F\u6642", hh: "%d \u5C0F\u6642", d: "1 \u5929", dd: "%d \u5929", M: "1 \u500B\u6708", MM: "%d \u500B\u6708", y: "1 \u5E74", yy: "%d \u5E74"}};
+ return t2.default.locale(d, null, true), d;
+ });
+});
+
+// node_modules/trix/dist/trix.js
+var require_trix = __commonJS((exports, module) => {
+ (function() {
+ }).call(exports), function() {
+ var t2;
+ window.Set == null && (window.Set = t2 = function() {
+ function t3() {
+ this.clear();
+ }
+ return t3.prototype.clear = function() {
+ return this.values = [];
+ }, t3.prototype.has = function(t4) {
+ return this.values.indexOf(t4) !== -1;
+ }, t3.prototype.add = function(t4) {
+ return this.has(t4) || this.values.push(t4), this;
+ }, t3.prototype["delete"] = function(t4) {
+ var e2;
+ return (e2 = this.values.indexOf(t4)) === -1 ? false : (this.values.splice(e2, 1), true);
+ }, t3.prototype.forEach = function() {
+ var t4;
+ return (t4 = this.values).forEach.apply(t4, arguments);
+ }, t3;
+ }());
+ }.call(exports), function(t2) {
+ function e2() {
+ }
+ function n2(t3, e3) {
+ return function() {
+ t3.apply(e3, arguments);
+ };
+ }
+ function i(t3) {
+ if (typeof this != "object")
+ throw new TypeError("Promises must be constructed via new");
+ if (typeof t3 != "function")
+ throw new TypeError("not a function");
+ this._state = 0, this._handled = false, this._value = void 0, this._deferreds = [], c2(t3, this);
+ }
+ function o2(t3, e3) {
+ for (; t3._state === 3; )
+ t3 = t3._value;
+ return t3._state === 0 ? void t3._deferreds.push(e3) : (t3._handled = true, void h(function() {
+ var n3 = t3._state === 1 ? e3.onFulfilled : e3.onRejected;
+ if (n3 === null)
+ return void (t3._state === 1 ? r2 : s2)(e3.promise, t3._value);
+ var i2;
+ try {
+ i2 = n3(t3._value);
+ } catch (o3) {
+ return void s2(e3.promise, o3);
+ }
+ r2(e3.promise, i2);
+ }));
+ }
+ function r2(t3, e3) {
+ try {
+ if (e3 === t3)
+ throw new TypeError("A promise cannot be resolved with itself.");
+ if (e3 && (typeof e3 == "object" || typeof e3 == "function")) {
+ var o3 = e3.then;
+ if (e3 instanceof i)
+ return t3._state = 3, t3._value = e3, void a2(t3);
+ if (typeof o3 == "function")
+ return void c2(n2(o3, e3), t3);
+ }
+ t3._state = 1, t3._value = e3, a2(t3);
+ } catch (r3) {
+ s2(t3, r3);
+ }
+ }
+ function s2(t3, e3) {
+ t3._state = 2, t3._value = e3, a2(t3);
+ }
+ function a2(t3) {
+ t3._state === 2 && t3._deferreds.length === 0 && setTimeout(function() {
+ t3._handled || p2(t3._value);
+ }, 1);
+ for (var e3 = 0, n3 = t3._deferreds.length; n3 > e3; e3++)
+ o2(t3, t3._deferreds[e3]);
+ t3._deferreds = null;
+ }
+ function u(t3, e3, n3) {
+ this.onFulfilled = typeof t3 == "function" ? t3 : null, this.onRejected = typeof e3 == "function" ? e3 : null, this.promise = n3;
+ }
+ function c2(t3, e3) {
+ var n3 = false;
+ try {
+ t3(function(t4) {
+ n3 || (n3 = true, r2(e3, t4));
+ }, function(t4) {
+ n3 || (n3 = true, s2(e3, t4));
+ });
+ } catch (i2) {
+ if (n3)
+ return;
+ n3 = true, s2(e3, i2);
+ }
+ }
+ var l = setTimeout, h = typeof setImmediate == "function" && setImmediate || function(t3) {
+ l(t3, 1);
+ }, p2 = function(t3) {
+ typeof console != "undefined" && console && console.warn("Possible Unhandled Promise Rejection:", t3);
+ };
+ i.prototype["catch"] = function(t3) {
+ return this.then(null, t3);
+ }, i.prototype.then = function(t3, n3) {
+ var r3 = new i(e2);
+ return o2(this, new u(t3, n3, r3)), r3;
+ }, i.all = function(t3) {
+ var e3 = Array.prototype.slice.call(t3);
+ return new i(function(t4, n3) {
+ function i2(r4, s3) {
+ try {
+ if (s3 && (typeof s3 == "object" || typeof s3 == "function")) {
+ var a3 = s3.then;
+ if (typeof a3 == "function")
+ return void a3.call(s3, function(t5) {
+ i2(r4, t5);
+ }, n3);
+ }
+ e3[r4] = s3, --o3 === 0 && t4(e3);
+ } catch (u2) {
+ n3(u2);
+ }
+ }
+ if (e3.length === 0)
+ return t4([]);
+ for (var o3 = e3.length, r3 = 0; r3 < e3.length; r3++)
+ i2(r3, e3[r3]);
+ });
+ }, i.resolve = function(t3) {
+ return t3 && typeof t3 == "object" && t3.constructor === i ? t3 : new i(function(e3) {
+ e3(t3);
+ });
+ }, i.reject = function(t3) {
+ return new i(function(e3, n3) {
+ n3(t3);
+ });
+ }, i.race = function(t3) {
+ return new i(function(e3, n3) {
+ for (var i2 = 0, o3 = t3.length; o3 > i2; i2++)
+ t3[i2].then(e3, n3);
+ });
+ }, i._setImmediateFn = function(t3) {
+ h = t3;
+ }, i._setUnhandledRejectionFn = function(t3) {
+ p2 = t3;
+ }, typeof module != "undefined" && module.exports ? module.exports = i : t2.Promise || (t2.Promise = i);
+ }(exports), function() {
+ var t2 = typeof window.customElements == "object", e2 = typeof document.registerElement == "function", n2 = t2 || e2;
+ n2 || (typeof WeakMap == "undefined" && !function() {
+ var t3 = Object.defineProperty, e3 = Date.now() % 1e9, n3 = function() {
+ this.name = "__st" + (1e9 * Math.random() >>> 0) + (e3++ + "__");
+ };
+ n3.prototype = {set: function(e4, n4) {
+ var i = e4[this.name];
+ return i && i[0] === e4 ? i[1] = n4 : t3(e4, this.name, {value: [e4, n4], writable: true}), this;
+ }, get: function(t4) {
+ var e4;
+ return (e4 = t4[this.name]) && e4[0] === t4 ? e4[1] : void 0;
+ }, delete: function(t4) {
+ var e4 = t4[this.name];
+ return e4 && e4[0] === t4 ? (e4[0] = e4[1] = void 0, true) : false;
+ }, has: function(t4) {
+ var e4 = t4[this.name];
+ return e4 ? e4[0] === t4 : false;
+ }}, window.WeakMap = n3;
+ }(), function(t3) {
+ function e3(t4) {
+ A.push(t4), b || (b = true, g(i));
+ }
+ function n3(t4) {
+ return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(t4) || t4;
+ }
+ function i() {
+ b = false;
+ var t4 = A;
+ A = [], t4.sort(function(t5, e5) {
+ return t5.uid_ - e5.uid_;
+ });
+ var e4 = false;
+ t4.forEach(function(t5) {
+ var n4 = t5.takeRecords();
+ o2(t5), n4.length && (t5.callback_(n4, t5), e4 = true);
+ }), e4 && i();
+ }
+ function o2(t4) {
+ t4.nodes_.forEach(function(e4) {
+ var n4 = m.get(e4);
+ n4 && n4.forEach(function(e5) {
+ e5.observer === t4 && e5.removeTransientObservers();
+ });
+ });
+ }
+ function r2(t4, e4) {
+ for (var n4 = t4; n4; n4 = n4.parentNode) {
+ var i2 = m.get(n4);
+ if (i2)
+ for (var o3 = 0; o3 < i2.length; o3++) {
+ var r3 = i2[o3], s3 = r3.options;
+ if (n4 === t4 || s3.subtree) {
+ var a3 = e4(s3);
+ a3 && r3.enqueue(a3);
+ }
+ }
+ }
+ }
+ function s2(t4) {
+ this.callback_ = t4, this.nodes_ = [], this.records_ = [], this.uid_ = ++C3;
+ }
+ function a2(t4, e4) {
+ this.type = t4, this.target = e4, this.addedNodes = [], this.removedNodes = [], this.previousSibling = null, this.nextSibling = null, this.attributeName = null, this.attributeNamespace = null, this.oldValue = null;
+ }
+ function u(t4) {
+ var e4 = new a2(t4.type, t4.target);
+ return e4.addedNodes = t4.addedNodes.slice(), e4.removedNodes = t4.removedNodes.slice(), e4.previousSibling = t4.previousSibling, e4.nextSibling = t4.nextSibling, e4.attributeName = t4.attributeName, e4.attributeNamespace = t4.attributeNamespace, e4.oldValue = t4.oldValue, e4;
+ }
+ function c2(t4, e4) {
+ return x = new a2(t4, e4);
+ }
+ function l(t4) {
+ return w ? w : (w = u(x), w.oldValue = t4, w);
+ }
+ function h() {
+ x = w = void 0;
+ }
+ function p2(t4) {
+ return t4 === w || t4 === x;
+ }
+ function d(t4, e4) {
+ return t4 === e4 ? t4 : w && p2(t4) ? w : null;
+ }
+ function f(t4, e4, n4) {
+ this.observer = t4, this.target = e4, this.options = n4, this.transientObservedNodes = [];
+ }
+ if (!t3.JsMutationObserver) {
+ var g, m = new WeakMap();
+ if (/Trident|Edge/.test(navigator.userAgent))
+ g = setTimeout;
+ else if (window.setImmediate)
+ g = window.setImmediate;
+ else {
+ var v = [], y = String(Math.random());
+ window.addEventListener("message", function(t4) {
+ if (t4.data === y) {
+ var e4 = v;
+ v = [], e4.forEach(function(t5) {
+ t5();
+ });
+ }
+ }), g = function(t4) {
+ v.push(t4), window.postMessage(y, "*");
+ };
+ }
+ var b = false, A = [], C3 = 0;
+ s2.prototype = {observe: function(t4, e4) {
+ if (t4 = n3(t4), !e4.childList && !e4.attributes && !e4.characterData || e4.attributeOldValue && !e4.attributes || e4.attributeFilter && e4.attributeFilter.length && !e4.attributes || e4.characterDataOldValue && !e4.characterData)
+ throw new SyntaxError();
+ var i2 = m.get(t4);
+ i2 || m.set(t4, i2 = []);
+ for (var o3, r3 = 0; r3 < i2.length; r3++)
+ if (i2[r3].observer === this) {
+ o3 = i2[r3], o3.removeListeners(), o3.options = e4;
+ break;
+ }
+ o3 || (o3 = new f(this, t4, e4), i2.push(o3), this.nodes_.push(t4)), o3.addListeners();
+ }, disconnect: function() {
+ this.nodes_.forEach(function(t4) {
+ for (var e4 = m.get(t4), n4 = 0; n4 < e4.length; n4++) {
+ var i2 = e4[n4];
+ if (i2.observer === this) {
+ i2.removeListeners(), e4.splice(n4, 1);
+ break;
+ }
+ }
+ }, this), this.records_ = [];
+ }, takeRecords: function() {
+ var t4 = this.records_;
+ return this.records_ = [], t4;
+ }};
+ var x, w;
+ f.prototype = {enqueue: function(t4) {
+ var n4 = this.observer.records_, i2 = n4.length;
+ if (n4.length > 0) {
+ var o3 = n4[i2 - 1], r3 = d(o3, t4);
+ if (r3)
+ return void (n4[i2 - 1] = r3);
+ } else
+ e3(this.observer);
+ n4[i2] = t4;
+ }, addListeners: function() {
+ this.addListeners_(this.target);
+ }, addListeners_: function(t4) {
+ var e4 = this.options;
+ e4.attributes && t4.addEventListener("DOMAttrModified", this, true), e4.characterData && t4.addEventListener("DOMCharacterDataModified", this, true), e4.childList && t4.addEventListener("DOMNodeInserted", this, true), (e4.childList || e4.subtree) && t4.addEventListener("DOMNodeRemoved", this, true);
+ }, removeListeners: function() {
+ this.removeListeners_(this.target);
+ }, removeListeners_: function(t4) {
+ var e4 = this.options;
+ e4.attributes && t4.removeEventListener("DOMAttrModified", this, true), e4.characterData && t4.removeEventListener("DOMCharacterDataModified", this, true), e4.childList && t4.removeEventListener("DOMNodeInserted", this, true), (e4.childList || e4.subtree) && t4.removeEventListener("DOMNodeRemoved", this, true);
+ }, addTransientObserver: function(t4) {
+ if (t4 !== this.target) {
+ this.addListeners_(t4), this.transientObservedNodes.push(t4);
+ var e4 = m.get(t4);
+ e4 || m.set(t4, e4 = []), e4.push(this);
+ }
+ }, removeTransientObservers: function() {
+ var t4 = this.transientObservedNodes;
+ this.transientObservedNodes = [], t4.forEach(function(t5) {
+ this.removeListeners_(t5);
+ for (var e4 = m.get(t5), n4 = 0; n4 < e4.length; n4++)
+ if (e4[n4] === this) {
+ e4.splice(n4, 1);
+ break;
+ }
+ }, this);
+ }, handleEvent: function(t4) {
+ switch (t4.stopImmediatePropagation(), t4.type) {
+ case "DOMAttrModified":
+ var e4 = t4.attrName, n4 = t4.relatedNode.namespaceURI, i2 = t4.target, o3 = new c2("attributes", i2);
+ o3.attributeName = e4, o3.attributeNamespace = n4;
+ var s3 = t4.attrChange === MutationEvent.ADDITION ? null : t4.prevValue;
+ r2(i2, function(t5) {
+ return !t5.attributes || t5.attributeFilter && t5.attributeFilter.length && t5.attributeFilter.indexOf(e4) === -1 && t5.attributeFilter.indexOf(n4) === -1 ? void 0 : t5.attributeOldValue ? l(s3) : o3;
+ });
+ break;
+ case "DOMCharacterDataModified":
+ var i2 = t4.target, o3 = c2("characterData", i2), s3 = t4.prevValue;
+ r2(i2, function(t5) {
+ return t5.characterData ? t5.characterDataOldValue ? l(s3) : o3 : void 0;
+ });
+ break;
+ case "DOMNodeRemoved":
+ this.addTransientObserver(t4.target);
+ case "DOMNodeInserted":
+ var a3, u2, p3 = t4.target;
+ t4.type === "DOMNodeInserted" ? (a3 = [p3], u2 = []) : (a3 = [], u2 = [p3]);
+ var d2 = p3.previousSibling, f2 = p3.nextSibling, o3 = c2("childList", t4.target.parentNode);
+ o3.addedNodes = a3, o3.removedNodes = u2, o3.previousSibling = d2, o3.nextSibling = f2, r2(t4.relatedNode, function(t5) {
+ return t5.childList ? o3 : void 0;
+ });
+ }
+ h();
+ }}, t3.JsMutationObserver = s2, t3.MutationObserver || (t3.MutationObserver = s2, s2._isPolyfilled = true);
+ }
+ }(self), function() {
+ "use strict";
+ if (!window.performance || !window.performance.now) {
+ var t3 = Date.now();
+ window.performance = {now: function() {
+ return Date.now() - t3;
+ }};
+ }
+ window.requestAnimationFrame || (window.requestAnimationFrame = function() {
+ var t4 = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;
+ return t4 ? function(e4) {
+ return t4(function() {
+ e4(performance.now());
+ });
+ } : function(t5) {
+ return window.setTimeout(t5, 1e3 / 60);
+ };
+ }()), window.cancelAnimationFrame || (window.cancelAnimationFrame = function() {
+ return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(t4) {
+ clearTimeout(t4);
+ };
+ }());
+ var e3 = function() {
+ var t4 = document.createEvent("Event");
+ return t4.initEvent("foo", true, true), t4.preventDefault(), t4.defaultPrevented;
+ }();
+ if (!e3) {
+ var n3 = Event.prototype.preventDefault;
+ Event.prototype.preventDefault = function() {
+ this.cancelable && (n3.call(this), Object.defineProperty(this, "defaultPrevented", {get: function() {
+ return true;
+ }, configurable: true}));
+ };
+ }
+ var i = /Trident/.test(navigator.userAgent);
+ if ((!window.CustomEvent || i && typeof window.CustomEvent != "function") && (window.CustomEvent = function(t4, e4) {
+ e4 = e4 || {};
+ var n4 = document.createEvent("CustomEvent");
+ return n4.initCustomEvent(t4, Boolean(e4.bubbles), Boolean(e4.cancelable), e4.detail), n4;
+ }, window.CustomEvent.prototype = window.Event.prototype), !window.Event || i && typeof window.Event != "function") {
+ var o2 = window.Event;
+ window.Event = function(t4, e4) {
+ e4 = e4 || {};
+ var n4 = document.createEvent("Event");
+ return n4.initEvent(t4, Boolean(e4.bubbles), Boolean(e4.cancelable)), n4;
+ }, window.Event.prototype = o2.prototype;
+ }
+ }(window.WebComponents), window.CustomElements = window.CustomElements || {flags: {}}, function(t3) {
+ var e3 = t3.flags, n3 = [], i = function(t4) {
+ n3.push(t4);
+ }, o2 = function() {
+ n3.forEach(function(e4) {
+ e4(t3);
+ });
+ };
+ t3.addModule = i, t3.initializeModules = o2, t3.hasNative = Boolean(document.registerElement), t3.isIE = /Trident/.test(navigator.userAgent), t3.useNative = !e3.register && t3.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);
+ }(window.CustomElements), window.CustomElements.addModule(function(t3) {
+ function e3(t4, e4) {
+ n3(t4, function(t5) {
+ return e4(t5) ? true : void i(t5, e4);
+ }), i(t4, e4);
+ }
+ function n3(t4, e4, i2) {
+ var o3 = t4.firstElementChild;
+ if (!o3)
+ for (o3 = t4.firstChild; o3 && o3.nodeType !== Node.ELEMENT_NODE; )
+ o3 = o3.nextSibling;
+ for (; o3; )
+ e4(o3, i2) !== true && n3(o3, e4, i2), o3 = o3.nextElementSibling;
+ return null;
+ }
+ function i(t4, n4) {
+ for (var i2 = t4.shadowRoot; i2; )
+ e3(i2, n4), i2 = i2.olderShadowRoot;
+ }
+ function o2(t4, e4) {
+ r2(t4, e4, []);
+ }
+ function r2(t4, e4, n4) {
+ if (t4 = window.wrap(t4), !(n4.indexOf(t4) >= 0)) {
+ n4.push(t4);
+ for (var i2, o3 = t4.querySelectorAll("link[rel=" + s2 + "]"), a2 = 0, u = o3.length; u > a2 && (i2 = o3[a2]); a2++)
+ i2.import && r2(i2.import, e4, n4);
+ e4(t4);
+ }
+ }
+ var s2 = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none";
+ t3.forDocumentTree = o2, t3.forSubtree = e3;
+ }), window.CustomElements.addModule(function(t3) {
+ function e3(t4, e4) {
+ return n3(t4, e4) || i(t4, e4);
+ }
+ function n3(e4, n4) {
+ return t3.upgrade(e4, n4) ? true : void (n4 && s2(e4));
+ }
+ function i(t4, e4) {
+ b(t4, function(t5) {
+ return n3(t5, e4) ? true : void 0;
+ });
+ }
+ function o2(t4) {
+ w.push(t4), x || (x = true, setTimeout(r2));
+ }
+ function r2() {
+ x = false;
+ for (var t4, e4 = w, n4 = 0, i2 = e4.length; i2 > n4 && (t4 = e4[n4]); n4++)
+ t4();
+ w = [];
+ }
+ function s2(t4) {
+ C3 ? o2(function() {
+ a2(t4);
+ }) : a2(t4);
+ }
+ function a2(t4) {
+ t4.__upgraded__ && !t4.__attached && (t4.__attached = true, t4.attachedCallback && t4.attachedCallback());
+ }
+ function u(t4) {
+ c2(t4), b(t4, function(t5) {
+ c2(t5);
+ });
+ }
+ function c2(t4) {
+ C3 ? o2(function() {
+ l(t4);
+ }) : l(t4);
+ }
+ function l(t4) {
+ t4.__upgraded__ && t4.__attached && (t4.__attached = false, t4.detachedCallback && t4.detachedCallback());
+ }
+ function h(t4) {
+ for (var e4 = t4, n4 = window.wrap(document); e4; ) {
+ if (e4 == n4)
+ return true;
+ e4 = e4.parentNode || e4.nodeType === Node.DOCUMENT_FRAGMENT_NODE && e4.host;
+ }
+ }
+ function p2(t4) {
+ if (t4.shadowRoot && !t4.shadowRoot.__watched) {
+ y.dom && console.log("watching shadow-root for: ", t4.localName);
+ for (var e4 = t4.shadowRoot; e4; )
+ g(e4), e4 = e4.olderShadowRoot;
+ }
+ }
+ function d(t4, n4) {
+ if (y.dom) {
+ var i2 = n4[0];
+ if (i2 && i2.type === "childList" && i2.addedNodes && i2.addedNodes) {
+ for (var o3 = i2.addedNodes[0]; o3 && o3 !== document && !o3.host; )
+ o3 = o3.parentNode;
+ var r3 = o3 && (o3.URL || o3._URL || o3.host && o3.host.localName) || "";
+ r3 = r3.split("/?").shift().split("/").pop();
+ }
+ console.group("mutations (%d) [%s]", n4.length, r3 || "");
+ }
+ var s3 = h(t4);
+ n4.forEach(function(t5) {
+ t5.type === "childList" && (E(t5.addedNodes, function(t6) {
+ t6.localName && e3(t6, s3);
+ }), E(t5.removedNodes, function(t6) {
+ t6.localName && u(t6);
+ }));
+ }), y.dom && console.groupEnd();
+ }
+ function f(t4) {
+ for (t4 = window.wrap(t4), t4 || (t4 = window.wrap(document)); t4.parentNode; )
+ t4 = t4.parentNode;
+ var e4 = t4.__observer;
+ e4 && (d(t4, e4.takeRecords()), r2());
+ }
+ function g(t4) {
+ if (!t4.__observer) {
+ var e4 = new MutationObserver(d.bind(this, t4));
+ e4.observe(t4, {childList: true, subtree: true}), t4.__observer = e4;
+ }
+ }
+ function m(t4) {
+ t4 = window.wrap(t4), y.dom && console.group("upgradeDocument: ", t4.baseURI.split("/").pop());
+ var n4 = t4 === window.wrap(document);
+ e3(t4, n4), g(t4), y.dom && console.groupEnd();
+ }
+ function v(t4) {
+ A(t4, m);
+ }
+ var y = t3.flags, b = t3.forSubtree, A = t3.forDocumentTree, C3 = window.MutationObserver._isPolyfilled && y["throttle-attached"];
+ t3.hasPolyfillMutations = C3, t3.hasThrottledAttached = C3;
+ var x = false, w = [], E = Array.prototype.forEach.call.bind(Array.prototype.forEach), S2 = Element.prototype.createShadowRoot;
+ S2 && (Element.prototype.createShadowRoot = function() {
+ var t4 = S2.call(this);
+ return window.CustomElements.watchShadow(this), t4;
+ }), t3.watchShadow = p2, t3.upgradeDocumentTree = v, t3.upgradeDocument = m, t3.upgradeSubtree = i, t3.upgradeAll = e3, t3.attached = s2, t3.takeRecords = f;
+ }), window.CustomElements.addModule(function(t3) {
+ function e3(e4, i2) {
+ if (e4.localName === "template" && window.HTMLTemplateElement && HTMLTemplateElement.decorate && HTMLTemplateElement.decorate(e4), !e4.__upgraded__ && e4.nodeType === Node.ELEMENT_NODE) {
+ var o3 = e4.getAttribute("is"), r3 = t3.getRegisteredDefinition(e4.localName) || t3.getRegisteredDefinition(o3);
+ if (r3 && (o3 && r3.tag == e4.localName || !o3 && !r3.extends))
+ return n3(e4, r3, i2);
+ }
+ }
+ function n3(e4, n4, o3) {
+ return s2.upgrade && console.group("upgrade:", e4.localName), n4.is && e4.setAttribute("is", n4.is), i(e4, n4), e4.__upgraded__ = true, r2(e4), o3 && t3.attached(e4), t3.upgradeSubtree(e4, o3), s2.upgrade && console.groupEnd(), e4;
+ }
+ function i(t4, e4) {
+ Object.__proto__ ? t4.__proto__ = e4.prototype : (o2(t4, e4.prototype, e4.native), t4.__proto__ = e4.prototype);
+ }
+ function o2(t4, e4, n4) {
+ for (var i2 = {}, o3 = e4; o3 !== n4 && o3 !== HTMLElement.prototype; ) {
+ for (var r3, s3 = Object.getOwnPropertyNames(o3), a2 = 0; r3 = s3[a2]; a2++)
+ i2[r3] || (Object.defineProperty(t4, r3, Object.getOwnPropertyDescriptor(o3, r3)), i2[r3] = 1);
+ o3 = Object.getPrototypeOf(o3);
+ }
+ }
+ function r2(t4) {
+ t4.createdCallback && t4.createdCallback();
+ }
+ var s2 = t3.flags;
+ t3.upgrade = e3, t3.upgradeWithDefinition = n3, t3.implementPrototype = i;
+ }), window.CustomElements.addModule(function(t3) {
+ function e3(e4, i2) {
+ var u2 = i2 || {};
+ if (!e4)
+ throw new Error("document.registerElement: first argument `name` must not be empty");
+ if (e4.indexOf("-") < 0)
+ throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(e4) + "'.");
+ if (o2(e4))
+ throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(e4) + "'. The type name is invalid.");
+ if (c2(e4))
+ throw new Error("DuplicateDefinitionError: a type with name '" + String(e4) + "' is already registered");
+ return u2.prototype || (u2.prototype = Object.create(HTMLElement.prototype)), u2.__name = e4.toLowerCase(), u2.extends && (u2.extends = u2.extends.toLowerCase()), u2.lifecycle = u2.lifecycle || {}, u2.ancestry = r2(u2.extends), s2(u2), a2(u2), n3(u2.prototype), l(u2.__name, u2), u2.ctor = h(u2), u2.ctor.prototype = u2.prototype, u2.prototype.constructor = u2.ctor, t3.ready && m(document), u2.ctor;
+ }
+ function n3(t4) {
+ if (!t4.setAttribute._polyfilled) {
+ var e4 = t4.setAttribute;
+ t4.setAttribute = function(t5, n5) {
+ i.call(this, t5, n5, e4);
+ };
+ var n4 = t4.removeAttribute;
+ t4.removeAttribute = function(t5) {
+ i.call(this, t5, null, n4);
+ }, t4.setAttribute._polyfilled = true;
+ }
+ }
+ function i(t4, e4, n4) {
+ t4 = t4.toLowerCase();
+ var i2 = this.getAttribute(t4);
+ n4.apply(this, arguments);
+ var o3 = this.getAttribute(t4);
+ this.attributeChangedCallback && o3 !== i2 && this.attributeChangedCallback(t4, i2, o3);
+ }
+ function o2(t4) {
+ for (var e4 = 0; e4 < C3.length; e4++)
+ if (t4 === C3[e4])
+ return true;
+ }
+ function r2(t4) {
+ var e4 = c2(t4);
+ return e4 ? r2(e4.extends).concat([e4]) : [];
+ }
+ function s2(t4) {
+ for (var e4, n4 = t4.extends, i2 = 0; e4 = t4.ancestry[i2]; i2++)
+ n4 = e4.is && e4.tag;
+ t4.tag = n4 || t4.__name, n4 && (t4.is = t4.__name);
+ }
+ function a2(t4) {
+ if (!Object.__proto__) {
+ var e4 = HTMLElement.prototype;
+ if (t4.is) {
+ var n4 = document.createElement(t4.tag);
+ e4 = Object.getPrototypeOf(n4);
+ }
+ for (var i2, o3 = t4.prototype, r3 = false; o3; )
+ o3 == e4 && (r3 = true), i2 = Object.getPrototypeOf(o3), i2 && (o3.__proto__ = i2), o3 = i2;
+ r3 || console.warn(t4.tag + " prototype not found in prototype chain for " + t4.is), t4.native = e4;
+ }
+ }
+ function u(t4) {
+ return y(E(t4.tag), t4);
+ }
+ function c2(t4) {
+ return t4 ? x[t4.toLowerCase()] : void 0;
+ }
+ function l(t4, e4) {
+ x[t4] = e4;
+ }
+ function h(t4) {
+ return function() {
+ return u(t4);
+ };
+ }
+ function p2(t4, e4, n4) {
+ return t4 === w ? d(e4, n4) : S2(t4, e4);
+ }
+ function d(t4, e4) {
+ t4 && (t4 = t4.toLowerCase()), e4 && (e4 = e4.toLowerCase());
+ var n4 = c2(e4 || t4);
+ if (n4) {
+ if (t4 == n4.tag && e4 == n4.is)
+ return new n4.ctor();
+ if (!e4 && !n4.is)
+ return new n4.ctor();
+ }
+ var i2;
+ return e4 ? (i2 = d(t4), i2.setAttribute("is", e4), i2) : (i2 = E(t4), t4.indexOf("-") >= 0 && b(i2, HTMLElement), i2);
+ }
+ function f(t4, e4) {
+ var n4 = t4[e4];
+ t4[e4] = function() {
+ var t5 = n4.apply(this, arguments);
+ return v(t5), t5;
+ };
+ }
+ var g, m = (t3.isIE, t3.upgradeDocumentTree), v = t3.upgradeAll, y = t3.upgradeWithDefinition, b = t3.implementPrototype, A = t3.useNative, C3 = ["annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph"], x = {}, w = "http://www.w3.org/1999/xhtml", E = document.createElement.bind(document), S2 = document.createElementNS.bind(document);
+ g = Object.__proto__ || A ? function(t4, e4) {
+ return t4 instanceof e4;
+ } : function(t4, e4) {
+ if (t4 instanceof e4)
+ return true;
+ for (var n4 = t4; n4; ) {
+ if (n4 === e4.prototype)
+ return true;
+ n4 = n4.__proto__;
+ }
+ return false;
+ }, f(Node.prototype, "cloneNode"), f(document, "importNode"), document.registerElement = e3, document.createElement = d, document.createElementNS = p2, t3.registry = x, t3.instanceof = g, t3.reservedTagList = C3, t3.getRegisteredDefinition = c2, document.register = document.registerElement;
+ }), function(t3) {
+ function e3() {
+ r2(window.wrap(document)), window.CustomElements.ready = true;
+ var t4 = window.requestAnimationFrame || function(t5) {
+ setTimeout(t5, 16);
+ };
+ t4(function() {
+ setTimeout(function() {
+ window.CustomElements.readyTime = Date.now(), window.HTMLImports && (window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime), document.dispatchEvent(new CustomEvent("WebComponentsReady", {bubbles: true}));
+ });
+ });
+ }
+ var n3 = t3.useNative, i = t3.initializeModules;
+ if (t3.isIE, n3) {
+ var o2 = function() {
+ };
+ t3.watchShadow = o2, t3.upgrade = o2, t3.upgradeAll = o2, t3.upgradeDocumentTree = o2, t3.upgradeSubtree = o2, t3.takeRecords = o2, t3.instanceof = function(t4, e4) {
+ return t4 instanceof e4;
+ };
+ } else
+ i();
+ var r2 = t3.upgradeDocumentTree, s2 = t3.upgradeDocument;
+ if (window.wrap || (window.ShadowDOMPolyfill ? (window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded, window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded) : window.wrap = window.unwrap = function(t4) {
+ return t4;
+ }), window.HTMLImports && (window.HTMLImports.__importsParsingHook = function(t4) {
+ t4.import && s2(wrap(t4.import));
+ }), document.readyState === "complete" || t3.flags.eager)
+ e3();
+ else if (document.readyState !== "interactive" || window.attachEvent || window.HTMLImports && !window.HTMLImports.ready) {
+ var a2 = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded";
+ window.addEventListener(a2, e3);
+ } else
+ e3();
+ }(window.CustomElements));
+ }.call(exports), function() {
+ }.call(exports), function() {
+ var t2 = this;
+ (function() {
+ (function() {
+ this.Trix = {VERSION: "1.3.1", ZERO_WIDTH_SPACE: "\uFEFF", NON_BREAKING_SPACE: "\xA0", OBJECT_REPLACEMENT_CHARACTER: "\uFFFC", browser: {composesExistingText: /Android.*Chrome/.test(navigator.userAgent), forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent), supportsInputEvents: function() {
+ var t3, e3, n2, i;
+ if (typeof InputEvent == "undefined")
+ return false;
+ for (i = ["data", "getTargetRanges", "inputType"], t3 = 0, e3 = i.length; e3 > t3; t3++)
+ if (n2 = i[t3], !(n2 in InputEvent.prototype))
+ return false;
+ return true;
+ }()}, config: {}};
+ }).call(this);
+ }).call(t2);
+ var e2 = t2.Trix;
+ (function() {
+ (function() {
+ e2.BasicObject = function() {
+ function t3() {
+ }
+ var e3, n2, i;
+ return t3.proxyMethod = function(t4) {
+ var i2, o2, r2, s2, a2;
+ return r2 = n2(t4), i2 = r2.name, s2 = r2.toMethod, a2 = r2.toProperty, o2 = r2.optional, this.prototype[i2] = function() {
+ var t5, n3;
+ return t5 = s2 != null ? o2 ? typeof this[s2] == "function" ? this[s2]() : void 0 : this[s2]() : a2 != null ? this[a2] : void 0, o2 ? (n3 = t5 != null ? t5[i2] : void 0, n3 != null ? e3.call(n3, t5, arguments) : void 0) : (n3 = t5[i2], e3.call(n3, t5, arguments));
+ };
+ }, n2 = function(t4) {
+ var e4, n3;
+ if (!(n3 = t4.match(i)))
+ throw new Error("can't parse @proxyMethod expression: " + t4);
+ return e4 = {name: n3[4]}, n3[2] != null ? e4.toMethod = n3[1] : e4.toProperty = n3[1], n3[3] != null && (e4.optional = true), e4;
+ }, e3 = Function.prototype.apply, i = /^(.+?)(\(\))?(\?)?\.(.+?)$/, t3;
+ }();
+ }).call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.Object = function(n3) {
+ function i() {
+ this.id = ++o2;
+ }
+ var o2;
+ return t3(i, n3), o2 = 0, i.fromJSONString = function(t4) {
+ return this.fromJSON(JSON.parse(t4));
+ }, i.prototype.hasSameConstructorAs = function(t4) {
+ return this.constructor === (t4 != null ? t4.constructor : void 0);
+ }, i.prototype.isEqualTo = function(t4) {
+ return this === t4;
+ }, i.prototype.inspect = function() {
+ var t4, e3, n4;
+ return t4 = function() {
+ var t5, i2, o3;
+ i2 = (t5 = this.contentsForInspection()) != null ? t5 : {}, o3 = [];
+ for (e3 in i2)
+ n4 = i2[e3], o3.push(e3 + "=" + n4);
+ return o3;
+ }.call(this), "#<" + this.constructor.name + ":" + this.id + (t4.length ? " " + t4.join(", ") : "") + ">";
+ }, i.prototype.contentsForInspection = function() {
+ }, i.prototype.toJSONString = function() {
+ return JSON.stringify(this);
+ }, i.prototype.toUTF16String = function() {
+ return e2.UTF16String.box(this);
+ }, i.prototype.getCacheKey = function() {
+ return this.id.toString();
+ }, i;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ e2.extend = function(t3) {
+ var e3, n2;
+ for (e3 in t3)
+ n2 = t3[e3], this[e3] = n2;
+ return this;
+ };
+ }.call(this), function() {
+ e2.extend({defer: function(t3) {
+ return setTimeout(t3, 1);
+ }});
+ }.call(this), function() {
+ var t3, n2;
+ e2.extend({normalizeSpaces: function(t4) {
+ return t4.replace(RegExp("" + e2.ZERO_WIDTH_SPACE, "g"), "").replace(RegExp("" + e2.NON_BREAKING_SPACE, "g"), " ");
+ }, normalizeNewlines: function(t4) {
+ return t4.replace(/\r\n/g, "\n");
+ }, breakableWhitespacePattern: RegExp("[^\\S" + e2.NON_BREAKING_SPACE + "]"), squishBreakableWhitespace: function(t4) {
+ return t4.replace(RegExp("" + e2.breakableWhitespacePattern.source, "g"), " ").replace(/\ {2,}/g, " ");
+ }, summarizeStringChange: function(t4, i) {
+ var o2, r2, s2, a2;
+ return t4 = e2.UTF16String.box(t4), i = e2.UTF16String.box(i), i.length < t4.length ? (r2 = n2(t4, i), a2 = r2[0], o2 = r2[1]) : (s2 = n2(i, t4), o2 = s2[0], a2 = s2[1]), {added: o2, removed: a2};
+ }}), n2 = function(n3, i) {
+ var o2, r2, s2, a2, u;
+ return n3.isEqualTo(i) ? ["", ""] : (r2 = t3(n3, i), a2 = r2.utf16String.length, s2 = a2 ? (u = r2.offset, r2, o2 = n3.codepoints.slice(0, u).concat(n3.codepoints.slice(u + a2)), t3(i, e2.UTF16String.fromCodepoints(o2))) : t3(i, n3), [r2.utf16String.toString(), s2.utf16String.toString()]);
+ }, t3 = function(t4, e3) {
+ var n3, i, o2;
+ for (n3 = 0, i = t4.length, o2 = e3.length; i > n3 && t4.charAt(n3).isEqualTo(e3.charAt(n3)); )
+ n3++;
+ for (; i > n3 + 1 && t4.charAt(i - 1).isEqualTo(e3.charAt(o2 - 1)); )
+ i--, o2--;
+ return {utf16String: t4.slice(n3, i), offset: n3};
+ };
+ }.call(this), function() {
+ e2.extend({copyObject: function(t3) {
+ var e3, n2, i;
+ t3 == null && (t3 = {}), n2 = {};
+ for (e3 in t3)
+ i = t3[e3], n2[e3] = i;
+ return n2;
+ }, objectsAreEqual: function(t3, e3) {
+ var n2, i;
+ if (t3 == null && (t3 = {}), e3 == null && (e3 = {}), Object.keys(t3).length !== Object.keys(e3).length)
+ return false;
+ for (n2 in t3)
+ if (i = t3[n2], i !== e3[n2])
+ return false;
+ return true;
+ }});
+ }.call(this), function() {
+ var t3 = [].slice;
+ e2.extend({arraysAreEqual: function(t4, e3) {
+ var n2, i, o2, r2;
+ if (t4 == null && (t4 = []), e3 == null && (e3 = []), t4.length !== e3.length)
+ return false;
+ for (i = n2 = 0, o2 = t4.length; o2 > n2; i = ++n2)
+ if (r2 = t4[i], r2 !== e3[i])
+ return false;
+ return true;
+ }, arrayStartsWith: function(t4, n2) {
+ return t4 == null && (t4 = []), n2 == null && (n2 = []), e2.arraysAreEqual(t4.slice(0, n2.length), n2);
+ }, spliceArray: function() {
+ var e3, n2, i;
+ return n2 = arguments[0], e3 = 2 <= arguments.length ? t3.call(arguments, 1) : [], i = n2.slice(0), i.splice.apply(i, e3), i;
+ }, summarizeArrayChange: function(t4, e3) {
+ var n2, i, o2, r2, s2, a2, u, c2, l, h, p2;
+ for (t4 == null && (t4 = []), e3 == null && (e3 = []), n2 = [], h = [], o2 = new Set(), r2 = 0, u = t4.length; u > r2; r2++)
+ p2 = t4[r2], o2.add(p2);
+ for (i = new Set(), s2 = 0, c2 = e3.length; c2 > s2; s2++)
+ p2 = e3[s2], i.add(p2), o2.has(p2) || n2.push(p2);
+ for (a2 = 0, l = t4.length; l > a2; a2++)
+ p2 = t4[a2], i.has(p2) || h.push(p2);
+ return {added: n2, removed: h};
+ }});
+ }.call(this), function() {
+ var t3, n2, i, o2;
+ t3 = null, n2 = null, o2 = null, i = null, e2.extend({getAllAttributeNames: function() {
+ return t3 != null ? t3 : t3 = e2.getTextAttributeNames().concat(e2.getBlockAttributeNames());
+ }, getBlockConfig: function(t4) {
+ return e2.config.blockAttributes[t4];
+ }, getBlockAttributeNames: function() {
+ return n2 != null ? n2 : n2 = Object.keys(e2.config.blockAttributes);
+ }, getTextConfig: function(t4) {
+ return e2.config.textAttributes[t4];
+ }, getTextAttributeNames: function() {
+ return o2 != null ? o2 : o2 = Object.keys(e2.config.textAttributes);
+ }, getListAttributeNames: function() {
+ var t4, n3;
+ return i != null ? i : i = function() {
+ var i2, o3;
+ i2 = e2.config.blockAttributes, o3 = [];
+ for (t4 in i2)
+ n3 = i2[t4].listAttribute, n3 != null && o3.push(n3);
+ return o3;
+ }();
+ }});
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2 = [].indexOf || function(t4) {
+ for (var e3 = 0, n3 = this.length; n3 > e3; e3++)
+ if (e3 in this && this[e3] === t4)
+ return e3;
+ return -1;
+ };
+ t3 = document.documentElement, n2 = (i = (o2 = (r2 = t3.matchesSelector) != null ? r2 : t3.webkitMatchesSelector) != null ? o2 : t3.msMatchesSelector) != null ? i : t3.mozMatchesSelector, e2.extend({handleEvent: function(n3, i2) {
+ var o3, r3, s3, a2, u, c2, l, h, p2, d, f, g;
+ return h = i2 != null ? i2 : {}, c2 = h.onElement, u = h.matchingSelector, g = h.withCallback, a2 = h.inPhase, l = h.preventDefault, d = h.times, r3 = c2 != null ? c2 : t3, p2 = u, o3 = g, f = a2 === "capturing", s3 = function(t4) {
+ var n4;
+ return d != null && --d === 0 && s3.destroy(), n4 = e2.findClosestElementFromNode(t4.target, {matchingSelector: p2}), n4 != null && (g != null && g.call(n4, t4, n4), l) ? t4.preventDefault() : void 0;
+ }, s3.destroy = function() {
+ return r3.removeEventListener(n3, s3, f);
+ }, r3.addEventListener(n3, s3, f), s3;
+ }, handleEventOnce: function(t4, n3) {
+ return n3 == null && (n3 = {}), n3.times = 1, e2.handleEvent(t4, n3);
+ }, triggerEvent: function(n3, i2) {
+ var o3, r3, s3, a2, u, c2, l;
+ return l = i2 != null ? i2 : {}, c2 = l.onElement, r3 = l.bubbles, s3 = l.cancelable, o3 = l.attributes, a2 = c2 != null ? c2 : t3, r3 = r3 !== false, s3 = s3 !== false, u = document.createEvent("Events"), u.initEvent(n3, r3, s3), o3 != null && e2.extend.call(u, o3), a2.dispatchEvent(u);
+ }, elementMatchesSelector: function(t4, e3) {
+ return (t4 != null ? t4.nodeType : void 0) === 1 ? n2.call(t4, e3) : void 0;
+ }, findClosestElementFromNode: function(t4, n3) {
+ var i2, o3, r3;
+ for (o3 = n3 != null ? n3 : {}, i2 = o3.matchingSelector, r3 = o3.untilNode; t4 != null && t4.nodeType !== Node.ELEMENT_NODE; )
+ t4 = t4.parentNode;
+ if (t4 != null) {
+ if (i2 == null)
+ return t4;
+ if (t4.closest && r3 == null)
+ return t4.closest(i2);
+ for (; t4 && t4 !== r3; ) {
+ if (e2.elementMatchesSelector(t4, i2))
+ return t4;
+ t4 = t4.parentNode;
+ }
+ }
+ }, findInnerElement: function(t4) {
+ for (; t4 != null ? t4.firstElementChild : void 0; )
+ t4 = t4.firstElementChild;
+ return t4;
+ }, innerElementIsActive: function(t4) {
+ return document.activeElement !== t4 && e2.elementContainsNode(t4, document.activeElement);
+ }, elementContainsNode: function(t4, e3) {
+ if (t4 && e3)
+ for (; e3; ) {
+ if (e3 === t4)
+ return true;
+ e3 = e3.parentNode;
+ }
+ }, findNodeFromContainerAndOffset: function(t4, e3) {
+ var n3;
+ if (t4)
+ return t4.nodeType === Node.TEXT_NODE ? t4 : e3 === 0 ? (n3 = t4.firstChild) != null ? n3 : t4 : t4.childNodes.item(e3 - 1);
+ }, findElementFromContainerAndOffset: function(t4, n3) {
+ var i2;
+ return i2 = e2.findNodeFromContainerAndOffset(t4, n3), e2.findClosestElementFromNode(i2);
+ }, findChildIndexOfNode: function(t4) {
+ var e3;
+ if (t4 != null ? t4.parentNode : void 0) {
+ for (e3 = 0; t4 = t4.previousSibling; )
+ e3++;
+ return e3;
+ }
+ }, removeNode: function(t4) {
+ var e3;
+ return t4 != null && (e3 = t4.parentNode) != null ? e3.removeChild(t4) : void 0;
+ }, walkTree: function(t4, e3) {
+ var n3, i2, o3, r3, s3;
+ return o3 = e3 != null ? e3 : {}, i2 = o3.onlyNodesOfType, r3 = o3.usingFilter, n3 = o3.expandEntityReferences, s3 = function() {
+ switch (i2) {
+ case "element":
+ return NodeFilter.SHOW_ELEMENT;
+ case "text":
+ return NodeFilter.SHOW_TEXT;
+ case "comment":
+ return NodeFilter.SHOW_COMMENT;
+ default:
+ return NodeFilter.SHOW_ALL;
+ }
+ }(), document.createTreeWalker(t4, s3, r3 != null ? r3 : null, n3 === true);
+ }, tagName: function(t4) {
+ var e3;
+ return t4 != null && (e3 = t4.tagName) != null ? e3.toLowerCase() : void 0;
+ }, makeElement: function(t4, e3) {
+ var n3, i2, o3, r3, s3, a2, u, c2, l, h, p2, d, f, g;
+ if (e3 == null && (e3 = {}), typeof t4 == "object" ? (e3 = t4, t4 = e3.tagName) : e3 = {attributes: e3}, o3 = document.createElement(t4), e3.editable != null && (e3.attributes == null && (e3.attributes = {}), e3.attributes.contenteditable = e3.editable), e3.attributes) {
+ l = e3.attributes;
+ for (a2 in l)
+ g = l[a2], o3.setAttribute(a2, g);
+ }
+ if (e3.style) {
+ h = e3.style;
+ for (a2 in h)
+ g = h[a2], o3.style[a2] = g;
+ }
+ if (e3.data) {
+ p2 = e3.data;
+ for (a2 in p2)
+ g = p2[a2], o3.dataset[a2] = g;
+ }
+ if (e3.className)
+ for (d = e3.className.split(" "), r3 = 0, u = d.length; u > r3; r3++)
+ i2 = d[r3], o3.classList.add(i2);
+ if (e3.textContent && (o3.textContent = e3.textContent), e3.childNodes)
+ for (f = [].concat(e3.childNodes), s3 = 0, c2 = f.length; c2 > s3; s3++)
+ n3 = f[s3], o3.appendChild(n3);
+ return o3;
+ }, getBlockTagNames: function() {
+ var t4, n3;
+ return e2.blockTagNames != null ? e2.blockTagNames : e2.blockTagNames = function() {
+ var i2, o3;
+ i2 = e2.config.blockAttributes, o3 = [];
+ for (t4 in i2)
+ n3 = i2[t4].tagName, n3 && o3.push(n3);
+ return o3;
+ }();
+ }, nodeIsBlockContainer: function(t4) {
+ return e2.nodeIsBlockStartComment(t4 != null ? t4.firstChild : void 0);
+ }, nodeProbablyIsBlockContainer: function(t4) {
+ var n3, i2;
+ return n3 = e2.tagName(t4), s2.call(e2.getBlockTagNames(), n3) >= 0 && (i2 = e2.tagName(t4.firstChild), s2.call(e2.getBlockTagNames(), i2) < 0);
+ }, nodeIsBlockStart: function(t4, n3) {
+ var i2;
+ return i2 = (n3 != null ? n3 : {strict: true}).strict, i2 ? e2.nodeIsBlockStartComment(t4) : e2.nodeIsBlockStartComment(t4) || !e2.nodeIsBlockStartComment(t4.firstChild) && e2.nodeProbablyIsBlockContainer(t4);
+ }, nodeIsBlockStartComment: function(t4) {
+ return e2.nodeIsCommentNode(t4) && (t4 != null ? t4.data : void 0) === "block";
+ }, nodeIsCommentNode: function(t4) {
+ return (t4 != null ? t4.nodeType : void 0) === Node.COMMENT_NODE;
+ }, nodeIsCursorTarget: function(t4, n3) {
+ var i2;
+ return i2 = (n3 != null ? n3 : {}).name, t4 ? e2.nodeIsTextNode(t4) ? t4.data === e2.ZERO_WIDTH_SPACE ? i2 ? t4.parentNode.dataset.trixCursorTarget === i2 : true : void 0 : e2.nodeIsCursorTarget(t4.firstChild) : void 0;
+ }, nodeIsAttachmentElement: function(t4) {
+ return e2.elementMatchesSelector(t4, e2.AttachmentView.attachmentSelector);
+ }, nodeIsEmptyTextNode: function(t4) {
+ return e2.nodeIsTextNode(t4) && (t4 != null ? t4.data : void 0) === "";
+ }, nodeIsTextNode: function(t4) {
+ return (t4 != null ? t4.nodeType : void 0) === Node.TEXT_NODE;
+ }});
+ }.call(this), function() {
+ var t3, n2, i, o2, r2;
+ t3 = e2.copyObject, o2 = e2.objectsAreEqual, e2.extend({normalizeRange: i = function(t4) {
+ var e3;
+ if (t4 != null)
+ return Array.isArray(t4) || (t4 = [t4, t4]), [n2(t4[0]), n2((e3 = t4[1]) != null ? e3 : t4[0])];
+ }, rangeIsCollapsed: function(t4) {
+ var e3, n3, o3;
+ if (t4 != null)
+ return n3 = i(t4), o3 = n3[0], e3 = n3[1], r2(o3, e3);
+ }, rangesAreEqual: function(t4, e3) {
+ var n3, o3, s2, a2, u, c2;
+ if (t4 != null && e3 != null)
+ return s2 = i(t4), o3 = s2[0], n3 = s2[1], a2 = i(e3), c2 = a2[0], u = a2[1], r2(o3, c2) && r2(n3, u);
+ }}), n2 = function(e3) {
+ return typeof e3 == "number" ? e3 : t3(e3);
+ }, r2 = function(t4, e3) {
+ return typeof t4 == "number" ? t4 === e3 : o2(t4, e3);
+ };
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2, a2;
+ e2.registerElement = function(t4, e3) {
+ var n3, i2;
+ return e3 == null && (e3 = {}), t4 = t4.toLowerCase(), e3 = a2(e3), i2 = s2(e3), (n3 = i2.defaultCSS) && (delete i2.defaultCSS, o2(n3, t4)), r2(t4, i2);
+ }, o2 = function(t4, e3) {
+ var n3;
+ return n3 = i(e3), n3.textContent = t4.replace(/%t/g, e3);
+ }, i = function(e3) {
+ var n3, i2;
+ return n3 = document.createElement("style"), n3.setAttribute("type", "text/css"), n3.setAttribute("data-tag-name", e3.toLowerCase()), (i2 = t3()) && n3.setAttribute("nonce", i2), document.head.insertBefore(n3, document.head.firstChild), n3;
+ }, t3 = function() {
+ var t4;
+ return (t4 = n2("trix-csp-nonce") || n2("csp-nonce")) ? t4.getAttribute("content") : void 0;
+ }, n2 = function(t4) {
+ return document.head.querySelector("meta[name=" + t4 + "]");
+ }, s2 = function(t4) {
+ var e3, n3, i2;
+ n3 = {};
+ for (e3 in t4)
+ i2 = t4[e3], n3[e3] = typeof i2 == "function" ? {value: i2} : i2;
+ return n3;
+ }, a2 = function() {
+ var t4;
+ return t4 = function(t5) {
+ var e3, n3, i2, o3, r3;
+ for (e3 = {}, r3 = ["initialize", "connect", "disconnect"], n3 = 0, o3 = r3.length; o3 > n3; n3++)
+ i2 = r3[n3], e3[i2] = t5[i2], delete t5[i2];
+ return e3;
+ }, window.customElements ? function(e3) {
+ var n3, i2, o3, r3, s3;
+ return s3 = t4(e3), o3 = s3.initialize, n3 = s3.connect, i2 = s3.disconnect, o3 && (r3 = n3, n3 = function() {
+ return this.initialized || (this.initialized = true, o3.call(this)), r3 != null ? r3.call(this) : void 0;
+ }), n3 && (e3.connectedCallback = n3), i2 && (e3.disconnectedCallback = i2), e3;
+ } : function(e3) {
+ var n3, i2, o3, r3;
+ return r3 = t4(e3), o3 = r3.initialize, n3 = r3.connect, i2 = r3.disconnect, o3 && (e3.createdCallback = o3), n3 && (e3.attachedCallback = n3), i2 && (e3.detachedCallback = i2), e3;
+ };
+ }(), r2 = function() {
+ return window.customElements ? function(t4, e3) {
+ var n3;
+ return n3 = function() {
+ return typeof Reflect == "object" ? Reflect.construct(HTMLElement, [], n3) : HTMLElement.apply(this);
+ }, Object.setPrototypeOf(n3.prototype, HTMLElement.prototype), Object.setPrototypeOf(n3, HTMLElement), Object.defineProperties(n3.prototype, e3), window.customElements.define(t4, n3), n3;
+ } : function(t4, e3) {
+ var n3, i2;
+ return i2 = Object.create(HTMLElement.prototype, e3), n3 = document.registerElement(t4, {prototype: i2}), Object.defineProperty(i2, "constructor", {value: n3}), n3;
+ };
+ }();
+ }.call(this), function() {
+ var t3, n2;
+ e2.extend({getDOMSelection: function() {
+ var t4;
+ return t4 = window.getSelection(), t4.rangeCount > 0 ? t4 : void 0;
+ }, getDOMRange: function() {
+ var n3, i;
+ return (n3 = (i = e2.getDOMSelection()) != null ? i.getRangeAt(0) : void 0) && !t3(n3) ? n3 : void 0;
+ }, setDOMRange: function(t4) {
+ var n3;
+ return n3 = window.getSelection(), n3.removeAllRanges(), n3.addRange(t4), e2.selectionChangeObserver.update();
+ }}), t3 = function(t4) {
+ return n2(t4.startContainer) || n2(t4.endContainer);
+ }, n2 = function(t4) {
+ return !Object.getPrototypeOf(t4);
+ };
+ }.call(this), function() {
+ var t3;
+ t3 = {"application/x-trix-feature-detection": "test"}, e2.extend({dataTransferIsPlainText: function(t4) {
+ var e3, n2, i;
+ return i = t4.getData("text/plain"), n2 = t4.getData("text/html"), i && n2 ? (e3 = new DOMParser().parseFromString(n2, "text/html").body, e3.textContent === i ? !e3.querySelector("*") : void 0) : i != null ? i.length : void 0;
+ }, dataTransferIsWritable: function(e3) {
+ var n2, i;
+ if ((e3 != null ? e3.setData : void 0) != null) {
+ for (n2 in t3)
+ if (i = t3[n2], !function() {
+ try {
+ return e3.setData(n2, i), e3.getData(n2) === i;
+ } catch (t4) {
+ }
+ }())
+ return;
+ return true;
+ }
+ }, keyEventIsKeyboardCommand: function() {
+ return /Mac|^iP/.test(navigator.platform) ? function(t4) {
+ return t4.metaKey;
+ } : function(t4) {
+ return t4.ctrlKey;
+ };
+ }()});
+ }.call(this), function() {
+ e2.extend({RTL_PATTERN: /[\u05BE\u05C0\u05C3\u05D0-\u05EA\u05F0-\u05F4\u061B\u061F\u0621-\u063A\u0640-\u064A\u066D\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D5\u06E5\u06E6\u200F\u202B\u202E\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE72\uFE74\uFE76-\uFEFC]/, getDirection: function() {
+ var t3, n2, i, o2;
+ return n2 = e2.makeElement("input", {dir: "auto", name: "x", dirName: "x.dir"}), t3 = e2.makeElement("form"), t3.appendChild(n2), i = function() {
+ try {
+ return new FormData(t3).has(n2.dirName);
+ } catch (e3) {
+ }
+ }(), o2 = function() {
+ try {
+ return n2.matches(":dir(ltr),:dir(rtl)");
+ } catch (t4) {
+ }
+ }(), i ? function(e3) {
+ return n2.value = e3, new FormData(t3).get(n2.dirName);
+ } : o2 ? function(t4) {
+ return n2.value = t4, n2.matches(":dir(rtl)") ? "rtl" : "ltr";
+ } : function(t4) {
+ var n3;
+ return n3 = t4.trim().charAt(0), e2.RTL_PATTERN.test(n3) ? "rtl" : "ltr";
+ };
+ }()});
+ }.call(this), function() {
+ }.call(this), function() {
+ var t3, n2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ i.call(e3, o2) && (t4[o2] = e3[o2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, i = {}.hasOwnProperty;
+ t3 = e2.arraysAreEqual, e2.Hash = function(i2) {
+ function o2(t4) {
+ t4 == null && (t4 = {}), this.values = s2(t4), o2.__super__.constructor.apply(this, arguments);
+ }
+ var r2, s2, a2, u, c2;
+ return n2(o2, i2), o2.fromCommonAttributesOfObjects = function(t4) {
+ var e3, n3, i3, o3, s3, a3;
+ if (t4 == null && (t4 = []), !t4.length)
+ return new this();
+ for (e3 = r2(t4[0]), i3 = e3.getKeys(), a3 = t4.slice(1), n3 = 0, o3 = a3.length; o3 > n3; n3++)
+ s3 = a3[n3], i3 = e3.getKeysCommonToHash(r2(s3)), e3 = e3.slice(i3);
+ return e3;
+ }, o2.box = function(t4) {
+ return r2(t4);
+ }, o2.prototype.add = function(t4, e3) {
+ return this.merge(u(t4, e3));
+ }, o2.prototype.remove = function(t4) {
+ return new e2.Hash(s2(this.values, t4));
+ }, o2.prototype.get = function(t4) {
+ return this.values[t4];
+ }, o2.prototype.has = function(t4) {
+ return t4 in this.values;
+ }, o2.prototype.merge = function(t4) {
+ return new e2.Hash(a2(this.values, c2(t4)));
+ }, o2.prototype.slice = function(t4) {
+ var n3, i3, o3, r3;
+ for (r3 = {}, n3 = 0, o3 = t4.length; o3 > n3; n3++)
+ i3 = t4[n3], this.has(i3) && (r3[i3] = this.values[i3]);
+ return new e2.Hash(r3);
+ }, o2.prototype.getKeys = function() {
+ return Object.keys(this.values);
+ }, o2.prototype.getKeysCommonToHash = function(t4) {
+ var e3, n3, i3, o3, s3;
+ for (t4 = r2(t4), o3 = this.getKeys(), s3 = [], e3 = 0, i3 = o3.length; i3 > e3; e3++)
+ n3 = o3[e3], this.values[n3] === t4.values[n3] && s3.push(n3);
+ return s3;
+ }, o2.prototype.isEqualTo = function(e3) {
+ return t3(this.toArray(), r2(e3).toArray());
+ }, o2.prototype.isEmpty = function() {
+ return this.getKeys().length === 0;
+ }, o2.prototype.toArray = function() {
+ var t4, e3, n3;
+ return (this.array != null ? this.array : this.array = function() {
+ var i3;
+ e3 = [], i3 = this.values;
+ for (t4 in i3)
+ n3 = i3[t4], e3.push(t4, n3);
+ return e3;
+ }.call(this)).slice(0);
+ }, o2.prototype.toObject = function() {
+ return s2(this.values);
+ }, o2.prototype.toJSON = function() {
+ return this.toObject();
+ }, o2.prototype.contentsForInspection = function() {
+ return {values: JSON.stringify(this.values)};
+ }, u = function(t4, e3) {
+ var n3;
+ return n3 = {}, n3[t4] = e3, n3;
+ }, a2 = function(t4, e3) {
+ var n3, i3, o3;
+ i3 = s2(t4);
+ for (n3 in e3)
+ o3 = e3[n3], i3[n3] = o3;
+ return i3;
+ }, s2 = function(t4, e3) {
+ var n3, i3, o3, r3, s3;
+ for (r3 = {}, s3 = Object.keys(t4).sort(), n3 = 0, o3 = s3.length; o3 > n3; n3++)
+ i3 = s3[n3], i3 !== e3 && (r3[i3] = t4[i3]);
+ return r3;
+ }, r2 = function(t4) {
+ return t4 instanceof e2.Hash ? t4 : new e2.Hash(t4);
+ }, c2 = function(t4) {
+ return t4 instanceof e2.Hash ? t4.values : t4;
+ }, o2;
+ }(e2.Object);
+ }.call(this), function() {
+ e2.ObjectGroup = function() {
+ function t3(t4, e3) {
+ var n2, i;
+ this.objects = t4 != null ? t4 : [], i = e3.depth, n2 = e3.asTree, n2 && (this.depth = i, this.objects = this.constructor.groupObjects(this.objects, {asTree: n2, depth: this.depth + 1}));
+ }
+ return t3.groupObjects = function(t4, e3) {
+ var n2, i, o2, r2, s2, a2, u, c2, l;
+ for (t4 == null && (t4 = []), l = e3 != null ? e3 : {}, o2 = l.depth, n2 = l.asTree, n2 && o2 == null && (o2 = 0), c2 = [], s2 = 0, a2 = t4.length; a2 > s2; s2++) {
+ if (u = t4[s2], r2) {
+ if ((typeof u.canBeGrouped == "function" ? u.canBeGrouped(o2) : void 0) && (typeof (i = r2[r2.length - 1]).canBeGroupedWith == "function" ? i.canBeGroupedWith(u, o2) : void 0)) {
+ r2.push(u);
+ continue;
+ }
+ c2.push(new this(r2, {depth: o2, asTree: n2})), r2 = null;
+ }
+ (typeof u.canBeGrouped == "function" ? u.canBeGrouped(o2) : void 0) ? r2 = [u] : c2.push(u);
+ }
+ return r2 && c2.push(new this(r2, {depth: o2, asTree: n2})), c2;
+ }, t3.prototype.getObjects = function() {
+ return this.objects;
+ }, t3.prototype.getDepth = function() {
+ return this.depth;
+ }, t3.prototype.getCacheKey = function() {
+ var t4, e3, n2, i, o2;
+ for (e3 = ["objectGroup"], o2 = this.getObjects(), t4 = 0, n2 = o2.length; n2 > t4; t4++)
+ i = o2[t4], e3.push(i.getCacheKey());
+ return e3.join("/");
+ }, t3;
+ }();
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.ObjectMap = function(e3) {
+ function n3(t4) {
+ var e4, n4, i, o2, r2;
+ for (t4 == null && (t4 = []), this.objects = {}, i = 0, o2 = t4.length; o2 > i; i++)
+ r2 = t4[i], n4 = JSON.stringify(r2), (e4 = this.objects)[n4] == null && (e4[n4] = r2);
+ }
+ return t3(n3, e3), n3.prototype.find = function(t4) {
+ var e4;
+ return e4 = JSON.stringify(t4), this.objects[e4];
+ }, n3;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ e2.ElementStore = function() {
+ function t3(t4) {
+ this.reset(t4);
+ }
+ var e3;
+ return t3.prototype.add = function(t4) {
+ var n2;
+ return n2 = e3(t4), this.elements[n2] = t4;
+ }, t3.prototype.remove = function(t4) {
+ var n2, i;
+ return n2 = e3(t4), (i = this.elements[n2]) ? (delete this.elements[n2], i) : void 0;
+ }, t3.prototype.reset = function(t4) {
+ var e4, n2, i;
+ for (t4 == null && (t4 = []), this.elements = {}, n2 = 0, i = t4.length; i > n2; n2++)
+ e4 = t4[n2], this.add(e4);
+ return t4;
+ }, e3 = function(t4) {
+ return t4.dataset.trixStoreKey;
+ }, t3;
+ }();
+ }.call(this), function() {
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.Operation = function(e3) {
+ function n3() {
+ return n3.__super__.constructor.apply(this, arguments);
+ }
+ return t3(n3, e3), n3.prototype.isPerforming = function() {
+ return this.performing === true;
+ }, n3.prototype.hasPerformed = function() {
+ return this.performed === true;
+ }, n3.prototype.hasSucceeded = function() {
+ return this.performed && this.succeeded;
+ }, n3.prototype.hasFailed = function() {
+ return this.performed && !this.succeeded;
+ }, n3.prototype.getPromise = function() {
+ return this.promise != null ? this.promise : this.promise = new Promise(function(t4) {
+ return function(e4, n4) {
+ return t4.performing = true, t4.perform(function(i, o2) {
+ return t4.succeeded = i, t4.performing = false, t4.performed = true, t4.succeeded ? e4(o2) : n4(o2);
+ });
+ };
+ }(this));
+ }, n3.prototype.perform = function(t4) {
+ return t4(false);
+ }, n3.prototype.release = function() {
+ var t4;
+ return (t4 = this.promise) != null && typeof t4.cancel == "function" && t4.cancel(), this.promise = null, this.performing = null, this.performed = null, this.succeeded = null;
+ }, n3.proxyMethod("getPromise().then"), n3.proxyMethod("getPromise().catch"), n3;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ a2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, a2 = {}.hasOwnProperty;
+ e2.UTF16String = function(t4) {
+ function e3(t5, e4) {
+ this.ucs2String = t5, this.codepoints = e4, this.length = this.codepoints.length, this.ucs2Length = this.ucs2String.length;
+ }
+ return s2(e3, t4), e3.box = function(t5) {
+ return t5 == null && (t5 = ""), t5 instanceof this ? t5 : this.fromUCS2String(t5 != null ? t5.toString() : void 0);
+ }, e3.fromUCS2String = function(t5) {
+ return new this(t5, o2(t5));
+ }, e3.fromCodepoints = function(t5) {
+ return new this(r2(t5), t5);
+ }, e3.prototype.offsetToUCS2Offset = function(t5) {
+ return r2(this.codepoints.slice(0, Math.max(0, t5))).length;
+ }, e3.prototype.offsetFromUCS2Offset = function(t5) {
+ return o2(this.ucs2String.slice(0, Math.max(0, t5))).length;
+ }, e3.prototype.slice = function() {
+ var t5;
+ return this.constructor.fromCodepoints((t5 = this.codepoints).slice.apply(t5, arguments));
+ }, e3.prototype.charAt = function(t5) {
+ return this.slice(t5, t5 + 1);
+ }, e3.prototype.isEqualTo = function(t5) {
+ return this.constructor.box(t5).ucs2String === this.ucs2String;
+ }, e3.prototype.toJSON = function() {
+ return this.ucs2String;
+ }, e3.prototype.getCacheKey = function() {
+ return this.ucs2String;
+ }, e3.prototype.toString = function() {
+ return this.ucs2String;
+ }, e3;
+ }(e2.BasicObject), t3 = (typeof Array.from == "function" ? Array.from("\u{1F47C}").length : void 0) === 1, n2 = (typeof " ".codePointAt == "function" ? " ".codePointAt(0) : void 0) != null, i = (typeof String.fromCodePoint == "function" ? String.fromCodePoint(32, 128124) : void 0) === " \u{1F47C}", o2 = t3 && n2 ? function(t4) {
+ return Array.from(t4).map(function(t5) {
+ return t5.codePointAt(0);
+ });
+ } : function(t4) {
+ var e3, n3, i2, o3, r3;
+ for (o3 = [], e3 = 0, i2 = t4.length; i2 > e3; )
+ r3 = t4.charCodeAt(e3++), r3 >= 55296 && 56319 >= r3 && i2 > e3 && (n3 = t4.charCodeAt(e3++), (64512 & n3) === 56320 ? r3 = ((1023 & r3) << 10) + (1023 & n3) + 65536 : e3--), o3.push(r3);
+ return o3;
+ }, r2 = i ? function(t4) {
+ return String.fromCodePoint.apply(String, t4);
+ } : function(t4) {
+ var e3, n3, i2;
+ return e3 = function() {
+ var e4, o3, r3;
+ for (r3 = [], e4 = 0, o3 = t4.length; o3 > e4; e4++)
+ i2 = t4[e4], n3 = "", i2 > 65535 && (i2 -= 65536, n3 += String.fromCharCode(i2 >>> 10 & 1023 | 55296), i2 = 56320 | 1023 & i2), r3.push(n3 + String.fromCharCode(i2));
+ return r3;
+ }(), e3.join("");
+ };
+ }.call(this), function() {
+ }.call(this), function() {
+ }.call(this), function() {
+ e2.config.lang = {attachFiles: "Attach Files", bold: "Bold", bullets: "Bullets", byte: "Byte", bytes: "Bytes", captionPlaceholder: "Add a caption\u2026", code: "Code", heading1: "Heading", indent: "Increase Level", italic: "Italic", link: "Link", numbers: "Numbers", outdent: "Decrease Level", quote: "Quote", redo: "Redo", remove: "Remove", strike: "Strikethrough", undo: "Undo", unlink: "Unlink", url: "URL", urlPlaceholder: "Enter a URL\u2026", GB: "GB", KB: "KB", MB: "MB", PB: "PB", TB: "TB"};
+ }.call(this), function() {
+ e2.config.css = {attachment: "attachment", attachmentCaption: "attachment__caption", attachmentCaptionEditor: "attachment__caption-editor", attachmentMetadata: "attachment__metadata", attachmentMetadataContainer: "attachment__metadata-container", attachmentName: "attachment__name", attachmentProgress: "attachment__progress", attachmentSize: "attachment__size", attachmentToolbar: "attachment__toolbar", attachmentGallery: "attachment-gallery"};
+ }.call(this), function() {
+ var t3;
+ e2.config.blockAttributes = t3 = {default: {tagName: "div", parse: false}, quote: {tagName: "blockquote", nestable: true}, heading1: {tagName: "h1", terminal: true, breakOnReturn: true, group: false}, code: {tagName: "pre", terminal: true, text: {plaintext: true}}, bulletList: {tagName: "ul", parse: false}, bullet: {tagName: "li", listAttribute: "bulletList", group: false, nestable: true, test: function(n2) {
+ return e2.tagName(n2.parentNode) === t3[this.listAttribute].tagName;
+ }}, numberList: {tagName: "ol", parse: false}, number: {tagName: "li", listAttribute: "numberList", group: false, nestable: true, test: function(n2) {
+ return e2.tagName(n2.parentNode) === t3[this.listAttribute].tagName;
+ }}, attachmentGallery: {tagName: "div", exclusive: true, terminal: true, parse: false, group: false}};
+ }.call(this), function() {
+ var t3, n2;
+ t3 = e2.config.lang, n2 = [t3.bytes, t3.KB, t3.MB, t3.GB, t3.TB, t3.PB], e2.config.fileSize = {prefix: "IEC", precision: 2, formatter: function(e3) {
+ var i, o2, r2, s2, a2;
+ switch (e3) {
+ case 0:
+ return "0 " + t3.bytes;
+ case 1:
+ return "1 " + t3.byte;
+ default:
+ return i = function() {
+ switch (this.prefix) {
+ case "SI":
+ return 1e3;
+ case "IEC":
+ return 1024;
+ }
+ }.call(this), o2 = Math.floor(Math.log(e3) / Math.log(i)), r2 = e3 / Math.pow(i, o2), s2 = r2.toFixed(this.precision), a2 = s2.replace(/0*$/, "").replace(/\.$/, ""), a2 + " " + n2[o2];
+ }
+ }};
+ }.call(this), function() {
+ e2.config.textAttributes = {bold: {tagName: "strong", inheritable: true, parser: function(t3) {
+ var e3;
+ return e3 = window.getComputedStyle(t3), e3.fontWeight === "bold" || e3.fontWeight >= 600;
+ }}, italic: {tagName: "em", inheritable: true, parser: function(t3) {
+ var e3;
+ return e3 = window.getComputedStyle(t3), e3.fontStyle === "italic";
+ }}, href: {groupTagName: "a", parser: function(t3) {
+ var n2, i, o2;
+ return n2 = e2.AttachmentView.attachmentSelector, o2 = "a:not(" + n2 + ")", (i = e2.findClosestElementFromNode(t3, {matchingSelector: o2})) ? i.getAttribute("href") : void 0;
+ }}, strike: {tagName: "del", inheritable: true}, frozen: {style: {backgroundColor: "highlight"}}};
+ }.call(this), function() {
+ var t3, n2, i, o2, r2;
+ r2 = "[data-trix-serialize=false]", o2 = ["contenteditable", "data-trix-id", "data-trix-store-key", "data-trix-mutable", "data-trix-placeholder", "tabindex"], n2 = "data-trix-serialized-attributes", i = "[" + n2 + "]", t3 = new RegExp("", "g"), e2.extend({serializers: {"application/json": function(t4) {
+ var n3;
+ if (t4 instanceof e2.Document)
+ n3 = t4;
+ else {
+ if (!(t4 instanceof HTMLElement))
+ throw new Error("unserializable object");
+ n3 = e2.Document.fromHTML(t4.innerHTML);
+ }
+ return n3.toSerializableDocument().toJSONString();
+ }, "text/html": function(s2) {
+ var a2, u, c2, l, h, p2, d, f, g, m, v, y, b, A, C3, x, w;
+ if (s2 instanceof e2.Document)
+ l = e2.DocumentView.render(s2);
+ else {
+ if (!(s2 instanceof HTMLElement))
+ throw new Error("unserializable object");
+ l = s2.cloneNode(true);
+ }
+ for (A = l.querySelectorAll(r2), h = 0, g = A.length; g > h; h++)
+ c2 = A[h], e2.removeNode(c2);
+ for (p2 = 0, m = o2.length; m > p2; p2++)
+ for (a2 = o2[p2], C3 = l.querySelectorAll("[" + a2 + "]"), d = 0, v = C3.length; v > d; d++)
+ c2 = C3[d], c2.removeAttribute(a2);
+ for (x = l.querySelectorAll(i), f = 0, y = x.length; y > f; f++) {
+ c2 = x[f];
+ try {
+ u = JSON.parse(c2.getAttribute(n2)), c2.removeAttribute(n2);
+ for (b in u)
+ w = u[b], c2.setAttribute(b, w);
+ } catch (E) {
+ }
+ }
+ return l.innerHTML.replace(t3, "");
+ }}, deserializers: {"application/json": function(t4) {
+ return e2.Document.fromJSONString(t4);
+ }, "text/html": function(t4) {
+ return e2.Document.fromHTML(t4);
+ }}, serializeToContentType: function(t4, n3) {
+ var i2;
+ if (i2 = e2.serializers[n3])
+ return i2(t4);
+ throw new Error("unknown content type: " + n3);
+ }, deserializeFromContentType: function(t4, n3) {
+ var i2;
+ if (i2 = e2.deserializers[n3])
+ return i2(t4);
+ throw new Error("unknown content type: " + n3);
+ }});
+ }.call(this), function() {
+ var t3;
+ t3 = e2.config.lang, e2.config.toolbar = {getDefaultHTML: function() {
+ return '\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n\n \n \n \n \n
\n\n';
+ }};
+ }.call(this), function() {
+ e2.config.undoInterval = 5e3;
+ }.call(this), function() {
+ e2.config.attachments = {preview: {presentation: "gallery", caption: {name: true, size: true}}, file: {caption: {size: true}}};
+ }.call(this), function() {
+ e2.config.keyNames = {8: "backspace", 9: "tab", 13: "return", 27: "escape", 37: "left", 39: "right", 46: "delete", 68: "d", 72: "h", 79: "o"};
+ }.call(this), function() {
+ e2.config.input = {level2Enabled: true, getLevel: function() {
+ return this.level2Enabled && e2.browser.supportsInputEvents ? 2 : 0;
+ }, pickFiles: function(t3) {
+ var n2;
+ return n2 = e2.makeElement("input", {type: "file", multiple: true, hidden: true, id: this.fileInputId}), n2.addEventListener("change", function() {
+ return t3(n2.files), e2.removeNode(n2);
+ }), e2.removeNode(document.getElementById(this.fileInputId)), document.body.appendChild(n2), n2.click();
+ }, fileInputId: "trix-file-input-" + Date.now().toString(16)};
+ }.call(this), function() {
+ }.call(this), function() {
+ e2.registerElement("trix-toolbar", {defaultCSS: "%t {\n display: block;\n}\n\n%t {\n white-space: nowrap;\n}\n\n%t [data-trix-dialog] {\n display: none;\n}\n\n%t [data-trix-dialog][data-trix-active] {\n display: block;\n}\n\n%t [data-trix-dialog] [data-trix-validate]:invalid {\n background-color: #ffdddd;\n}", initialize: function() {
+ return this.innerHTML === "" ? this.innerHTML = e2.config.toolbar.getDefaultHTML() : void 0;
+ }});
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i2() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i2.prototype = e3.prototype, t4.prototype = new i2(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty, i = [].indexOf || function(t4) {
+ for (var e3 = 0, n3 = this.length; n3 > e3; e3++)
+ if (e3 in this && this[e3] === t4)
+ return e3;
+ return -1;
+ };
+ e2.ObjectView = function(n3) {
+ function o2(t4, e3) {
+ this.object = t4, this.options = e3 != null ? e3 : {}, this.childViews = [], this.rootView = this;
+ }
+ return t3(o2, n3), o2.prototype.getNodes = function() {
+ var t4, e3, n4, i2, o3;
+ for (this.nodes == null && (this.nodes = this.createNodes()), i2 = this.nodes, o3 = [], t4 = 0, e3 = i2.length; e3 > t4; t4++)
+ n4 = i2[t4], o3.push(n4.cloneNode(true));
+ return o3;
+ }, o2.prototype.invalidate = function() {
+ var t4;
+ return this.nodes = null, this.childViews = [], (t4 = this.parentView) != null ? t4.invalidate() : void 0;
+ }, o2.prototype.invalidateViewForObject = function(t4) {
+ var e3;
+ return (e3 = this.findViewForObject(t4)) != null ? e3.invalidate() : void 0;
+ }, o2.prototype.findOrCreateCachedChildView = function(t4, e3) {
+ var n4;
+ return (n4 = this.getCachedViewForObject(e3)) ? this.recordChildView(n4) : (n4 = this.createChildView.apply(this, arguments), this.cacheViewForObject(n4, e3)), n4;
+ }, o2.prototype.createChildView = function(t4, n4, i2) {
+ var o3;
+ return i2 == null && (i2 = {}), n4 instanceof e2.ObjectGroup && (i2.viewClass = t4, t4 = e2.ObjectGroupView), o3 = new t4(n4, i2), this.recordChildView(o3);
+ }, o2.prototype.recordChildView = function(t4) {
+ return t4.parentView = this, t4.rootView = this.rootView, this.childViews.push(t4), t4;
+ }, o2.prototype.getAllChildViews = function() {
+ var t4, e3, n4, i2, o3;
+ for (o3 = [], i2 = this.childViews, e3 = 0, n4 = i2.length; n4 > e3; e3++)
+ t4 = i2[e3], o3.push(t4), o3 = o3.concat(t4.getAllChildViews());
+ return o3;
+ }, o2.prototype.findElement = function() {
+ return this.findElementForObject(this.object);
+ }, o2.prototype.findElementForObject = function(t4) {
+ var e3;
+ return (e3 = t4 != null ? t4.id : void 0) ? this.rootView.element.querySelector("[data-trix-id='" + e3 + "']") : void 0;
+ }, o2.prototype.findViewForObject = function(t4) {
+ var e3, n4, i2, o3;
+ for (i2 = this.getAllChildViews(), e3 = 0, n4 = i2.length; n4 > e3; e3++)
+ if (o3 = i2[e3], o3.object === t4)
+ return o3;
+ }, o2.prototype.getViewCache = function() {
+ return this.rootView !== this ? this.rootView.getViewCache() : this.isViewCachingEnabled() ? this.viewCache != null ? this.viewCache : this.viewCache = {} : void 0;
+ }, o2.prototype.isViewCachingEnabled = function() {
+ return this.shouldCacheViews !== false;
+ }, o2.prototype.enableViewCaching = function() {
+ return this.shouldCacheViews = true;
+ }, o2.prototype.disableViewCaching = function() {
+ return this.shouldCacheViews = false;
+ }, o2.prototype.getCachedViewForObject = function(t4) {
+ var e3;
+ return (e3 = this.getViewCache()) != null ? e3[t4.getCacheKey()] : void 0;
+ }, o2.prototype.cacheViewForObject = function(t4, e3) {
+ var n4;
+ return (n4 = this.getViewCache()) != null ? n4[e3.getCacheKey()] = t4 : void 0;
+ }, o2.prototype.garbageCollectCachedViews = function() {
+ var t4, e3, n4, o3, r2, s2;
+ if (t4 = this.getViewCache()) {
+ s2 = this.getAllChildViews().concat(this), n4 = function() {
+ var t5, e4, n5;
+ for (n5 = [], t5 = 0, e4 = s2.length; e4 > t5; t5++)
+ r2 = s2[t5], n5.push(r2.object.getCacheKey());
+ return n5;
+ }(), o3 = [];
+ for (e3 in t4)
+ i.call(n4, e3) < 0 && o3.push(delete t4[e3]);
+ return o3;
+ }
+ }, o2;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.ObjectGroupView = function(e3) {
+ function n3() {
+ n3.__super__.constructor.apply(this, arguments), this.objectGroup = this.object, this.viewClass = this.options.viewClass, delete this.options.viewClass;
+ }
+ return t3(n3, e3), n3.prototype.getChildViews = function() {
+ var t4, e4, n4, i;
+ if (!this.childViews.length)
+ for (i = this.objectGroup.getObjects(), t4 = 0, e4 = i.length; e4 > t4; t4++)
+ n4 = i[t4], this.findOrCreateCachedChildView(this.viewClass, n4, this.options);
+ return this.childViews;
+ }, n3.prototype.createNodes = function() {
+ var t4, e4, n4, i, o2, r2, s2, a2, u;
+ for (t4 = this.createContainerElement(), s2 = this.getChildViews(), e4 = 0, i = s2.length; i > e4; e4++)
+ for (u = s2[e4], a2 = u.getNodes(), n4 = 0, o2 = a2.length; o2 > n4; n4++)
+ r2 = a2[n4], t4.appendChild(r2);
+ return [t4];
+ }, n3.prototype.createContainerElement = function(t4) {
+ return t4 == null && (t4 = this.objectGroup.getDepth()), this.getChildViews()[0].createContainerElement(t4);
+ }, n3;
+ }(e2.ObjectView);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.Controller = function(e3) {
+ function n3() {
+ return n3.__super__.constructor.apply(this, arguments);
+ }
+ return t3(n3, e3), n3;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2, a2 = function(t4, e3) {
+ return function() {
+ return t4.apply(e3, arguments);
+ };
+ }, u = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ c2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, c2 = {}.hasOwnProperty, l = [].indexOf || function(t4) {
+ for (var e3 = 0, n3 = this.length; n3 > e3; e3++)
+ if (e3 in this && this[e3] === t4)
+ return e3;
+ return -1;
+ };
+ t3 = e2.findClosestElementFromNode, i = e2.nodeIsEmptyTextNode, n2 = e2.nodeIsBlockStartComment, o2 = e2.normalizeSpaces, r2 = e2.summarizeStringChange, s2 = e2.tagName, e2.MutationObserver = function(e3) {
+ function c3(t4) {
+ this.element = t4, this.didMutate = a2(this.didMutate, this), this.observer = new window.MutationObserver(this.didMutate), this.start();
+ }
+ var h, p2, d, f;
+ return u(c3, e3), p2 = "data-trix-mutable", d = "[" + p2 + "]", f = {attributes: true, childList: true, characterData: true, characterDataOldValue: true, subtree: true}, c3.prototype.start = function() {
+ return this.reset(), this.observer.observe(this.element, f);
+ }, c3.prototype.stop = function() {
+ return this.observer.disconnect();
+ }, c3.prototype.didMutate = function(t4) {
+ var e4, n3;
+ return (e4 = this.mutations).push.apply(e4, this.findSignificantMutations(t4)), this.mutations.length ? ((n3 = this.delegate) != null && typeof n3.elementDidMutate == "function" && n3.elementDidMutate(this.getMutationSummary()), this.reset()) : void 0;
+ }, c3.prototype.reset = function() {
+ return this.mutations = [];
+ }, c3.prototype.findSignificantMutations = function(t4) {
+ var e4, n3, i2, o3;
+ for (o3 = [], e4 = 0, n3 = t4.length; n3 > e4; e4++)
+ i2 = t4[e4], this.mutationIsSignificant(i2) && o3.push(i2);
+ return o3;
+ }, c3.prototype.mutationIsSignificant = function(t4) {
+ var e4, n3, i2, o3;
+ if (this.nodeIsMutable(t4.target))
+ return false;
+ for (o3 = this.nodesModifiedByMutation(t4), e4 = 0, n3 = o3.length; n3 > e4; e4++)
+ if (i2 = o3[e4], this.nodeIsSignificant(i2))
+ return true;
+ return false;
+ }, c3.prototype.nodeIsSignificant = function(t4) {
+ return t4 !== this.element && !this.nodeIsMutable(t4) && !i(t4);
+ }, c3.prototype.nodeIsMutable = function(e4) {
+ return t3(e4, {matchingSelector: d});
+ }, c3.prototype.nodesModifiedByMutation = function(t4) {
+ var e4;
+ switch (e4 = [], t4.type) {
+ case "attributes":
+ t4.attributeName !== p2 && e4.push(t4.target);
+ break;
+ case "characterData":
+ e4.push(t4.target.parentNode), e4.push(t4.target);
+ break;
+ case "childList":
+ e4.push.apply(e4, t4.addedNodes), e4.push.apply(e4, t4.removedNodes);
+ }
+ return e4;
+ }, c3.prototype.getMutationSummary = function() {
+ return this.getTextMutationSummary();
+ }, c3.prototype.getTextMutationSummary = function() {
+ var t4, e4, n3, i2, o3, r3, s3, a3, u2, c4, h2;
+ for (a3 = this.getTextChangesFromCharacterData(), n3 = a3.additions, o3 = a3.deletions, h2 = this.getTextChangesFromChildList(), u2 = h2.additions, r3 = 0, s3 = u2.length; s3 > r3; r3++)
+ e4 = u2[r3], l.call(n3, e4) < 0 && n3.push(e4);
+ return o3.push.apply(o3, h2.deletions), c4 = {}, (t4 = n3.join("")) && (c4.textAdded = t4), (i2 = o3.join("")) && (c4.textDeleted = i2), c4;
+ }, c3.prototype.getMutationsByType = function(t4) {
+ var e4, n3, i2, o3, r3;
+ for (o3 = this.mutations, r3 = [], e4 = 0, n3 = o3.length; n3 > e4; e4++)
+ i2 = o3[e4], i2.type === t4 && r3.push(i2);
+ return r3;
+ }, c3.prototype.getTextChangesFromChildList = function() {
+ var t4, e4, i2, r3, s3, a3, u2, c4, l2, p3, d2;
+ for (t4 = [], u2 = [], a3 = this.getMutationsByType("childList"), e4 = 0, r3 = a3.length; r3 > e4; e4++)
+ s3 = a3[e4], t4.push.apply(t4, s3.addedNodes), u2.push.apply(u2, s3.removedNodes);
+ return c4 = t4.length === 0 && u2.length === 1 && n2(u2[0]), c4 ? (p3 = [], d2 = ["\n"]) : (p3 = h(t4), d2 = h(u2)), {additions: function() {
+ var t5, e5, n3;
+ for (n3 = [], i2 = t5 = 0, e5 = p3.length; e5 > t5; i2 = ++t5)
+ l2 = p3[i2], l2 !== d2[i2] && n3.push(o2(l2));
+ return n3;
+ }(), deletions: function() {
+ var t5, e5, n3;
+ for (n3 = [], i2 = t5 = 0, e5 = d2.length; e5 > t5; i2 = ++t5)
+ l2 = d2[i2], l2 !== p3[i2] && n3.push(o2(l2));
+ return n3;
+ }()};
+ }, c3.prototype.getTextChangesFromCharacterData = function() {
+ var t4, e4, n3, i2, s3, a3, u2, c4;
+ return e4 = this.getMutationsByType("characterData"), e4.length && (c4 = e4[0], n3 = e4[e4.length - 1], s3 = o2(c4.oldValue), i2 = o2(n3.target.data), a3 = r2(s3, i2), t4 = a3.added, u2 = a3.removed), {additions: t4 ? [t4] : [], deletions: u2 ? [u2] : []};
+ }, h = function(t4) {
+ var e4, n3, i2, o3;
+ for (t4 == null && (t4 = []), o3 = [], e4 = 0, n3 = t4.length; n3 > e4; e4++)
+ switch (i2 = t4[e4], i2.nodeType) {
+ case Node.TEXT_NODE:
+ o3.push(i2.data);
+ break;
+ case Node.ELEMENT_NODE:
+ s2(i2) === "br" ? o3.push("\n") : o3.push.apply(o3, h(i2.childNodes));
+ }
+ return o3;
+ }, c3;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.FileVerificationOperation = function(e3) {
+ function n3(t4) {
+ this.file = t4;
+ }
+ return t3(n3, e3), n3.prototype.perform = function(t4) {
+ var e4;
+ return e4 = new FileReader(), e4.onerror = function() {
+ return t4(false);
+ }, e4.onload = function(n4) {
+ return function() {
+ e4.onerror = null;
+ try {
+ e4.abort();
+ } catch (i) {
+ }
+ return t4(true, n4.file);
+ };
+ }(this), e4.readAsArrayBuffer(this.file);
+ }, n3;
+ }(e2.Operation);
+ }.call(this), function() {
+ var t3, n2, i = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ o2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, o2 = {}.hasOwnProperty;
+ t3 = e2.handleEvent, n2 = e2.innerElementIsActive, e2.InputController = function(o3) {
+ function r2(n3) {
+ var i2;
+ this.element = n3, this.mutationObserver = new e2.MutationObserver(this.element), this.mutationObserver.delegate = this;
+ for (i2 in this.events)
+ t3(i2, {onElement: this.element, withCallback: this.handlerFor(i2)});
+ }
+ return i(r2, o3), r2.prototype.events = {}, r2.prototype.elementDidMutate = function() {
+ }, r2.prototype.editorWillSyncDocumentView = function() {
+ return this.mutationObserver.stop();
+ }, r2.prototype.editorDidSyncDocumentView = function() {
+ return this.mutationObserver.start();
+ }, r2.prototype.requestRender = function() {
+ var t4;
+ return (t4 = this.delegate) != null && typeof t4.inputControllerDidRequestRender == "function" ? t4.inputControllerDidRequestRender() : void 0;
+ }, r2.prototype.requestReparse = function() {
+ var t4;
+ return (t4 = this.delegate) != null && typeof t4.inputControllerDidRequestReparse == "function" && t4.inputControllerDidRequestReparse(), this.requestRender();
+ }, r2.prototype.attachFiles = function(t4) {
+ var n3, i2;
+ return i2 = function() {
+ var i3, o4, r3;
+ for (r3 = [], i3 = 0, o4 = t4.length; o4 > i3; i3++)
+ n3 = t4[i3], r3.push(new e2.FileVerificationOperation(n3));
+ return r3;
+ }(), Promise.all(i2).then(function(t5) {
+ return function(e3) {
+ return t5.handleInput(function() {
+ var t6, n4;
+ return (t6 = this.delegate) != null && t6.inputControllerWillAttachFiles(), (n4 = this.responder) != null && n4.insertFiles(e3), this.requestRender();
+ });
+ };
+ }(this));
+ }, r2.prototype.handlerFor = function(t4) {
+ return function(e3) {
+ return function(i2) {
+ return i2.defaultPrevented ? void 0 : e3.handleInput(function() {
+ return n2(this.element) ? void 0 : (this.eventName = t4, this.events[t4].call(this, i2));
+ });
+ };
+ }(this);
+ }, r2.prototype.handleInput = function(t4) {
+ var e3, n3;
+ try {
+ return (e3 = this.delegate) != null && e3.inputControllerWillHandleInput(), t4.call(this);
+ } finally {
+ (n3 = this.delegate) != null && n3.inputControllerDidHandleInput();
+ }
+ }, r2.prototype.createLinkHTML = function(t4, e3) {
+ var n3;
+ return n3 = document.createElement("a"), n3.href = t4, n3.textContent = e3 != null ? e3 : t4, n3.outerHTML;
+ }, r2;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2, a2, u, c2, l, h, p2, d, f = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ g.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, g = {}.hasOwnProperty, m = [].indexOf || function(t4) {
+ for (var e3 = 0, n3 = this.length; n3 > e3; e3++)
+ if (e3 in this && this[e3] === t4)
+ return e3;
+ return -1;
+ };
+ c2 = e2.makeElement, l = e2.objectsAreEqual, d = e2.tagName, n2 = e2.browser, a2 = e2.keyEventIsKeyboardCommand, o2 = e2.dataTransferIsWritable, i = e2.dataTransferIsPlainText, u = e2.config.keyNames, e2.Level0InputController = function(n3) {
+ function s3() {
+ s3.__super__.constructor.apply(this, arguments), this.resetInputSummary();
+ }
+ var d2;
+ return f(s3, n3), d2 = 0, s3.prototype.setInputSummary = function(t4) {
+ var e3, n4;
+ t4 == null && (t4 = {}), this.inputSummary.eventName = this.eventName;
+ for (e3 in t4)
+ n4 = t4[e3], this.inputSummary[e3] = n4;
+ return this.inputSummary;
+ }, s3.prototype.resetInputSummary = function() {
+ return this.inputSummary = {};
+ }, s3.prototype.reset = function() {
+ return this.resetInputSummary(), e2.selectionChangeObserver.reset();
+ }, s3.prototype.elementDidMutate = function(t4) {
+ var e3;
+ return this.isComposing() ? (e3 = this.delegate) != null && typeof e3.inputControllerDidAllowUnhandledInput == "function" ? e3.inputControllerDidAllowUnhandledInput() : void 0 : this.handleInput(function() {
+ return this.mutationIsSignificant(t4) && (this.mutationIsExpected(t4) ? this.requestRender() : this.requestReparse()), this.reset();
+ });
+ }, s3.prototype.mutationIsExpected = function(t4) {
+ var e3, n4, i2, o3, r3, s4, a3, u2, c3, l2;
+ return a3 = t4.textAdded, u2 = t4.textDeleted, this.inputSummary.preferDocument ? true : (e3 = a3 != null ? a3 === this.inputSummary.textAdded : !this.inputSummary.textAdded, n4 = u2 != null ? this.inputSummary.didDelete : !this.inputSummary.didDelete, c3 = (a3 === "\n" || a3 === " \n") && !e3, l2 = u2 === "\n" && !n4, s4 = c3 && !l2 || l2 && !c3, s4 && (o3 = this.getSelectedRange()) && (i2 = c3 ? a3.replace(/\n$/, "").length || -1 : (a3 != null ? a3.length : void 0) || 1, (r3 = this.responder) != null ? r3.positionIsBlockBreak(o3[1] + i2) : void 0) ? true : e3 && n4);
+ }, s3.prototype.mutationIsSignificant = function(t4) {
+ var e3, n4, i2;
+ return i2 = Object.keys(t4).length > 0, e3 = ((n4 = this.compositionInput) != null ? n4.getEndData() : void 0) === "", i2 || !e3;
+ }, s3.prototype.events = {keydown: function(t4) {
+ var n4, i2, o3, r3, s4, c3, l2, h2, p3;
+ if (this.isComposing() || this.resetInputSummary(), this.inputSummary.didInput = true, r3 = u[t4.keyCode]) {
+ for (i2 = this.keys, h2 = ["ctrl", "alt", "shift", "meta"], o3 = 0, c3 = h2.length; c3 > o3; o3++)
+ l2 = h2[o3], t4[l2 + "Key"] && (l2 === "ctrl" && (l2 = "control"), i2 = i2 != null ? i2[l2] : void 0);
+ (i2 != null ? i2[r3] : void 0) != null && (this.setInputSummary({keyName: r3}), e2.selectionChangeObserver.reset(), i2[r3].call(this, t4));
+ }
+ return a2(t4) && (n4 = String.fromCharCode(t4.keyCode).toLowerCase()) && (s4 = function() {
+ var e3, n5, i3, o4;
+ for (i3 = ["alt", "shift"], o4 = [], e3 = 0, n5 = i3.length; n5 > e3; e3++)
+ l2 = i3[e3], t4[l2 + "Key"] && o4.push(l2);
+ return o4;
+ }(), s4.push(n4), (p3 = this.delegate) != null ? p3.inputControllerDidReceiveKeyboardCommand(s4) : void 0) ? t4.preventDefault() : void 0;
+ }, keypress: function(t4) {
+ var e3, n4, i2;
+ if (this.inputSummary.eventName == null && !t4.metaKey && (!t4.ctrlKey || t4.altKey))
+ return (i2 = p2(t4)) ? ((e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), (n4 = this.responder) != null && n4.insertString(i2), this.setInputSummary({textAdded: i2, didDelete: this.selectionIsExpanded()})) : void 0;
+ }, textInput: function(t4) {
+ var e3, n4, i2, o3;
+ return e3 = t4.data, o3 = this.inputSummary.textAdded, o3 && o3 !== e3 && o3.toUpperCase() === e3 ? (n4 = this.getSelectedRange(), this.setSelectedRange([n4[0], n4[1] + o3.length]), (i2 = this.responder) != null && i2.insertString(e3), this.setInputSummary({textAdded: e3}), this.setSelectedRange(n4)) : void 0;
+ }, dragenter: function(t4) {
+ return t4.preventDefault();
+ }, dragstart: function(t4) {
+ var e3, n4;
+ return n4 = t4.target, this.serializeSelectionToDataTransfer(t4.dataTransfer), this.draggedRange = this.getSelectedRange(), (e3 = this.delegate) != null && typeof e3.inputControllerDidStartDrag == "function" ? e3.inputControllerDidStartDrag() : void 0;
+ }, dragover: function(t4) {
+ var e3, n4;
+ return !this.draggedRange && !this.canAcceptDataTransfer(t4.dataTransfer) || (t4.preventDefault(), e3 = {x: t4.clientX, y: t4.clientY}, l(e3, this.draggingPoint)) ? void 0 : (this.draggingPoint = e3, (n4 = this.delegate) != null && typeof n4.inputControllerDidReceiveDragOverPoint == "function" ? n4.inputControllerDidReceiveDragOverPoint(this.draggingPoint) : void 0);
+ }, dragend: function() {
+ var t4;
+ return (t4 = this.delegate) != null && typeof t4.inputControllerDidCancelDrag == "function" && t4.inputControllerDidCancelDrag(), this.draggedRange = null, this.draggingPoint = null;
+ }, drop: function(t4) {
+ var n4, i2, o3, r3, s4, a3, u2, c3, l2;
+ return t4.preventDefault(), o3 = (s4 = t4.dataTransfer) != null ? s4.files : void 0, r3 = {x: t4.clientX, y: t4.clientY}, (a3 = this.responder) != null && a3.setLocationRangeFromPointRange(r3), (o3 != null ? o3.length : void 0) ? this.attachFiles(o3) : this.draggedRange ? ((u2 = this.delegate) != null && u2.inputControllerWillMoveText(), (c3 = this.responder) != null && c3.moveTextFromRange(this.draggedRange), this.draggedRange = null, this.requestRender()) : (i2 = t4.dataTransfer.getData("application/x-trix-document")) && (n4 = e2.Document.fromJSONString(i2), (l2 = this.responder) != null && l2.insertDocument(n4), this.requestRender()), this.draggedRange = null, this.draggingPoint = null;
+ }, cut: function(t4) {
+ var e3, n4;
+ return ((e3 = this.responder) != null ? e3.selectionIsExpanded() : void 0) && (this.serializeSelectionToDataTransfer(t4.clipboardData) && t4.preventDefault(), (n4 = this.delegate) != null && n4.inputControllerWillCutText(), this.deleteInDirection("backward"), t4.defaultPrevented) ? this.requestRender() : void 0;
+ }, copy: function(t4) {
+ var e3;
+ return ((e3 = this.responder) != null ? e3.selectionIsExpanded() : void 0) && this.serializeSelectionToDataTransfer(t4.clipboardData) ? t4.preventDefault() : void 0;
+ }, paste: function(t4) {
+ var n4, o3, s4, a3, u2, c3, l2, p3, f2, g2, v, y, b, A, C3, x, w, E, S2, R, k, D2, L2;
+ return n4 = (p3 = t4.clipboardData) != null ? p3 : t4.testClipboardData, l2 = {clipboard: n4}, n4 == null || h(t4) ? void this.getPastedHTMLUsingHiddenElement(function(t5) {
+ return function(e3) {
+ var n5, i2, o4;
+ return l2.type = "text/html", l2.html = e3, (n5 = t5.delegate) != null && n5.inputControllerWillPaste(l2), (i2 = t5.responder) != null && i2.insertHTML(l2.html), t5.requestRender(), (o4 = t5.delegate) != null ? o4.inputControllerDidPaste(l2) : void 0;
+ };
+ }(this)) : ((a3 = n4.getData("URL")) ? (l2.type = "text/html", L2 = (c3 = n4.getData("public.url-name")) ? e2.squishBreakableWhitespace(c3).trim() : a3, l2.html = this.createLinkHTML(a3, L2), (f2 = this.delegate) != null && f2.inputControllerWillPaste(l2), this.setInputSummary({textAdded: L2, didDelete: this.selectionIsExpanded()}), (C3 = this.responder) != null && C3.insertHTML(l2.html), this.requestRender(), (x = this.delegate) != null && x.inputControllerDidPaste(l2)) : i(n4) ? (l2.type = "text/plain", l2.string = n4.getData("text/plain"), (w = this.delegate) != null && w.inputControllerWillPaste(l2), this.setInputSummary({textAdded: l2.string, didDelete: this.selectionIsExpanded()}), (E = this.responder) != null && E.insertString(l2.string), this.requestRender(), (S2 = this.delegate) != null && S2.inputControllerDidPaste(l2)) : (u2 = n4.getData("text/html")) ? (l2.type = "text/html", l2.html = u2, (R = this.delegate) != null && R.inputControllerWillPaste(l2), (k = this.responder) != null && k.insertHTML(l2.html), this.requestRender(), (D2 = this.delegate) != null && D2.inputControllerDidPaste(l2)) : m.call(n4.types, "Files") >= 0 && (s4 = (g2 = n4.items) != null && (v = g2[0]) != null && typeof v.getAsFile == "function" ? v.getAsFile() : void 0) && (!s4.name && (o3 = r2(s4)) && (s4.name = "pasted-file-" + ++d2 + "." + o3), l2.type = "File", l2.file = s4, (y = this.delegate) != null && y.inputControllerWillAttachFiles(), (b = this.responder) != null && b.insertFile(l2.file), this.requestRender(), (A = this.delegate) != null && A.inputControllerDidPaste(l2)), t4.preventDefault());
+ }, compositionstart: function(t4) {
+ return this.getCompositionInput().start(t4.data);
+ }, compositionupdate: function(t4) {
+ return this.getCompositionInput().update(t4.data);
+ }, compositionend: function(t4) {
+ return this.getCompositionInput().end(t4.data);
+ }, beforeinput: function() {
+ return this.inputSummary.didInput = true;
+ }, input: function(t4) {
+ return this.inputSummary.didInput = true, t4.stopPropagation();
+ }}, s3.prototype.keys = {backspace: function(t4) {
+ var e3;
+ return (e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), this.deleteInDirection("backward", t4);
+ }, delete: function(t4) {
+ var e3;
+ return (e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), this.deleteInDirection("forward", t4);
+ }, return: function() {
+ var t4, e3;
+ return this.setInputSummary({preferDocument: true}), (t4 = this.delegate) != null && t4.inputControllerWillPerformTyping(), (e3 = this.responder) != null ? e3.insertLineBreak() : void 0;
+ }, tab: function(t4) {
+ var e3, n4;
+ return ((e3 = this.responder) != null ? e3.canIncreaseNestingLevel() : void 0) ? ((n4 = this.responder) != null && n4.increaseNestingLevel(), this.requestRender(), t4.preventDefault()) : void 0;
+ }, left: function(t4) {
+ var e3;
+ return this.selectionIsInCursorTarget() ? (t4.preventDefault(), (e3 = this.responder) != null ? e3.moveCursorInDirection("backward") : void 0) : void 0;
+ }, right: function(t4) {
+ var e3;
+ return this.selectionIsInCursorTarget() ? (t4.preventDefault(), (e3 = this.responder) != null ? e3.moveCursorInDirection("forward") : void 0) : void 0;
+ }, control: {d: function(t4) {
+ var e3;
+ return (e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), this.deleteInDirection("forward", t4);
+ }, h: function(t4) {
+ var e3;
+ return (e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), this.deleteInDirection("backward", t4);
+ }, o: function(t4) {
+ var e3, n4;
+ return t4.preventDefault(), (e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), (n4 = this.responder) != null && n4.insertString("\n", {updatePosition: false}), this.requestRender();
+ }}, shift: {return: function(t4) {
+ var e3, n4;
+ return (e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), (n4 = this.responder) != null && n4.insertString("\n"), this.requestRender(), t4.preventDefault();
+ }, tab: function(t4) {
+ var e3, n4;
+ return ((e3 = this.responder) != null ? e3.canDecreaseNestingLevel() : void 0) ? ((n4 = this.responder) != null && n4.decreaseNestingLevel(), this.requestRender(), t4.preventDefault()) : void 0;
+ }, left: function(t4) {
+ return this.selectionIsInCursorTarget() ? (t4.preventDefault(), this.expandSelectionInDirection("backward")) : void 0;
+ }, right: function(t4) {
+ return this.selectionIsInCursorTarget() ? (t4.preventDefault(), this.expandSelectionInDirection("forward")) : void 0;
+ }}, alt: {backspace: function() {
+ var t4;
+ return this.setInputSummary({preferDocument: false}), (t4 = this.delegate) != null ? t4.inputControllerWillPerformTyping() : void 0;
+ }}, meta: {backspace: function() {
+ var t4;
+ return this.setInputSummary({preferDocument: false}), (t4 = this.delegate) != null ? t4.inputControllerWillPerformTyping() : void 0;
+ }}}, s3.prototype.getCompositionInput = function() {
+ return this.isComposing() ? this.compositionInput : this.compositionInput = new t3(this);
+ }, s3.prototype.isComposing = function() {
+ return this.compositionInput != null && !this.compositionInput.isEnded();
+ }, s3.prototype.deleteInDirection = function(t4, e3) {
+ var n4;
+ return ((n4 = this.responder) != null ? n4.deleteInDirection(t4) : void 0) !== false ? this.setInputSummary({didDelete: true}) : e3 ? (e3.preventDefault(), this.requestRender()) : void 0;
+ }, s3.prototype.serializeSelectionToDataTransfer = function(t4) {
+ var n4, i2;
+ if (o2(t4))
+ return n4 = (i2 = this.responder) != null ? i2.getSelectedDocument().toSerializableDocument() : void 0, t4.setData("application/x-trix-document", JSON.stringify(n4)), t4.setData("text/html", e2.DocumentView.render(n4).innerHTML), t4.setData("text/plain", n4.toString().replace(/\n$/, "")), true;
+ }, s3.prototype.canAcceptDataTransfer = function(t4) {
+ var e3, n4, i2, o3, r3, s4;
+ for (s4 = {}, o3 = (i2 = t4 != null ? t4.types : void 0) != null ? i2 : [], e3 = 0, n4 = o3.length; n4 > e3; e3++)
+ r3 = o3[e3], s4[r3] = true;
+ return s4.Files || s4["application/x-trix-document"] || s4["text/html"] || s4["text/plain"];
+ }, s3.prototype.getPastedHTMLUsingHiddenElement = function(t4) {
+ var n4, i2, o3;
+ return i2 = this.getSelectedRange(), o3 = {position: "absolute", left: window.pageXOffset + "px", top: window.pageYOffset + "px", opacity: 0}, n4 = c2({style: o3, tagName: "div", editable: true}), document.body.appendChild(n4), n4.focus(), requestAnimationFrame(function(o4) {
+ return function() {
+ var r3;
+ return r3 = n4.innerHTML, e2.removeNode(n4), o4.setSelectedRange(i2), t4(r3);
+ };
+ }(this));
+ }, s3.proxyMethod("responder?.getSelectedRange"), s3.proxyMethod("responder?.setSelectedRange"), s3.proxyMethod("responder?.expandSelectionInDirection"), s3.proxyMethod("responder?.selectionIsInCursorTarget"), s3.proxyMethod("responder?.selectionIsExpanded"), s3;
+ }(e2.InputController), r2 = function(t4) {
+ var e3, n3;
+ return (e3 = t4.type) != null && (n3 = e3.match(/\/(\w+)$/)) != null ? n3[1] : void 0;
+ }, s2 = (typeof " ".codePointAt == "function" ? " ".codePointAt(0) : void 0) != null, p2 = function(t4) {
+ var n3;
+ return t4.key && s2 && t4.key.codePointAt(0) === t4.keyCode ? t4.key : (t4.which === null ? n3 = t4.keyCode : t4.which !== 0 && t4.charCode !== 0 && (n3 = t4.charCode), n3 != null && u[n3] !== "escape" ? e2.UTF16String.fromCodepoints([n3]).toString() : void 0);
+ }, h = function(t4) {
+ var e3, n3, i2, o3, r3, s3, a3, u2, c3, l2;
+ if (u2 = t4.clipboardData) {
+ if (m.call(u2.types, "text/html") >= 0) {
+ for (c3 = u2.types, i2 = 0, s3 = c3.length; s3 > i2; i2++)
+ if (l2 = c3[i2], e3 = /^CorePasteboardFlavorType/.test(l2), n3 = /^dyn\./.test(l2) && u2.getData(l2), a3 = e3 || n3)
+ return true;
+ return false;
+ }
+ return o3 = m.call(u2.types, "com.apple.webarchive") >= 0, r3 = m.call(u2.types, "com.apple.flat-rtfd") >= 0, o3 || r3;
+ }
+ }, t3 = function(t4) {
+ function e3(t5) {
+ var e4;
+ this.inputController = t5, e4 = this.inputController, this.responder = e4.responder, this.delegate = e4.delegate, this.inputSummary = e4.inputSummary, this.data = {};
+ }
+ return f(e3, t4), e3.prototype.start = function(t5) {
+ var e4, n3;
+ return this.data.start = t5, this.isSignificant() ? (this.inputSummary.eventName === "keypress" && this.inputSummary.textAdded && (e4 = this.responder) != null && e4.deleteInDirection("left"), this.selectionIsExpanded() || (this.insertPlaceholder(), this.requestRender()), this.range = (n3 = this.responder) != null ? n3.getSelectedRange() : void 0) : void 0;
+ }, e3.prototype.update = function(t5) {
+ var e4;
+ return this.data.update = t5, this.isSignificant() && (e4 = this.selectPlaceholder()) ? (this.forgetPlaceholder(), this.range = e4) : void 0;
+ }, e3.prototype.end = function(t5) {
+ var e4, n3, i2, o3;
+ return this.data.end = t5, this.isSignificant() ? (this.forgetPlaceholder(), this.canApplyToDocument() ? (this.setInputSummary({preferDocument: true, didInput: false}), (e4 = this.delegate) != null && e4.inputControllerWillPerformTyping(), (n3 = this.responder) != null && n3.setSelectedRange(this.range), (i2 = this.responder) != null && i2.insertString(this.data.end), (o3 = this.responder) != null ? o3.setSelectedRange(this.range[0] + this.data.end.length) : void 0) : this.data.start != null || this.data.update != null ? (this.requestReparse(), this.inputController.reset()) : void 0) : this.inputController.reset();
+ }, e3.prototype.getEndData = function() {
+ return this.data.end;
+ }, e3.prototype.isEnded = function() {
+ return this.getEndData() != null;
+ }, e3.prototype.isSignificant = function() {
+ return n2.composesExistingText ? this.inputSummary.didInput : true;
+ }, e3.prototype.canApplyToDocument = function() {
+ var t5, e4;
+ return ((t5 = this.data.start) != null ? t5.length : void 0) === 0 && ((e4 = this.data.end) != null ? e4.length : void 0) > 0 && this.range != null;
+ }, e3.proxyMethod("inputController.setInputSummary"), e3.proxyMethod("inputController.requestRender"), e3.proxyMethod("inputController.requestReparse"), e3.proxyMethod("responder?.selectionIsExpanded"), e3.proxyMethod("responder?.insertPlaceholder"), e3.proxyMethod("responder?.selectPlaceholder"), e3.proxyMethod("responder?.forgetPlaceholder"), e3;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3, n2, i, o2 = function(t4, e3) {
+ return function() {
+ return t4.apply(e3, arguments);
+ };
+ }, r2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ s2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, s2 = {}.hasOwnProperty, a2 = [].indexOf || function(t4) {
+ for (var e3 = 0, n3 = this.length; n3 > e3; e3++)
+ if (e3 in this && this[e3] === t4)
+ return e3;
+ return -1;
+ };
+ t3 = e2.dataTransferIsPlainText, n2 = e2.keyEventIsKeyboardCommand, i = e2.objectsAreEqual, e2.Level2InputController = function(s3) {
+ function u() {
+ return this.render = o2(this.render, this), u.__super__.constructor.apply(this, arguments);
+ }
+ var c2, l, h, p2, d, f;
+ return r2(u, s3), u.prototype.elementDidMutate = function() {
+ var t4;
+ return this.scheduledRender ? this.composing && (t4 = this.delegate) != null && typeof t4.inputControllerDidAllowUnhandledInput == "function" ? t4.inputControllerDidAllowUnhandledInput() : void 0 : this.reparse();
+ }, u.prototype.scheduleRender = function() {
+ return this.scheduledRender != null ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render);
+ }, u.prototype.render = function() {
+ var t4;
+ return cancelAnimationFrame(this.scheduledRender), this.scheduledRender = null, this.composing || (t4 = this.delegate) != null && t4.render(), typeof this.afterRender == "function" && this.afterRender(), this.afterRender = null;
+ }, u.prototype.reparse = function() {
+ var t4;
+ return (t4 = this.delegate) != null ? t4.reparse() : void 0;
+ }, u.prototype.events = {keydown: function(t4) {
+ var e3, i2, o3, r3;
+ if (n2(t4)) {
+ if (e3 = l(t4), (r3 = this.delegate) != null ? r3.inputControllerDidReceiveKeyboardCommand(e3) : void 0)
+ return t4.preventDefault();
+ } else if (o3 = t4.key, t4.altKey && (o3 += "+Alt"), t4.shiftKey && (o3 += "+Shift"), i2 = this.keys[o3])
+ return this.withEvent(t4, i2);
+ }, paste: function(t4) {
+ var e3, n3, i2, o3, r3, s4, a3, u2, c3;
+ return h(t4) ? (t4.preventDefault(), this.attachFiles(t4.clipboardData.files)) : p2(t4) ? (t4.preventDefault(), n3 = {type: "text/plain", string: t4.clipboardData.getData("text/plain")}, (i2 = this.delegate) != null && i2.inputControllerWillPaste(n3), (o3 = this.responder) != null && o3.insertString(n3.string), this.render(), (r3 = this.delegate) != null ? r3.inputControllerDidPaste(n3) : void 0) : (e3 = (s4 = t4.clipboardData) != null ? s4.getData("URL") : void 0) ? (t4.preventDefault(), n3 = {type: "text/html", html: this.createLinkHTML(e3)}, (a3 = this.delegate) != null && a3.inputControllerWillPaste(n3), (u2 = this.responder) != null && u2.insertHTML(n3.html), this.render(), (c3 = this.delegate) != null ? c3.inputControllerDidPaste(n3) : void 0) : void 0;
+ }, beforeinput: function(t4) {
+ var e3;
+ return (e3 = this.inputTypes[t4.inputType]) ? (this.withEvent(t4, e3), this.scheduleRender()) : void 0;
+ }, input: function() {
+ return e2.selectionChangeObserver.reset();
+ }, dragstart: function(t4) {
+ var e3, n3;
+ return ((e3 = this.responder) != null ? e3.selectionContainsAttachments() : void 0) ? (t4.dataTransfer.setData("application/x-trix-dragging", true), this.dragging = {range: (n3 = this.responder) != null ? n3.getSelectedRange() : void 0, point: d(t4)}) : void 0;
+ }, dragenter: function(t4) {
+ return c2(t4) ? t4.preventDefault() : void 0;
+ }, dragover: function(t4) {
+ var e3, n3;
+ if (this.dragging) {
+ if (t4.preventDefault(), e3 = d(t4), !i(e3, this.dragging.point))
+ return this.dragging.point = e3, (n3 = this.responder) != null ? n3.setLocationRangeFromPointRange(e3) : void 0;
+ } else if (c2(t4))
+ return t4.preventDefault();
+ }, drop: function(t4) {
+ var e3, n3, i2, o3;
+ return this.dragging ? (t4.preventDefault(), (n3 = this.delegate) != null && n3.inputControllerWillMoveText(), (i2 = this.responder) != null && i2.moveTextFromRange(this.dragging.range), this.dragging = null, this.scheduleRender()) : c2(t4) ? (t4.preventDefault(), e3 = d(t4), (o3 = this.responder) != null && o3.setLocationRangeFromPointRange(e3), this.attachFiles(t4.dataTransfer.files)) : void 0;
+ }, dragend: function() {
+ var t4;
+ return this.dragging ? ((t4 = this.responder) != null && t4.setSelectedRange(this.dragging.range), this.dragging = null) : void 0;
+ }, compositionend: function() {
+ return this.composing ? (this.composing = false, this.scheduleRender()) : void 0;
+ }}, u.prototype.keys = {ArrowLeft: function() {
+ var t4, e3;
+ return ((t4 = this.responder) != null ? t4.shouldManageMovingCursorInDirection("backward") : void 0) ? (this.event.preventDefault(), (e3 = this.responder) != null ? e3.moveCursorInDirection("backward") : void 0) : void 0;
+ }, ArrowRight: function() {
+ var t4, e3;
+ return ((t4 = this.responder) != null ? t4.shouldManageMovingCursorInDirection("forward") : void 0) ? (this.event.preventDefault(), (e3 = this.responder) != null ? e3.moveCursorInDirection("forward") : void 0) : void 0;
+ }, Backspace: function() {
+ var t4, e3, n3;
+ return ((t4 = this.responder) != null ? t4.shouldManageDeletingInDirection("backward") : void 0) ? (this.event.preventDefault(), (e3 = this.delegate) != null && e3.inputControllerWillPerformTyping(), (n3 = this.responder) != null && n3.deleteInDirection("backward"), this.render()) : void 0;
+ }, Tab: function() {
+ var t4, e3;
+ return ((t4 = this.responder) != null ? t4.canIncreaseNestingLevel() : void 0) ? (this.event.preventDefault(), (e3 = this.responder) != null && e3.increaseNestingLevel(), this.render()) : void 0;
+ }, "Tab+Shift": function() {
+ var t4, e3;
+ return ((t4 = this.responder) != null ? t4.canDecreaseNestingLevel() : void 0) ? (this.event.preventDefault(), (e3 = this.responder) != null && e3.decreaseNestingLevel(), this.render()) : void 0;
+ }}, u.prototype.inputTypes = {deleteByComposition: function() {
+ return this.deleteInDirection("backward", {recordUndoEntry: false});
+ }, deleteByCut: function() {
+ return this.deleteInDirection("backward");
+ }, deleteByDrag: function() {
+ return this.event.preventDefault(), this.withTargetDOMRange(function() {
+ var t4;
+ return this.deleteByDragRange = (t4 = this.responder) != null ? t4.getSelectedRange() : void 0;
+ });
+ }, deleteCompositionText: function() {
+ return this.deleteInDirection("backward", {recordUndoEntry: false});
+ }, deleteContent: function() {
+ return this.deleteInDirection("backward");
+ }, deleteContentBackward: function() {
+ return this.deleteInDirection("backward");
+ }, deleteContentForward: function() {
+ return this.deleteInDirection("forward");
+ }, deleteEntireSoftLine: function() {
+ return this.deleteInDirection("forward");
+ }, deleteHardLineBackward: function() {
+ return this.deleteInDirection("backward");
+ }, deleteHardLineForward: function() {
+ return this.deleteInDirection("forward");
+ }, deleteSoftLineBackward: function() {
+ return this.deleteInDirection("backward");
+ }, deleteSoftLineForward: function() {
+ return this.deleteInDirection("forward");
+ }, deleteWordBackward: function() {
+ return this.deleteInDirection("backward");
+ }, deleteWordForward: function() {
+ return this.deleteInDirection("forward");
+ }, formatBackColor: function() {
+ return this.activateAttributeIfSupported("backgroundColor", this.event.data);
+ }, formatBold: function() {
+ return this.toggleAttributeIfSupported("bold");
+ }, formatFontColor: function() {
+ return this.activateAttributeIfSupported("color", this.event.data);
+ }, formatFontName: function() {
+ return this.activateAttributeIfSupported("font", this.event.data);
+ }, formatIndent: function() {
+ var t4;
+ return ((t4 = this.responder) != null ? t4.canIncreaseNestingLevel() : void 0) ? this.withTargetDOMRange(function() {
+ var t5;
+ return (t5 = this.responder) != null ? t5.increaseNestingLevel() : void 0;
+ }) : void 0;
+ }, formatItalic: function() {
+ return this.toggleAttributeIfSupported("italic");
+ }, formatJustifyCenter: function() {
+ return this.toggleAttributeIfSupported("justifyCenter");
+ }, formatJustifyFull: function() {
+ return this.toggleAttributeIfSupported("justifyFull");
+ }, formatJustifyLeft: function() {
+ return this.toggleAttributeIfSupported("justifyLeft");
+ }, formatJustifyRight: function() {
+ return this.toggleAttributeIfSupported("justifyRight");
+ }, formatOutdent: function() {
+ var t4;
+ return ((t4 = this.responder) != null ? t4.canDecreaseNestingLevel() : void 0) ? this.withTargetDOMRange(function() {
+ var t5;
+ return (t5 = this.responder) != null ? t5.decreaseNestingLevel() : void 0;
+ }) : void 0;
+ }, formatRemove: function() {
+ return this.withTargetDOMRange(function() {
+ var t4, e3, n3, i2;
+ i2 = [];
+ for (t4 in (e3 = this.responder) != null ? e3.getCurrentAttributes() : void 0)
+ i2.push((n3 = this.responder) != null ? n3.removeCurrentAttribute(t4) : void 0);
+ return i2;
+ });
+ }, formatSetBlockTextDirection: function() {
+ return this.activateAttributeIfSupported("blockDir", this.event.data);
+ }, formatSetInlineTextDirection: function() {
+ return this.activateAttributeIfSupported("textDir", this.event.data);
+ }, formatStrikeThrough: function() {
+ return this.toggleAttributeIfSupported("strike");
+ }, formatSubscript: function() {
+ return this.toggleAttributeIfSupported("sub");
+ }, formatSuperscript: function() {
+ return this.toggleAttributeIfSupported("sup");
+ }, formatUnderline: function() {
+ return this.toggleAttributeIfSupported("underline");
+ }, historyRedo: function() {
+ var t4;
+ return (t4 = this.delegate) != null ? t4.inputControllerWillPerformRedo() : void 0;
+ }, historyUndo: function() {
+ var t4;
+ return (t4 = this.delegate) != null ? t4.inputControllerWillPerformUndo() : void 0;
+ }, insertCompositionText: function() {
+ return this.composing = true, this.insertString(this.event.data);
+ }, insertFromComposition: function() {
+ return this.composing = false, this.insertString(this.event.data);
+ }, insertFromDrop: function() {
+ var t4, e3;
+ return (t4 = this.deleteByDragRange) ? (this.deleteByDragRange = null, (e3 = this.delegate) != null && e3.inputControllerWillMoveText(), this.withTargetDOMRange(function() {
+ var e4;
+ return (e4 = this.responder) != null ? e4.moveTextFromRange(t4) : void 0;
+ })) : void 0;
+ }, insertFromPaste: function() {
+ var n3, i2, o3, r3, s4, a3, u2, c3, l2, h2, p3;
+ return n3 = this.event.dataTransfer, s4 = {dataTransfer: n3}, (i2 = n3.getData("URL")) ? (this.event.preventDefault(), s4.type = "text/html", p3 = (r3 = n3.getData("public.url-name")) ? e2.squishBreakableWhitespace(r3).trim() : i2, s4.html = this.createLinkHTML(i2, p3), (a3 = this.delegate) != null && a3.inputControllerWillPaste(s4), this.withTargetDOMRange(function() {
+ var t4;
+ return (t4 = this.responder) != null ? t4.insertHTML(s4.html) : void 0;
+ }), this.afterRender = function(t4) {
+ return function() {
+ var e3;
+ return (e3 = t4.delegate) != null ? e3.inputControllerDidPaste(s4) : void 0;
+ };
+ }(this)) : t3(n3) ? (s4.type = "text/plain", s4.string = n3.getData("text/plain"), (u2 = this.delegate) != null && u2.inputControllerWillPaste(s4), this.withTargetDOMRange(function() {
+ var t4;
+ return (t4 = this.responder) != null ? t4.insertString(s4.string) : void 0;
+ }), this.afterRender = function(t4) {
+ return function() {
+ var e3;
+ return (e3 = t4.delegate) != null ? e3.inputControllerDidPaste(s4) : void 0;
+ };
+ }(this)) : (o3 = n3.getData("text/html")) ? (this.event.preventDefault(), s4.type = "text/html", s4.html = o3, (c3 = this.delegate) != null && c3.inputControllerWillPaste(s4), this.withTargetDOMRange(function() {
+ var t4;
+ return (t4 = this.responder) != null ? t4.insertHTML(s4.html) : void 0;
+ }), this.afterRender = function(t4) {
+ return function() {
+ var e3;
+ return (e3 = t4.delegate) != null ? e3.inputControllerDidPaste(s4) : void 0;
+ };
+ }(this)) : ((l2 = n3.files) != null ? l2.length : void 0) ? (s4.type = "File", s4.file = n3.files[0], (h2 = this.delegate) != null && h2.inputControllerWillPaste(s4), this.withTargetDOMRange(function() {
+ var t4;
+ return (t4 = this.responder) != null ? t4.insertFile(s4.file) : void 0;
+ }), this.afterRender = function(t4) {
+ return function() {
+ var e3;
+ return (e3 = t4.delegate) != null ? e3.inputControllerDidPaste(s4) : void 0;
+ };
+ }(this)) : void 0;
+ }, insertFromYank: function() {
+ return this.insertString(this.event.data);
+ }, insertLineBreak: function() {
+ return this.insertString("\n");
+ }, insertLink: function() {
+ return this.activateAttributeIfSupported("href", this.event.data);
+ }, insertOrderedList: function() {
+ return this.toggleAttributeIfSupported("number");
+ }, insertParagraph: function() {
+ var t4;
+ return (t4 = this.delegate) != null && t4.inputControllerWillPerformTyping(), this.withTargetDOMRange(function() {
+ var t5;
+ return (t5 = this.responder) != null ? t5.insertLineBreak() : void 0;
+ });
+ }, insertReplacementText: function() {
+ return this.insertString(this.event.dataTransfer.getData("text/plain"), {updatePosition: false});
+ }, insertText: function() {
+ var t4, e3;
+ return this.insertString((t4 = this.event.data) != null ? t4 : (e3 = this.event.dataTransfer) != null ? e3.getData("text/plain") : void 0);
+ }, insertTranspose: function() {
+ return this.insertString(this.event.data);
+ }, insertUnorderedList: function() {
+ return this.toggleAttributeIfSupported("bullet");
+ }}, u.prototype.insertString = function(t4, e3) {
+ var n3;
+ return t4 == null && (t4 = ""), (n3 = this.delegate) != null && n3.inputControllerWillPerformTyping(), this.withTargetDOMRange(function() {
+ var n4;
+ return (n4 = this.responder) != null ? n4.insertString(t4, e3) : void 0;
+ });
+ }, u.prototype.toggleAttributeIfSupported = function(t4) {
+ var n3;
+ return a2.call(e2.getAllAttributeNames(), t4) >= 0 ? ((n3 = this.delegate) != null && n3.inputControllerWillPerformFormatting(t4), this.withTargetDOMRange(function() {
+ var e3;
+ return (e3 = this.responder) != null ? e3.toggleCurrentAttribute(t4) : void 0;
+ })) : void 0;
+ }, u.prototype.activateAttributeIfSupported = function(t4, n3) {
+ var i2;
+ return a2.call(e2.getAllAttributeNames(), t4) >= 0 ? ((i2 = this.delegate) != null && i2.inputControllerWillPerformFormatting(t4), this.withTargetDOMRange(function() {
+ var e3;
+ return (e3 = this.responder) != null ? e3.setCurrentAttribute(t4, n3) : void 0;
+ })) : void 0;
+ }, u.prototype.deleteInDirection = function(t4, e3) {
+ var n3, i2, o3, r3;
+ return o3 = (e3 != null ? e3 : {recordUndoEntry: true}).recordUndoEntry, o3 && (r3 = this.delegate) != null && r3.inputControllerWillPerformTyping(), i2 = function(e4) {
+ return function() {
+ var n4;
+ return (n4 = e4.responder) != null ? n4.deleteInDirection(t4) : void 0;
+ };
+ }(this), (n3 = this.getTargetDOMRange({minLength: 2})) ? this.withTargetDOMRange(n3, i2) : i2();
+ }, u.prototype.withTargetDOMRange = function(t4, n3) {
+ var i2;
+ return typeof t4 == "function" && (n3 = t4, t4 = this.getTargetDOMRange()), t4 ? (i2 = this.responder) != null ? i2.withTargetDOMRange(t4, n3.bind(this)) : void 0 : (e2.selectionChangeObserver.reset(), n3.call(this));
+ }, u.prototype.getTargetDOMRange = function(t4) {
+ var e3, n3, i2, o3;
+ return i2 = (t4 != null ? t4 : {minLength: 0}).minLength, (o3 = typeof (e3 = this.event).getTargetRanges == "function" ? e3.getTargetRanges() : void 0) && o3.length && (n3 = f(o3[0]), i2 === 0 || n3.toString().length >= i2) ? n3 : void 0;
+ }, f = function(t4) {
+ var e3;
+ return e3 = document.createRange(), e3.setStart(t4.startContainer, t4.startOffset), e3.setEnd(t4.endContainer, t4.endOffset), e3;
+ }, u.prototype.withEvent = function(t4, e3) {
+ var n3;
+ this.event = t4;
+ try {
+ n3 = e3.call(this);
+ } finally {
+ this.event = null;
+ }
+ return n3;
+ }, c2 = function(t4) {
+ var e3, n3;
+ return a2.call((e3 = (n3 = t4.dataTransfer) != null ? n3.types : void 0) != null ? e3 : [], "Files") >= 0;
+ }, h = function(t4) {
+ var e3;
+ return (e3 = t4.clipboardData) ? a2.call(e3.types, "Files") >= 0 && e3.types.length === 1 && e3.files.length >= 1 : void 0;
+ }, p2 = function(t4) {
+ var e3;
+ return (e3 = t4.clipboardData) ? a2.call(e3.types, "text/plain") >= 0 && e3.types.length === 1 : void 0;
+ }, l = function(t4) {
+ var e3;
+ return e3 = [], t4.altKey && e3.push("alt"), t4.shiftKey && e3.push("shift"), e3.push(t4.key), e3;
+ }, d = function(t4) {
+ return {x: t4.clientX, y: t4.clientY};
+ }, u;
+ }(e2.InputController);
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2, a2, u, c2 = function(t4, e3) {
+ return function() {
+ return t4.apply(e3, arguments);
+ };
+ }, l = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ h.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, h = {}.hasOwnProperty;
+ n2 = e2.defer, i = e2.handleEvent, s2 = e2.makeElement, u = e2.tagName, a2 = e2.config, r2 = a2.lang, t3 = a2.css, o2 = a2.keyNames, e2.AttachmentEditorController = function(a3) {
+ function h2(t4, e3, n3, i2) {
+ this.attachmentPiece = t4, this.element = e3, this.container = n3, this.options = i2 != null ? i2 : {}, this.didBlurCaption = c2(this.didBlurCaption, this), this.didChangeCaption = c2(this.didChangeCaption, this), this.didInputCaption = c2(this.didInputCaption, this), this.didKeyDownCaption = c2(this.didKeyDownCaption, this), this.didClickActionButton = c2(this.didClickActionButton, this), this.didClickToolbar = c2(this.didClickToolbar, this), this.attachment = this.attachmentPiece.attachment, u(this.element) === "a" && (this.element = this.element.firstChild), this.install();
+ }
+ var p2;
+ return l(h2, a3), p2 = function(t4) {
+ return function() {
+ var e3;
+ return e3 = t4.apply(this, arguments), e3["do"](), this.undos == null && (this.undos = []), this.undos.push(e3.undo);
+ };
+ }, h2.prototype.install = function() {
+ return this.makeElementMutable(), this.addToolbar(), this.attachment.isPreviewable() ? this.installCaptionEditor() : void 0;
+ }, h2.prototype.uninstall = function() {
+ var t4, e3;
+ for (this.savePendingCaption(); e3 = this.undos.pop(); )
+ e3();
+ return (t4 = this.delegate) != null ? t4.didUninstallAttachmentEditor(this) : void 0;
+ }, h2.prototype.savePendingCaption = function() {
+ var t4, e3, n3;
+ return this.pendingCaption != null ? (t4 = this.pendingCaption, this.pendingCaption = null, t4 ? (e3 = this.delegate) != null && typeof e3.attachmentEditorDidRequestUpdatingAttributesForAttachment == "function" ? e3.attachmentEditorDidRequestUpdatingAttributesForAttachment({caption: t4}, this.attachment) : void 0 : (n3 = this.delegate) != null && typeof n3.attachmentEditorDidRequestRemovingAttributeForAttachment == "function" ? n3.attachmentEditorDidRequestRemovingAttributeForAttachment("caption", this.attachment) : void 0) : void 0;
+ }, h2.prototype.makeElementMutable = p2(function() {
+ return {do: function(t4) {
+ return function() {
+ return t4.element.dataset.trixMutable = true;
+ };
+ }(this), undo: function(t4) {
+ return function() {
+ return delete t4.element.dataset.trixMutable;
+ };
+ }(this)};
+ }), h2.prototype.addToolbar = p2(function() {
+ var n3;
+ return n3 = s2({tagName: "div", className: t3.attachmentToolbar, data: {trixMutable: true}, childNodes: s2({tagName: "div", className: "trix-button-row", childNodes: s2({tagName: "span", className: "trix-button-group trix-button-group--actions", childNodes: s2({tagName: "button", className: "trix-button trix-button--remove", textContent: r2.remove, attributes: {title: r2.remove}, data: {trixAction: "remove"}})})})}), this.attachment.isPreviewable() && n3.appendChild(s2({tagName: "div", className: t3.attachmentMetadataContainer, childNodes: s2({tagName: "span", className: t3.attachmentMetadata, childNodes: [s2({tagName: "span", className: t3.attachmentName, textContent: this.attachment.getFilename(), attributes: {title: this.attachment.getFilename()}}), s2({tagName: "span", className: t3.attachmentSize, textContent: this.attachment.getFormattedFilesize()})]})})), i("click", {onElement: n3, withCallback: this.didClickToolbar}), i("click", {onElement: n3, matchingSelector: "[data-trix-action]", withCallback: this.didClickActionButton}), {do: function(t4) {
+ return function() {
+ return t4.element.appendChild(n3);
+ };
+ }(this), undo: function() {
+ return function() {
+ return e2.removeNode(n3);
+ };
+ }(this)};
+ }), h2.prototype.installCaptionEditor = p2(function() {
+ var o3, a4, u2, c3, l2;
+ return c3 = s2({tagName: "textarea", className: t3.attachmentCaptionEditor, attributes: {placeholder: r2.captionPlaceholder}, data: {trixMutable: true}}), c3.value = this.attachmentPiece.getCaption(), l2 = c3.cloneNode(), l2.classList.add("trix-autoresize-clone"), l2.tabIndex = -1, o3 = function() {
+ return l2.value = c3.value, c3.style.height = l2.scrollHeight + "px";
+ }, i("input", {onElement: c3, withCallback: o3}), i("input", {onElement: c3, withCallback: this.didInputCaption}), i("keydown", {onElement: c3, withCallback: this.didKeyDownCaption}), i("change", {onElement: c3, withCallback: this.didChangeCaption}), i("blur", {onElement: c3, withCallback: this.didBlurCaption}), u2 = this.element.querySelector("figcaption"), a4 = u2.cloneNode(), {do: function(e3) {
+ return function() {
+ return u2.style.display = "none", a4.appendChild(c3), a4.appendChild(l2), a4.classList.add(t3.attachmentCaption + "--editing"), u2.parentElement.insertBefore(a4, u2), o3(), e3.options.editCaption ? n2(function() {
+ return c3.focus();
+ }) : void 0;
+ };
+ }(this), undo: function() {
+ return e2.removeNode(a4), u2.style.display = null;
+ }};
+ }), h2.prototype.didClickToolbar = function(t4) {
+ return t4.preventDefault(), t4.stopPropagation();
+ }, h2.prototype.didClickActionButton = function(t4) {
+ var e3, n3;
+ switch (e3 = t4.target.getAttribute("data-trix-action")) {
+ case "remove":
+ return (n3 = this.delegate) != null ? n3.attachmentEditorDidRequestRemovalOfAttachment(this.attachment) : void 0;
+ }
+ }, h2.prototype.didKeyDownCaption = function(t4) {
+ var e3;
+ return o2[t4.keyCode] === "return" ? (t4.preventDefault(), this.savePendingCaption(), (e3 = this.delegate) != null && typeof e3.attachmentEditorDidRequestDeselectingAttachment == "function" ? e3.attachmentEditorDidRequestDeselectingAttachment(this.attachment) : void 0) : void 0;
+ }, h2.prototype.didInputCaption = function(t4) {
+ return this.pendingCaption = t4.target.value.replace(/\s/g, " ").trim();
+ }, h2.prototype.didChangeCaption = function() {
+ return this.savePendingCaption();
+ }, h2.prototype.didBlurCaption = function() {
+ return this.savePendingCaption();
+ }, h2;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3, n2, i, o2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ r2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, r2 = {}.hasOwnProperty;
+ i = e2.makeElement, t3 = e2.config.css, e2.AttachmentView = function(r3) {
+ function s2() {
+ s2.__super__.constructor.apply(this, arguments), this.attachment = this.object, this.attachment.uploadProgressDelegate = this, this.attachmentPiece = this.options.piece;
+ }
+ var a2;
+ return o2(s2, r3), s2.attachmentSelector = "[data-trix-attachment]", s2.prototype.createContentNodes = function() {
+ return [];
+ }, s2.prototype.createNodes = function() {
+ var e3, n3, o3, r4, s3, u, c2;
+ if (e3 = r4 = i({tagName: "figure", className: this.getClassName(), data: this.getData(), editable: false}), (n3 = this.getHref()) && (r4 = i({tagName: "a", editable: false, attributes: {href: n3, tabindex: -1}}), e3.appendChild(r4)), this.attachment.hasContent())
+ r4.innerHTML = this.attachment.getContent();
+ else
+ for (c2 = this.createContentNodes(), o3 = 0, s3 = c2.length; s3 > o3; o3++)
+ u = c2[o3], r4.appendChild(u);
+ return r4.appendChild(this.createCaptionElement()), this.attachment.isPending() && (this.progressElement = i({tagName: "progress", attributes: {class: t3.attachmentProgress, value: this.attachment.getUploadProgress(), max: 100}, data: {trixMutable: true, trixStoreKey: ["progressElement", this.attachment.id].join("/")}}), e3.appendChild(this.progressElement)), [a2("left"), e3, a2("right")];
+ }, s2.prototype.createCaptionElement = function() {
+ var e3, n3, o3, r4, s3, a3, u;
+ return o3 = i({tagName: "figcaption", className: t3.attachmentCaption}), (e3 = this.attachmentPiece.getCaption()) ? (o3.classList.add(t3.attachmentCaption + "--edited"), o3.textContent = e3) : (n3 = this.getCaptionConfig(), n3.name && (r4 = this.attachment.getFilename()), n3.size && (a3 = this.attachment.getFormattedFilesize()), r4 && (s3 = i({tagName: "span", className: t3.attachmentName, textContent: r4}), o3.appendChild(s3)), a3 && (r4 && o3.appendChild(document.createTextNode(" ")), u = i({tagName: "span", className: t3.attachmentSize, textContent: a3}), o3.appendChild(u))), o3;
+ }, s2.prototype.getClassName = function() {
+ var e3, n3;
+ return n3 = [t3.attachment, t3.attachment + "--" + this.attachment.getType()], (e3 = this.attachment.getExtension()) && n3.push(t3.attachment + "--" + e3), n3.join(" ");
+ }, s2.prototype.getData = function() {
+ var t4, e3;
+ return e3 = {trixAttachment: JSON.stringify(this.attachment), trixContentType: this.attachment.getContentType(), trixId: this.attachment.id}, t4 = this.attachmentPiece.attributes, t4.isEmpty() || (e3.trixAttributes = JSON.stringify(t4)), this.attachment.isPending() && (e3.trixSerialize = false), e3;
+ }, s2.prototype.getHref = function() {
+ return n2(this.attachment.getContent(), "a") ? void 0 : this.attachment.getHref();
+ }, s2.prototype.getCaptionConfig = function() {
+ var t4, n3, i2;
+ return i2 = this.attachment.getType(), t4 = e2.copyObject((n3 = e2.config.attachments[i2]) != null ? n3.caption : void 0), i2 === "file" && (t4.name = true), t4;
+ }, s2.prototype.findProgressElement = function() {
+ var t4;
+ return (t4 = this.findElement()) != null ? t4.querySelector("progress") : void 0;
+ }, a2 = function(t4) {
+ return i({tagName: "span", textContent: e2.ZERO_WIDTH_SPACE, data: {trixCursorTarget: t4, trixSerialize: false}});
+ }, s2.prototype.attachmentDidChangeUploadProgress = function() {
+ var t4, e3;
+ return e3 = this.attachment.getUploadProgress(), (t4 = this.findProgressElement()) != null ? t4.value = e3 : void 0;
+ }, s2;
+ }(e2.ObjectView), n2 = function(t4, e3) {
+ var n3;
+ return n3 = i("div"), n3.innerHTML = t4 != null ? t4 : "", n3.querySelector(e3);
+ };
+ }.call(this), function() {
+ var t3, n2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ i.call(e3, o2) && (t4[o2] = e3[o2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, i = {}.hasOwnProperty;
+ t3 = e2.makeElement, e2.PreviewableAttachmentView = function(i2) {
+ function o2() {
+ o2.__super__.constructor.apply(this, arguments), this.attachment.previewDelegate = this;
+ }
+ return n2(o2, i2), o2.prototype.createContentNodes = function() {
+ return this.image = t3({tagName: "img", attributes: {src: ""}, data: {trixMutable: true}}), this.refresh(this.image), [this.image];
+ }, o2.prototype.createCaptionElement = function() {
+ var t4;
+ return t4 = o2.__super__.createCaptionElement.apply(this, arguments), t4.textContent || t4.setAttribute("data-trix-placeholder", e2.config.lang.captionPlaceholder), t4;
+ }, o2.prototype.refresh = function(t4) {
+ var e3;
+ return t4 == null && (t4 = (e3 = this.findElement()) != null ? e3.querySelector("img") : void 0), t4 ? this.updateAttributesForImage(t4) : void 0;
+ }, o2.prototype.updateAttributesForImage = function(t4) {
+ var e3, n3, i3, o3, r2, s2;
+ return r2 = this.attachment.getURL(), n3 = this.attachment.getPreviewURL(), t4.src = n3 || r2, n3 === r2 ? t4.removeAttribute("data-trix-serialized-attributes") : (i3 = JSON.stringify({src: r2}), t4.setAttribute("data-trix-serialized-attributes", i3)), s2 = this.attachment.getWidth(), e3 = this.attachment.getHeight(), s2 != null && (t4.width = s2), e3 != null && (t4.height = e3), o3 = ["imageElement", this.attachment.id, t4.src, t4.width, t4.height].join("/"), t4.dataset.trixStoreKey = o3;
+ }, o2.prototype.attachmentDidChangeAttributes = function() {
+ return this.refresh(this.image), this.refresh();
+ }, o2;
+ }(e2.AttachmentView);
+ }.call(this), function() {
+ var t3, n2, i, o2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ r2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, r2 = {}.hasOwnProperty;
+ i = e2.makeElement, t3 = e2.findInnerElement, n2 = e2.getTextConfig, e2.PieceView = function(r3) {
+ function s2() {
+ var t4;
+ s2.__super__.constructor.apply(this, arguments), this.piece = this.object, this.attributes = this.piece.getAttributes(), t4 = this.options, this.textConfig = t4.textConfig, this.context = t4.context, this.piece.attachment ? this.attachment = this.piece.attachment : this.string = this.piece.toString();
+ }
+ var a2;
+ return o2(s2, r3), s2.prototype.createNodes = function() {
+ var e3, n3, i2, o3, r4, s3;
+ if (s3 = this.attachment ? this.createAttachmentNodes() : this.createStringNodes(), e3 = this.createElement()) {
+ for (i2 = t3(e3), n3 = 0, o3 = s3.length; o3 > n3; n3++)
+ r4 = s3[n3], i2.appendChild(r4);
+ s3 = [e3];
+ }
+ return s3;
+ }, s2.prototype.createAttachmentNodes = function() {
+ var t4, n3;
+ return t4 = this.attachment.isPreviewable() ? e2.PreviewableAttachmentView : e2.AttachmentView, n3 = this.createChildView(t4, this.piece.attachment, {piece: this.piece}), n3.getNodes();
+ }, s2.prototype.createStringNodes = function() {
+ var t4, e3, n3, o3, r4, s3, a3, u, c2, l;
+ if ((u = this.textConfig) != null ? u.plaintext : void 0)
+ return [document.createTextNode(this.string)];
+ for (a3 = [], c2 = this.string.split("\n"), n3 = e3 = 0, o3 = c2.length; o3 > e3; n3 = ++e3)
+ l = c2[n3], n3 > 0 && (t4 = i("br"), a3.push(t4)), (r4 = l.length) && (s3 = document.createTextNode(this.preserveSpaces(l)), a3.push(s3));
+ return a3;
+ }, s2.prototype.createElement = function() {
+ var t4, e3, o3, r4, s3, a3, u, c2, l;
+ c2 = {}, a3 = this.attributes;
+ for (r4 in a3)
+ if (l = a3[r4], (t4 = n2(r4)) && (t4.tagName && (s3 = i(t4.tagName), o3 ? (o3.appendChild(s3), o3 = s3) : e3 = o3 = s3), t4.styleProperty && (c2[t4.styleProperty] = l), t4.style)) {
+ u = t4.style;
+ for (r4 in u)
+ l = u[r4], c2[r4] = l;
+ }
+ if (Object.keys(c2).length) {
+ e3 == null && (e3 = i("span"));
+ for (r4 in c2)
+ l = c2[r4], e3.style[r4] = l;
+ }
+ return e3;
+ }, s2.prototype.createContainerElement = function() {
+ var t4, e3, o3, r4, s3;
+ r4 = this.attributes;
+ for (o3 in r4)
+ if (s3 = r4[o3], (e3 = n2(o3)) && e3.groupTagName)
+ return t4 = {}, t4[o3] = s3, i(e3.groupTagName, t4);
+ }, a2 = e2.NON_BREAKING_SPACE, s2.prototype.preserveSpaces = function(t4) {
+ return this.context.isLast && (t4 = t4.replace(/\ $/, a2)), t4 = t4.replace(/(\S)\ {3}(\S)/g, "$1 " + a2 + " $2").replace(/\ {2}/g, a2 + " ").replace(/\ {2}/g, " " + a2), (this.context.isFirst || this.context.followsWhitespace) && (t4 = t4.replace(/^\ /, a2)), t4;
+ }, s2;
+ }(e2.ObjectView);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.TextView = function(n3) {
+ function i() {
+ i.__super__.constructor.apply(this, arguments), this.text = this.object, this.textConfig = this.options.textConfig;
+ }
+ var o2;
+ return t3(i, n3), i.prototype.createNodes = function() {
+ var t4, n4, i2, r2, s2, a2, u, c2, l, h;
+ for (a2 = [], c2 = e2.ObjectGroup.groupObjects(this.getPieces()), r2 = c2.length - 1, i2 = n4 = 0, s2 = c2.length; s2 > n4; i2 = ++n4)
+ u = c2[i2], t4 = {}, i2 === 0 && (t4.isFirst = true), i2 === r2 && (t4.isLast = true), o2(l) && (t4.followsWhitespace = true), h = this.findOrCreateCachedChildView(e2.PieceView, u, {textConfig: this.textConfig, context: t4}), a2.push.apply(a2, h.getNodes()), l = u;
+ return a2;
+ }, i.prototype.getPieces = function() {
+ var t4, e3, n4, i2, o3;
+ for (i2 = this.text.getPieces(), o3 = [], t4 = 0, e3 = i2.length; e3 > t4; t4++)
+ n4 = i2[t4], n4.hasAttribute("blockBreak") || o3.push(n4);
+ return o3;
+ }, o2 = function(t4) {
+ return /\s$/.test(t4 != null ? t4.toString() : void 0);
+ }, i;
+ }(e2.ObjectView);
+ }.call(this), function() {
+ var t3, n2, i, o2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ r2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, r2 = {}.hasOwnProperty;
+ i = e2.makeElement, n2 = e2.getBlockConfig, t3 = e2.config.css, e2.BlockView = function(r3) {
+ function s2() {
+ s2.__super__.constructor.apply(this, arguments), this.block = this.object, this.attributes = this.block.getAttributes();
+ }
+ return o2(s2, r3), s2.prototype.createNodes = function() {
+ var t4, o3, r4, s3, a2, u, c2, l, h, p2, d;
+ if (o3 = document.createComment("block"), c2 = [o3], this.block.isEmpty() ? c2.push(i("br")) : (p2 = (l = n2(this.block.getLastAttribute())) != null ? l.text : void 0, d = this.findOrCreateCachedChildView(e2.TextView, this.block.text, {textConfig: p2}), c2.push.apply(c2, d.getNodes()), this.shouldAddExtraNewlineElement() && c2.push(i("br"))), this.attributes.length)
+ return c2;
+ for (h = e2.config.blockAttributes["default"].tagName, this.block.isRTL() && (t4 = {dir: "rtl"}), r4 = i({tagName: h, attributes: t4}), s3 = 0, a2 = c2.length; a2 > s3; s3++)
+ u = c2[s3], r4.appendChild(u);
+ return [r4];
+ }, s2.prototype.createContainerElement = function(e3) {
+ var o3, r4, s3, a2, u;
+ return o3 = this.attributes[e3], u = n2(o3).tagName, e3 === 0 && this.block.isRTL() && (r4 = {dir: "rtl"}), o3 === "attachmentGallery" && (a2 = this.block.getBlockBreakPosition(), s3 = t3.attachmentGallery + " " + t3.attachmentGallery + "--" + a2), i({tagName: u, className: s3, attributes: r4});
+ }, s2.prototype.shouldAddExtraNewlineElement = function() {
+ return /\n\n$/.test(this.block.toString());
+ }, s2;
+ }(e2.ObjectView);
+ }.call(this), function() {
+ var t3, n2, i = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ o2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, o2 = {}.hasOwnProperty;
+ t3 = e2.defer, n2 = e2.makeElement, e2.DocumentView = function(o3) {
+ function r2() {
+ r2.__super__.constructor.apply(this, arguments), this.element = this.options.element, this.elementStore = new e2.ElementStore(), this.setDocument(this.object);
+ }
+ var s2, a2, u;
+ return i(r2, o3), r2.render = function(t4) {
+ var e3, i2;
+ return e3 = n2("div"), i2 = new this(t4, {element: e3}), i2.render(), i2.sync(), e3;
+ }, r2.prototype.setDocument = function(t4) {
+ return t4.isEqualTo(this.document) ? void 0 : this.document = this.object = t4;
+ }, r2.prototype.render = function() {
+ var t4, i2, o4, r3, s3, a3, u2;
+ if (this.childViews = [], this.shadowElement = n2("div"), !this.document.isEmpty()) {
+ for (s3 = e2.ObjectGroup.groupObjects(this.document.getBlocks(), {asTree: true}), a3 = [], t4 = 0, i2 = s3.length; i2 > t4; t4++)
+ r3 = s3[t4], u2 = this.findOrCreateCachedChildView(e2.BlockView, r3), a3.push(function() {
+ var t5, e3, n3, i3;
+ for (n3 = u2.getNodes(), i3 = [], t5 = 0, e3 = n3.length; e3 > t5; t5++)
+ o4 = n3[t5], i3.push(this.shadowElement.appendChild(o4));
+ return i3;
+ }.call(this));
+ return a3;
+ }
+ }, r2.prototype.isSynced = function() {
+ return s2(this.shadowElement, this.element);
+ }, r2.prototype.sync = function() {
+ var t4;
+ for (t4 = this.createDocumentFragmentForSync(); this.element.lastChild; )
+ this.element.removeChild(this.element.lastChild);
+ return this.element.appendChild(t4), this.didSync();
+ }, r2.prototype.didSync = function() {
+ return this.elementStore.reset(a2(this.element)), t3(function(t4) {
+ return function() {
+ return t4.garbageCollectCachedViews();
+ };
+ }(this));
+ }, r2.prototype.createDocumentFragmentForSync = function() {
+ var t4, e3, n3, i2, o4, r3, s3, u2, c2, l;
+ for (e3 = document.createDocumentFragment(), u2 = this.shadowElement.childNodes, n3 = 0, o4 = u2.length; o4 > n3; n3++)
+ s3 = u2[n3], e3.appendChild(s3.cloneNode(true));
+ for (c2 = a2(e3), i2 = 0, r3 = c2.length; r3 > i2; i2++)
+ t4 = c2[i2], (l = this.elementStore.remove(t4)) && t4.parentNode.replaceChild(l, t4);
+ return e3;
+ }, a2 = function(t4) {
+ return t4.querySelectorAll("[data-trix-store-key]");
+ }, s2 = function(t4, e3) {
+ return u(t4.innerHTML) === u(e3.innerHTML);
+ }, u = function(t4) {
+ return t4.replace(/ /g, " ");
+ }, r2;
+ }(e2.ObjectView);
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2 = function(t4, e3) {
+ return function() {
+ return t4.apply(e3, arguments);
+ };
+ }, a2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ u.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, u = {}.hasOwnProperty;
+ i = e2.findClosestElementFromNode, o2 = e2.handleEvent, r2 = e2.innerElementIsActive, n2 = e2.defer, t3 = e2.AttachmentView.attachmentSelector, e2.CompositionController = function(u2) {
+ function c2(n3, i2) {
+ this.element = n3, this.composition = i2, this.didClickAttachment = s2(this.didClickAttachment, this), this.didBlur = s2(this.didBlur, this), this.didFocus = s2(this.didFocus, this), this.documentView = new e2.DocumentView(this.composition.document, {element: this.element}), o2("focus", {onElement: this.element, withCallback: this.didFocus}), o2("blur", {onElement: this.element, withCallback: this.didBlur}), o2("click", {onElement: this.element, matchingSelector: "a[contenteditable=false]", preventDefault: true}), o2("mousedown", {onElement: this.element, matchingSelector: t3, withCallback: this.didClickAttachment}), o2("click", {onElement: this.element, matchingSelector: "a" + t3, preventDefault: true});
+ }
+ return a2(c2, u2), c2.prototype.didFocus = function() {
+ var t4, e3, n3;
+ return t4 = function(t5) {
+ return function() {
+ var e4;
+ return t5.focused ? void 0 : (t5.focused = true, (e4 = t5.delegate) != null && typeof e4.compositionControllerDidFocus == "function" ? e4.compositionControllerDidFocus() : void 0);
+ };
+ }(this), (e3 = (n3 = this.blurPromise) != null ? n3.then(t4) : void 0) != null ? e3 : t4();
+ }, c2.prototype.didBlur = function() {
+ return this.blurPromise = new Promise(function(t4) {
+ return function(e3) {
+ return n2(function() {
+ var n3;
+ return r2(t4.element) || (t4.focused = null, (n3 = t4.delegate) != null && typeof n3.compositionControllerDidBlur == "function" && n3.compositionControllerDidBlur()), t4.blurPromise = null, e3();
+ });
+ };
+ }(this));
+ }, c2.prototype.didClickAttachment = function(t4, e3) {
+ var n3, o3, r3;
+ return n3 = this.findAttachmentForElement(e3), o3 = i(t4.target, {matchingSelector: "figcaption"}) != null, (r3 = this.delegate) != null && typeof r3.compositionControllerDidSelectAttachment == "function" ? r3.compositionControllerDidSelectAttachment(n3, {editCaption: o3}) : void 0;
+ }, c2.prototype.getSerializableElement = function() {
+ return this.isEditingAttachment() ? this.documentView.shadowElement : this.element;
+ }, c2.prototype.render = function() {
+ var t4, e3, n3;
+ return this.revision !== this.composition.revision && (this.documentView.setDocument(this.composition.document), this.documentView.render(), this.revision = this.composition.revision), this.canSyncDocumentView() && !this.documentView.isSynced() && ((t4 = this.delegate) != null && typeof t4.compositionControllerWillSyncDocumentView == "function" && t4.compositionControllerWillSyncDocumentView(), this.documentView.sync(), (e3 = this.delegate) != null && typeof e3.compositionControllerDidSyncDocumentView == "function" && e3.compositionControllerDidSyncDocumentView()), (n3 = this.delegate) != null && typeof n3.compositionControllerDidRender == "function" ? n3.compositionControllerDidRender() : void 0;
+ }, c2.prototype.rerenderViewForObject = function(t4) {
+ return this.invalidateViewForObject(t4), this.render();
+ }, c2.prototype.invalidateViewForObject = function(t4) {
+ return this.documentView.invalidateViewForObject(t4);
+ }, c2.prototype.isViewCachingEnabled = function() {
+ return this.documentView.isViewCachingEnabled();
+ }, c2.prototype.enableViewCaching = function() {
+ return this.documentView.enableViewCaching();
+ }, c2.prototype.disableViewCaching = function() {
+ return this.documentView.disableViewCaching();
+ }, c2.prototype.refreshViewCache = function() {
+ return this.documentView.garbageCollectCachedViews();
+ }, c2.prototype.isEditingAttachment = function() {
+ return this.attachmentEditor != null;
+ }, c2.prototype.installAttachmentEditorForAttachment = function(t4, n3) {
+ var i2, o3, r3;
+ if (((r3 = this.attachmentEditor) != null ? r3.attachment : void 0) !== t4 && (o3 = this.documentView.findElementForObject(t4)))
+ return this.uninstallAttachmentEditor(), i2 = this.composition.document.getAttachmentPieceForAttachment(t4), this.attachmentEditor = new e2.AttachmentEditorController(i2, o3, this.element, n3), this.attachmentEditor.delegate = this;
+ }, c2.prototype.uninstallAttachmentEditor = function() {
+ var t4;
+ return (t4 = this.attachmentEditor) != null ? t4.uninstall() : void 0;
+ }, c2.prototype.didUninstallAttachmentEditor = function() {
+ return this.attachmentEditor = null, this.render();
+ }, c2.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment = function(t4, e3) {
+ var n3;
+ return (n3 = this.delegate) != null && typeof n3.compositionControllerWillUpdateAttachment == "function" && n3.compositionControllerWillUpdateAttachment(e3), this.composition.updateAttributesForAttachment(t4, e3);
+ }, c2.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment = function(t4, e3) {
+ var n3;
+ return (n3 = this.delegate) != null && typeof n3.compositionControllerWillUpdateAttachment == "function" && n3.compositionControllerWillUpdateAttachment(e3), this.composition.removeAttributeForAttachment(t4, e3);
+ }, c2.prototype.attachmentEditorDidRequestRemovalOfAttachment = function(t4) {
+ var e3;
+ return (e3 = this.delegate) != null && typeof e3.compositionControllerDidRequestRemovalOfAttachment == "function" ? e3.compositionControllerDidRequestRemovalOfAttachment(t4) : void 0;
+ }, c2.prototype.attachmentEditorDidRequestDeselectingAttachment = function(t4) {
+ var e3;
+ return (e3 = this.delegate) != null && typeof e3.compositionControllerDidRequestDeselectingAttachment == "function" ? e3.compositionControllerDidRequestDeselectingAttachment(t4) : void 0;
+ }, c2.prototype.canSyncDocumentView = function() {
+ return !this.isEditingAttachment();
+ }, c2.prototype.findAttachmentForElement = function(t4) {
+ return this.composition.document.getAttachmentById(parseInt(t4.dataset.trixId, 10));
+ }, c2;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3, n2, i, o2 = function(t4, e3) {
+ return function() {
+ return t4.apply(e3, arguments);
+ };
+ }, r2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ s2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, s2 = {}.hasOwnProperty;
+ n2 = e2.handleEvent, i = e2.triggerEvent, t3 = e2.findClosestElementFromNode, e2.ToolbarController = function(e3) {
+ function s3(t4) {
+ this.element = t4, this.didKeyDownDialogInput = o2(this.didKeyDownDialogInput, this), this.didClickDialogButton = o2(this.didClickDialogButton, this), this.didClickAttributeButton = o2(this.didClickAttributeButton, this), this.didClickActionButton = o2(this.didClickActionButton, this), this.attributes = {}, this.actions = {}, this.resetDialogInputs(), n2("mousedown", {onElement: this.element, matchingSelector: a2, withCallback: this.didClickActionButton}), n2("mousedown", {onElement: this.element, matchingSelector: c2, withCallback: this.didClickAttributeButton}), n2("click", {onElement: this.element, matchingSelector: v, preventDefault: true}), n2("click", {onElement: this.element, matchingSelector: l, withCallback: this.didClickDialogButton}), n2("keydown", {onElement: this.element, matchingSelector: h, withCallback: this.didKeyDownDialogInput});
+ }
+ var a2, u, c2, l, h, p2, d, f, g, m, v;
+ return r2(s3, e3), c2 = "[data-trix-attribute]", a2 = "[data-trix-action]", v = c2 + ", " + a2, p2 = "[data-trix-dialog]", u = p2 + "[data-trix-active]", l = p2 + " [data-trix-method]", h = p2 + " [data-trix-input]", s3.prototype.didClickActionButton = function(t4, e4) {
+ var n3, i2, o3;
+ return (i2 = this.delegate) != null && i2.toolbarDidClickButton(), t4.preventDefault(), n3 = d(e4), this.getDialog(n3) ? this.toggleDialog(n3) : (o3 = this.delegate) != null ? o3.toolbarDidInvokeAction(n3) : void 0;
+ }, s3.prototype.didClickAttributeButton = function(t4, e4) {
+ var n3, i2, o3;
+ return (i2 = this.delegate) != null && i2.toolbarDidClickButton(), t4.preventDefault(), n3 = f(e4), this.getDialog(n3) ? this.toggleDialog(n3) : (o3 = this.delegate) != null && o3.toolbarDidToggleAttribute(n3), this.refreshAttributeButtons();
+ }, s3.prototype.didClickDialogButton = function(e4, n3) {
+ var i2, o3;
+ return i2 = t3(n3, {matchingSelector: p2}), o3 = n3.getAttribute("data-trix-method"), this[o3].call(this, i2);
+ }, s3.prototype.didKeyDownDialogInput = function(t4, e4) {
+ var n3, i2;
+ return t4.keyCode === 13 && (t4.preventDefault(), n3 = e4.getAttribute("name"), i2 = this.getDialog(n3), this.setAttribute(i2)), t4.keyCode === 27 ? (t4.preventDefault(), this.hideDialog()) : void 0;
+ }, s3.prototype.updateActions = function(t4) {
+ return this.actions = t4, this.refreshActionButtons();
+ }, s3.prototype.refreshActionButtons = function() {
+ return this.eachActionButton(function(t4) {
+ return function(e4, n3) {
+ return e4.disabled = t4.actions[n3] === false;
+ };
+ }(this));
+ }, s3.prototype.eachActionButton = function(t4) {
+ var e4, n3, i2, o3, r3;
+ for (o3 = this.element.querySelectorAll(a2), r3 = [], n3 = 0, i2 = o3.length; i2 > n3; n3++)
+ e4 = o3[n3], r3.push(t4(e4, d(e4)));
+ return r3;
+ }, s3.prototype.updateAttributes = function(t4) {
+ return this.attributes = t4, this.refreshAttributeButtons();
+ }, s3.prototype.refreshAttributeButtons = function() {
+ return this.eachAttributeButton(function(t4) {
+ return function(e4, n3) {
+ return e4.disabled = t4.attributes[n3] === false, t4.attributes[n3] || t4.dialogIsVisible(n3) ? (e4.setAttribute("data-trix-active", ""), e4.classList.add("trix-active")) : (e4.removeAttribute("data-trix-active"), e4.classList.remove("trix-active"));
+ };
+ }(this));
+ }, s3.prototype.eachAttributeButton = function(t4) {
+ var e4, n3, i2, o3, r3;
+ for (o3 = this.element.querySelectorAll(c2), r3 = [], n3 = 0, i2 = o3.length; i2 > n3; n3++)
+ e4 = o3[n3], r3.push(t4(e4, f(e4)));
+ return r3;
+ }, s3.prototype.applyKeyboardCommand = function(t4) {
+ var e4, n3, o3, r3, s4, a3, u2;
+ for (s4 = JSON.stringify(t4.sort()), u2 = this.element.querySelectorAll("[data-trix-key]"), r3 = 0, a3 = u2.length; a3 > r3; r3++)
+ if (e4 = u2[r3], o3 = e4.getAttribute("data-trix-key").split("+"), n3 = JSON.stringify(o3.sort()), n3 === s4)
+ return i("mousedown", {onElement: e4}), true;
+ return false;
+ }, s3.prototype.dialogIsVisible = function(t4) {
+ var e4;
+ return (e4 = this.getDialog(t4)) ? e4.hasAttribute("data-trix-active") : void 0;
+ }, s3.prototype.toggleDialog = function(t4) {
+ return this.dialogIsVisible(t4) ? this.hideDialog() : this.showDialog(t4);
+ }, s3.prototype.showDialog = function(t4) {
+ var e4, n3, i2, o3, r3, s4, a3, u2, c3, l2;
+ for (this.hideDialog(), (a3 = this.delegate) != null && a3.toolbarWillShowDialog(), i2 = this.getDialog(t4), i2.setAttribute("data-trix-active", ""), i2.classList.add("trix-active"), u2 = i2.querySelectorAll("input[disabled]"), o3 = 0, s4 = u2.length; s4 > o3; o3++)
+ n3 = u2[o3], n3.removeAttribute("disabled");
+ return (e4 = f(i2)) && (r3 = m(i2, t4)) && (r3.value = (c3 = this.attributes[e4]) != null ? c3 : "", r3.select()), (l2 = this.delegate) != null ? l2.toolbarDidShowDialog(t4) : void 0;
+ }, s3.prototype.setAttribute = function(t4) {
+ var e4, n3, i2;
+ return e4 = f(t4), n3 = m(t4, e4), n3.willValidate && !n3.checkValidity() ? (n3.setAttribute("data-trix-validate", ""), n3.classList.add("trix-validate"), n3.focus()) : ((i2 = this.delegate) != null && i2.toolbarDidUpdateAttribute(e4, n3.value), this.hideDialog());
+ }, s3.prototype.removeAttribute = function(t4) {
+ var e4, n3;
+ return e4 = f(t4), (n3 = this.delegate) != null && n3.toolbarDidRemoveAttribute(e4), this.hideDialog();
+ }, s3.prototype.hideDialog = function() {
+ var t4, e4;
+ return (t4 = this.element.querySelector(u)) ? (t4.removeAttribute("data-trix-active"), t4.classList.remove("trix-active"), this.resetDialogInputs(), (e4 = this.delegate) != null ? e4.toolbarDidHideDialog(g(t4)) : void 0) : void 0;
+ }, s3.prototype.resetDialogInputs = function() {
+ var t4, e4, n3, i2, o3;
+ for (i2 = this.element.querySelectorAll(h), o3 = [], t4 = 0, n3 = i2.length; n3 > t4; t4++)
+ e4 = i2[t4], e4.setAttribute("disabled", "disabled"), e4.removeAttribute("data-trix-validate"), o3.push(e4.classList.remove("trix-validate"));
+ return o3;
+ }, s3.prototype.getDialog = function(t4) {
+ return this.element.querySelector("[data-trix-dialog=" + t4 + "]");
+ }, m = function(t4, e4) {
+ return e4 == null && (e4 = f(t4)), t4.querySelector("[data-trix-input][name='" + e4 + "']");
+ }, d = function(t4) {
+ return t4.getAttribute("data-trix-action");
+ }, f = function(t4) {
+ var e4;
+ return (e4 = t4.getAttribute("data-trix-attribute")) != null ? e4 : t4.getAttribute("data-trix-dialog-attribute");
+ }, g = function(t4) {
+ return t4.getAttribute("data-trix-dialog");
+ }, s3;
+ }(e2.BasicObject);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.ImagePreloadOperation = function(e3) {
+ function n3(t4) {
+ this.url = t4;
+ }
+ return t3(n3, e3), n3.prototype.perform = function(t4) {
+ var e4;
+ return e4 = new Image(), e4.onload = function(n4) {
+ return function() {
+ return e4.width = n4.width = e4.naturalWidth, e4.height = n4.height = e4.naturalHeight, t4(true, e4);
+ };
+ }(this), e4.onerror = function() {
+ return t4(false);
+ }, e4.src = this.url;
+ }, n3;
+ }(e2.Operation);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ return function() {
+ return t4.apply(e3, arguments);
+ };
+ }, n2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ i.call(e3, o2) && (t4[o2] = e3[o2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, i = {}.hasOwnProperty;
+ e2.Attachment = function(i2) {
+ function o2(n3) {
+ n3 == null && (n3 = {}), this.releaseFile = t3(this.releaseFile, this), o2.__super__.constructor.apply(this, arguments), this.attributes = e2.Hash.box(n3), this.didChangeAttributes();
+ }
+ return n2(o2, i2), o2.previewablePattern = /^image(\/(gif|png|jpe?g)|$)/, o2.attachmentForFile = function(t4) {
+ var e3, n3;
+ return n3 = this.attributesForFile(t4), e3 = new this(n3), e3.setFile(t4), e3;
+ }, o2.attributesForFile = function(t4) {
+ return new e2.Hash({filename: t4.name, filesize: t4.size, contentType: t4.type});
+ }, o2.fromJSON = function(t4) {
+ return new this(t4);
+ }, o2.prototype.getAttribute = function(t4) {
+ return this.attributes.get(t4);
+ }, o2.prototype.hasAttribute = function(t4) {
+ return this.attributes.has(t4);
+ }, o2.prototype.getAttributes = function() {
+ return this.attributes.toObject();
+ }, o2.prototype.setAttributes = function(t4) {
+ var e3, n3, i3;
+ return t4 == null && (t4 = {}), e3 = this.attributes.merge(t4), this.attributes.isEqualTo(e3) ? void 0 : (this.attributes = e3, this.didChangeAttributes(), (n3 = this.previewDelegate) != null && typeof n3.attachmentDidChangeAttributes == "function" && n3.attachmentDidChangeAttributes(this), (i3 = this.delegate) != null && typeof i3.attachmentDidChangeAttributes == "function" ? i3.attachmentDidChangeAttributes(this) : void 0);
+ }, o2.prototype.didChangeAttributes = function() {
+ return this.isPreviewable() ? this.preloadURL() : void 0;
+ }, o2.prototype.isPending = function() {
+ return this.file != null && !(this.getURL() || this.getHref());
+ }, o2.prototype.isPreviewable = function() {
+ return this.attributes.has("previewable") ? this.attributes.get("previewable") : this.constructor.previewablePattern.test(this.getContentType());
+ }, o2.prototype.getType = function() {
+ return this.hasContent() ? "content" : this.isPreviewable() ? "preview" : "file";
+ }, o2.prototype.getURL = function() {
+ return this.attributes.get("url");
+ }, o2.prototype.getHref = function() {
+ return this.attributes.get("href");
+ }, o2.prototype.getFilename = function() {
+ var t4;
+ return (t4 = this.attributes.get("filename")) != null ? t4 : "";
+ }, o2.prototype.getFilesize = function() {
+ return this.attributes.get("filesize");
+ }, o2.prototype.getFormattedFilesize = function() {
+ var t4;
+ return t4 = this.attributes.get("filesize"), typeof t4 == "number" ? e2.config.fileSize.formatter(t4) : "";
+ }, o2.prototype.getExtension = function() {
+ var t4;
+ return (t4 = this.getFilename().match(/\.(\w+)$/)) != null ? t4[1].toLowerCase() : void 0;
+ }, o2.prototype.getContentType = function() {
+ return this.attributes.get("contentType");
+ }, o2.prototype.hasContent = function() {
+ return this.attributes.has("content");
+ }, o2.prototype.getContent = function() {
+ return this.attributes.get("content");
+ }, o2.prototype.getWidth = function() {
+ return this.attributes.get("width");
+ }, o2.prototype.getHeight = function() {
+ return this.attributes.get("height");
+ }, o2.prototype.getFile = function() {
+ return this.file;
+ }, o2.prototype.setFile = function(t4) {
+ return this.file = t4, this.isPreviewable() ? this.preloadFile() : void 0;
+ }, o2.prototype.releaseFile = function() {
+ return this.releasePreloadedFile(), this.file = null;
+ }, o2.prototype.getUploadProgress = function() {
+ var t4;
+ return (t4 = this.uploadProgress) != null ? t4 : 0;
+ }, o2.prototype.setUploadProgress = function(t4) {
+ var e3;
+ return this.uploadProgress !== t4 ? (this.uploadProgress = t4, (e3 = this.uploadProgressDelegate) != null && typeof e3.attachmentDidChangeUploadProgress == "function" ? e3.attachmentDidChangeUploadProgress(this) : void 0) : void 0;
+ }, o2.prototype.toJSON = function() {
+ return this.getAttributes();
+ }, o2.prototype.getCacheKey = function() {
+ return [o2.__super__.getCacheKey.apply(this, arguments), this.attributes.getCacheKey(), this.getPreviewURL()].join("/");
+ }, o2.prototype.getPreviewURL = function() {
+ return this.previewURL || this.preloadingURL;
+ }, o2.prototype.setPreviewURL = function(t4) {
+ var e3, n3;
+ return t4 !== this.getPreviewURL() ? (this.previewURL = t4, (e3 = this.previewDelegate) != null && typeof e3.attachmentDidChangeAttributes == "function" && e3.attachmentDidChangeAttributes(this), (n3 = this.delegate) != null && typeof n3.attachmentDidChangePreviewURL == "function" ? n3.attachmentDidChangePreviewURL(this) : void 0) : void 0;
+ }, o2.prototype.preloadURL = function() {
+ return this.preload(this.getURL(), this.releaseFile);
+ }, o2.prototype.preloadFile = function() {
+ return this.file ? (this.fileObjectURL = URL.createObjectURL(this.file), this.preload(this.fileObjectURL)) : void 0;
+ }, o2.prototype.releasePreloadedFile = function() {
+ return this.fileObjectURL ? (URL.revokeObjectURL(this.fileObjectURL), this.fileObjectURL = null) : void 0;
+ }, o2.prototype.preload = function(t4, n3) {
+ var i3;
+ return t4 && t4 !== this.getPreviewURL() ? (this.preloadingURL = t4, i3 = new e2.ImagePreloadOperation(t4), i3.then(function(e3) {
+ return function(i4) {
+ var o3, r2;
+ return r2 = i4.width, o3 = i4.height, e3.getWidth() && e3.getHeight() || e3.setAttributes({width: r2, height: o3}), e3.preloadingURL = null, e3.setPreviewURL(t4), typeof n3 == "function" ? n3() : void 0;
+ };
+ }(this))["catch"](function(t5) {
+ return function() {
+ return t5.preloadingURL = null, typeof n3 == "function" ? n3() : void 0;
+ };
+ }(this))) : void 0;
+ }, o2;
+ }(e2.Object);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.Piece = function(n3) {
+ function i(t4, n4) {
+ n4 == null && (n4 = {}), i.__super__.constructor.apply(this, arguments), this.attributes = e2.Hash.box(n4);
+ }
+ return t3(i, n3), i.types = {}, i.registerType = function(t4, e3) {
+ return e3.type = t4, this.types[t4] = e3;
+ }, i.fromJSON = function(t4) {
+ var e3;
+ return (e3 = this.types[t4.type]) ? e3.fromJSON(t4) : void 0;
+ }, i.prototype.copyWithAttributes = function(t4) {
+ return new this.constructor(this.getValue(), t4);
+ }, i.prototype.copyWithAdditionalAttributes = function(t4) {
+ return this.copyWithAttributes(this.attributes.merge(t4));
+ }, i.prototype.copyWithoutAttribute = function(t4) {
+ return this.copyWithAttributes(this.attributes.remove(t4));
+ }, i.prototype.copy = function() {
+ return this.copyWithAttributes(this.attributes);
+ }, i.prototype.getAttribute = function(t4) {
+ return this.attributes.get(t4);
+ }, i.prototype.getAttributesHash = function() {
+ return this.attributes;
+ }, i.prototype.getAttributes = function() {
+ return this.attributes.toObject();
+ }, i.prototype.getCommonAttributes = function() {
+ var t4, e3, n4;
+ return (n4 = pieceList.getPieceAtIndex(0)) ? (t4 = n4.attributes, e3 = t4.getKeys(), pieceList.eachPiece(function(n5) {
+ return e3 = t4.getKeysCommonToHash(n5.attributes), t4 = t4.slice(e3);
+ }), t4.toObject()) : {};
+ }, i.prototype.hasAttribute = function(t4) {
+ return this.attributes.has(t4);
+ }, i.prototype.hasSameStringValueAsPiece = function(t4) {
+ return t4 != null && this.toString() === t4.toString();
+ }, i.prototype.hasSameAttributesAsPiece = function(t4) {
+ return t4 != null && (this.attributes === t4.attributes || this.attributes.isEqualTo(t4.attributes));
+ }, i.prototype.isBlockBreak = function() {
+ return false;
+ }, i.prototype.isEqualTo = function(t4) {
+ return i.__super__.isEqualTo.apply(this, arguments) || this.hasSameConstructorAs(t4) && this.hasSameStringValueAsPiece(t4) && this.hasSameAttributesAsPiece(t4);
+ }, i.prototype.isEmpty = function() {
+ return this.length === 0;
+ }, i.prototype.isSerializable = function() {
+ return true;
+ }, i.prototype.toJSON = function() {
+ return {type: this.constructor.type, attributes: this.getAttributes()};
+ }, i.prototype.contentsForInspection = function() {
+ return {type: this.constructor.type, attributes: this.attributes.inspect()};
+ }, i.prototype.canBeGrouped = function() {
+ return this.hasAttribute("href");
+ }, i.prototype.canBeGroupedWith = function(t4) {
+ return this.getAttribute("href") === t4.getAttribute("href");
+ }, i.prototype.getLength = function() {
+ return this.length;
+ }, i.prototype.canBeConsolidatedWith = function() {
+ return false;
+ }, i;
+ }(e2.Object);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.Piece.registerType("attachment", e2.AttachmentPiece = function(n3) {
+ function i(t4) {
+ this.attachment = t4, i.__super__.constructor.apply(this, arguments), this.length = 1, this.ensureAttachmentExclusivelyHasAttribute("href"), this.attachment.hasContent() || this.removeProhibitedAttributes();
+ }
+ return t3(i, n3), i.fromJSON = function(t4) {
+ return new this(e2.Attachment.fromJSON(t4.attachment), t4.attributes);
+ }, i.permittedAttributes = ["caption", "presentation"], i.prototype.ensureAttachmentExclusivelyHasAttribute = function(t4) {
+ return this.hasAttribute(t4) ? (this.attachment.hasAttribute(t4) || this.attachment.setAttributes(this.attributes.slice(t4)), this.attributes = this.attributes.remove(t4)) : void 0;
+ }, i.prototype.removeProhibitedAttributes = function() {
+ var t4;
+ return t4 = this.attributes.slice(this.constructor.permittedAttributes), t4.isEqualTo(this.attributes) ? void 0 : this.attributes = t4;
+ }, i.prototype.getValue = function() {
+ return this.attachment;
+ }, i.prototype.isSerializable = function() {
+ return !this.attachment.isPending();
+ }, i.prototype.getCaption = function() {
+ var t4;
+ return (t4 = this.attributes.get("caption")) != null ? t4 : "";
+ }, i.prototype.isEqualTo = function(t4) {
+ var e3;
+ return i.__super__.isEqualTo.apply(this, arguments) && this.attachment.id === (t4 != null && (e3 = t4.attachment) != null ? e3.id : void 0);
+ }, i.prototype.toString = function() {
+ return e2.OBJECT_REPLACEMENT_CHARACTER;
+ }, i.prototype.toJSON = function() {
+ var t4;
+ return t4 = i.__super__.toJSON.apply(this, arguments), t4.attachment = this.attachment, t4;
+ }, i.prototype.getCacheKey = function() {
+ return [i.__super__.getCacheKey.apply(this, arguments), this.attachment.getCacheKey()].join("/");
+ }, i.prototype.toConsole = function() {
+ return JSON.stringify(this.toString());
+ }, i;
+ }(e2.Piece));
+ }.call(this), function() {
+ var t3, n2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ i.call(e3, o2) && (t4[o2] = e3[o2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, i = {}.hasOwnProperty;
+ t3 = e2.normalizeNewlines, e2.Piece.registerType("string", e2.StringPiece = function(e3) {
+ function i2(e4) {
+ i2.__super__.constructor.apply(this, arguments), this.string = t3(e4), this.length = this.string.length;
+ }
+ return n2(i2, e3), i2.fromJSON = function(t4) {
+ return new this(t4.string, t4.attributes);
+ }, i2.prototype.getValue = function() {
+ return this.string;
+ }, i2.prototype.toString = function() {
+ return this.string.toString();
+ }, i2.prototype.isBlockBreak = function() {
+ return this.toString() === "\n" && this.getAttribute("blockBreak") === true;
+ }, i2.prototype.toJSON = function() {
+ var t4;
+ return t4 = i2.__super__.toJSON.apply(this, arguments), t4.string = this.string, t4;
+ }, i2.prototype.canBeConsolidatedWith = function(t4) {
+ return t4 != null && this.hasSameConstructorAs(t4) && this.hasSameAttributesAsPiece(t4);
+ }, i2.prototype.consolidateWith = function(t4) {
+ return new this.constructor(this.toString() + t4.toString(), this.attributes);
+ }, i2.prototype.splitAtOffset = function(t4) {
+ var e4, n3;
+ return t4 === 0 ? (e4 = null, n3 = this) : t4 === this.length ? (e4 = this, n3 = null) : (e4 = new this.constructor(this.string.slice(0, t4), this.attributes), n3 = new this.constructor(this.string.slice(t4), this.attributes)), [e4, n3];
+ }, i2.prototype.toConsole = function() {
+ var t4;
+ return t4 = this.string, t4.length > 15 && (t4 = t4.slice(0, 14) + "\u2026"), JSON.stringify(t4.toString());
+ }, i2;
+ }(e2.Piece));
+ }.call(this), function() {
+ var t3, n2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var o3 in e3)
+ i.call(e3, o3) && (t4[o3] = e3[o3]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, i = {}.hasOwnProperty, o2 = [].slice;
+ t3 = e2.spliceArray, e2.SplittableList = function(e3) {
+ function i2(t4) {
+ t4 == null && (t4 = []), i2.__super__.constructor.apply(this, arguments), this.objects = t4.slice(0), this.length = this.objects.length;
+ }
+ var r2, s2, a2;
+ return n2(i2, e3), i2.box = function(t4) {
+ return t4 instanceof this ? t4 : new this(t4);
+ }, i2.prototype.indexOf = function(t4) {
+ return this.objects.indexOf(t4);
+ }, i2.prototype.splice = function() {
+ var e4;
+ return e4 = 1 <= arguments.length ? o2.call(arguments, 0) : [], new this.constructor(t3.apply(null, [this.objects].concat(o2.call(e4))));
+ }, i2.prototype.eachObject = function(t4) {
+ var e4, n3, i3, o3, r3, s3;
+ for (r3 = this.objects, s3 = [], n3 = e4 = 0, i3 = r3.length; i3 > e4; n3 = ++e4)
+ o3 = r3[n3], s3.push(t4(o3, n3));
+ return s3;
+ }, i2.prototype.insertObjectAtIndex = function(t4, e4) {
+ return this.splice(e4, 0, t4);
+ }, i2.prototype.insertSplittableListAtIndex = function(t4, e4) {
+ return this.splice.apply(this, [e4, 0].concat(o2.call(t4.objects)));
+ }, i2.prototype.insertSplittableListAtPosition = function(t4, e4) {
+ var n3, i3, o3;
+ return o3 = this.splitObjectAtPosition(e4), i3 = o3[0], n3 = o3[1], new this.constructor(i3).insertSplittableListAtIndex(t4, n3);
+ }, i2.prototype.editObjectAtIndex = function(t4, e4) {
+ return this.replaceObjectAtIndex(e4(this.objects[t4]), t4);
+ }, i2.prototype.replaceObjectAtIndex = function(t4, e4) {
+ return this.splice(e4, 1, t4);
+ }, i2.prototype.removeObjectAtIndex = function(t4) {
+ return this.splice(t4, 1);
+ }, i2.prototype.getObjectAtIndex = function(t4) {
+ return this.objects[t4];
+ }, i2.prototype.getSplittableListInRange = function(t4) {
+ var e4, n3, i3, o3;
+ return i3 = this.splitObjectsAtRange(t4), n3 = i3[0], e4 = i3[1], o3 = i3[2], new this.constructor(n3.slice(e4, o3 + 1));
+ }, i2.prototype.selectSplittableList = function(t4) {
+ var e4, n3;
+ return n3 = function() {
+ var n4, i3, o3, r3;
+ for (o3 = this.objects, r3 = [], n4 = 0, i3 = o3.length; i3 > n4; n4++)
+ e4 = o3[n4], t4(e4) && r3.push(e4);
+ return r3;
+ }.call(this), new this.constructor(n3);
+ }, i2.prototype.removeObjectsInRange = function(t4) {
+ var e4, n3, i3, o3;
+ return i3 = this.splitObjectsAtRange(t4), n3 = i3[0], e4 = i3[1], o3 = i3[2], new this.constructor(n3).splice(e4, o3 - e4 + 1);
+ }, i2.prototype.transformObjectsInRange = function(t4, e4) {
+ var n3, i3, o3, r3, s3, a3, u;
+ return s3 = this.splitObjectsAtRange(t4), r3 = s3[0], i3 = s3[1], a3 = s3[2], u = function() {
+ var t5, s4, u2;
+ for (u2 = [], n3 = t5 = 0, s4 = r3.length; s4 > t5; n3 = ++t5)
+ o3 = r3[n3], u2.push(n3 >= i3 && a3 >= n3 ? e4(o3) : o3);
+ return u2;
+ }(), new this.constructor(u);
+ }, i2.prototype.splitObjectsAtRange = function(t4) {
+ var e4, n3, i3, o3, s3, u;
+ return o3 = this.splitObjectAtPosition(a2(t4)), n3 = o3[0], e4 = o3[1], i3 = o3[2], s3 = new this.constructor(n3).splitObjectAtPosition(r2(t4) + i3), n3 = s3[0], u = s3[1], [n3, e4, u - 1];
+ }, i2.prototype.getObjectAtPosition = function(t4) {
+ var e4, n3, i3;
+ return i3 = this.findIndexAndOffsetAtPosition(t4), e4 = i3.index, n3 = i3.offset, this.objects[e4];
+ }, i2.prototype.splitObjectAtPosition = function(t4) {
+ var e4, n3, i3, o3, r3, s3, a3, u, c2, l;
+ return s3 = this.findIndexAndOffsetAtPosition(t4), e4 = s3.index, r3 = s3.offset, o3 = this.objects.slice(0), e4 != null ? r3 === 0 ? (c2 = e4, l = 0) : (i3 = this.getObjectAtIndex(e4), a3 = i3.splitAtOffset(r3), n3 = a3[0], u = a3[1], o3.splice(e4, 1, n3, u), c2 = e4 + 1, l = n3.getLength() - r3) : (c2 = o3.length, l = 0), [o3, c2, l];
+ }, i2.prototype.consolidate = function() {
+ var t4, e4, n3, i3, o3, r3;
+ for (i3 = [], o3 = this.objects[0], r3 = this.objects.slice(1), t4 = 0, e4 = r3.length; e4 > t4; t4++)
+ n3 = r3[t4], (typeof o3.canBeConsolidatedWith == "function" ? o3.canBeConsolidatedWith(n3) : void 0) ? o3 = o3.consolidateWith(n3) : (i3.push(o3), o3 = n3);
+ return o3 != null && i3.push(o3), new this.constructor(i3);
+ }, i2.prototype.consolidateFromIndexToIndex = function(t4, e4) {
+ var n3, i3, r3;
+ return i3 = this.objects.slice(0), r3 = i3.slice(t4, e4 + 1), n3 = new this.constructor(r3).consolidate().toArray(), this.splice.apply(this, [t4, r3.length].concat(o2.call(n3)));
+ }, i2.prototype.findIndexAndOffsetAtPosition = function(t4) {
+ var e4, n3, i3, o3, r3, s3, a3;
+ for (e4 = 0, a3 = this.objects, i3 = n3 = 0, o3 = a3.length; o3 > n3; i3 = ++n3) {
+ if (s3 = a3[i3], r3 = e4 + s3.getLength(), t4 >= e4 && r3 > t4)
+ return {index: i3, offset: t4 - e4};
+ e4 = r3;
+ }
+ return {index: null, offset: null};
+ }, i2.prototype.findPositionAtIndexAndOffset = function(t4, e4) {
+ var n3, i3, o3, r3, s3, a3;
+ for (s3 = 0, a3 = this.objects, n3 = i3 = 0, o3 = a3.length; o3 > i3; n3 = ++i3)
+ if (r3 = a3[n3], t4 > n3)
+ s3 += r3.getLength();
+ else if (n3 === t4) {
+ s3 += e4;
+ break;
+ }
+ return s3;
+ }, i2.prototype.getEndPosition = function() {
+ var t4, e4;
+ return this.endPosition != null ? this.endPosition : this.endPosition = function() {
+ var n3, i3, o3;
+ for (e4 = 0, o3 = this.objects, n3 = 0, i3 = o3.length; i3 > n3; n3++)
+ t4 = o3[n3], e4 += t4.getLength();
+ return e4;
+ }.call(this);
+ }, i2.prototype.toString = function() {
+ return this.objects.join("");
+ }, i2.prototype.toArray = function() {
+ return this.objects.slice(0);
+ }, i2.prototype.toJSON = function() {
+ return this.toArray();
+ }, i2.prototype.isEqualTo = function(t4) {
+ return i2.__super__.isEqualTo.apply(this, arguments) || s2(this.objects, t4 != null ? t4.objects : void 0);
+ }, s2 = function(t4, e4) {
+ var n3, i3, o3, r3, s3;
+ if (e4 == null && (e4 = []), t4.length !== e4.length)
+ return false;
+ for (s3 = true, i3 = n3 = 0, o3 = t4.length; o3 > n3; i3 = ++n3)
+ r3 = t4[i3], s3 && !r3.isEqualTo(e4[i3]) && (s3 = false);
+ return s3;
+ }, i2.prototype.contentsForInspection = function() {
+ var t4;
+ return {objects: "[" + function() {
+ var e4, n3, i3, o3;
+ for (i3 = this.objects, o3 = [], e4 = 0, n3 = i3.length; n3 > e4; e4++)
+ t4 = i3[e4], o3.push(t4.inspect());
+ return o3;
+ }.call(this).join(", ") + "]"};
+ }, a2 = function(t4) {
+ return t4[0];
+ }, r2 = function(t4) {
+ return t4[1];
+ }, i2;
+ }(e2.Object);
+ }.call(this), function() {
+ var t3 = function(t4, e3) {
+ function i() {
+ this.constructor = t4;
+ }
+ for (var o2 in e3)
+ n2.call(e3, o2) && (t4[o2] = e3[o2]);
+ return i.prototype = e3.prototype, t4.prototype = new i(), t4.__super__ = e3.prototype, t4;
+ }, n2 = {}.hasOwnProperty;
+ e2.Text = function(n3) {
+ function i(t4) {
+ var n4;
+ t4 == null && (t4 = []), i.__super__.constructor.apply(this, arguments), this.pieceList = new e2.SplittableList(function() {
+ var e3, i2, o2;
+ for (o2 = [], e3 = 0, i2 = t4.length; i2 > e3; e3++)
+ n4 = t4[e3], n4.isEmpty() || o2.push(n4);
+ return o2;
+ }());
+ }
+ return t3(i, n3), i.textForAttachmentWithAttributes = function(t4, n4) {
+ var i2;
+ return i2 = new e2.AttachmentPiece(t4, n4), new this([i2]);
+ }, i.textForStringWithAttributes = function(t4, n4) {
+ var i2;
+ return i2 = new e2.StringPiece(t4, n4), new this([i2]);
+ }, i.fromJSON = function(t4) {
+ var n4, i2;
+ return i2 = function() {
+ var i3, o2, r2;
+ for (r2 = [], i3 = 0, o2 = t4.length; o2 > i3; i3++)
+ n4 = t4[i3], r2.push(e2.Piece.fromJSON(n4));
+ return r2;
+ }(), new this(i2);
+ }, i.prototype.copy = function() {
+ return this.copyWithPieceList(this.pieceList);
+ }, i.prototype.copyWithPieceList = function(t4) {
+ return new this.constructor(t4.consolidate().toArray());
+ }, i.prototype.copyUsingObjectMap = function(t4) {
+ var e3, n4;
+ return n4 = function() {
+ var n5, i2, o2, r2, s2;
+ for (o2 = this.getPieces(), s2 = [], n5 = 0, i2 = o2.length; i2 > n5; n5++)
+ e3 = o2[n5], s2.push((r2 = t4.find(e3)) != null ? r2 : e3);
+ return s2;
+ }.call(this), new this.constructor(n4);
+ }, i.prototype.appendText = function(t4) {
+ return this.insertTextAtPosition(t4, this.getLength());
+ }, i.prototype.insertTextAtPosition = function(t4, e3) {
+ return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t4.pieceList, e3));
+ }, i.prototype.removeTextAtRange = function(t4) {
+ return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t4));
+ }, i.prototype.replaceTextAtRange = function(t4, e3) {
+ return this.removeTextAtRange(e3).insertTextAtPosition(t4, e3[0]);
+ }, i.prototype.moveTextFromRangeToPosition = function(t4, e3) {
+ var n4, i2;
+ if (!(t4[0] <= e3 && e3 <= t4[1]))
+ return i2 = this.getTextAtRange(t4), n4 = i2.getLength(), t4[0] < e3 && (e3 -= n4), this.removeTextAtRange(t4).insertTextAtPosition(i2, e3);
+ }, i.prototype.addAttributeAtRange = function(t4, e3, n4) {
+ var i2;
+ return i2 = {}, i2[t4] = e3, this.addAttributesAtRange(i2, n4);
+ }, i.prototype.addAttributesAtRange = function(t4, e3) {
+ return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e3, function(e4) {
+ return e4.copyWithAdditionalAttributes(t4);
+ }));
+ }, i.prototype.removeAttributeAtRange = function(t4, e3) {
+ return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e3, function(e4) {
+ return e4.copyWithoutAttribute(t4);
+ }));
+ }, i.prototype.setAttributesAtRange = function(t4, e3) {
+ return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e3, function(e4) {
+ return e4.copyWithAttributes(t4);
+ }));
+ }, i.prototype.getAttributesAtPosition = function(t4) {
+ var e3, n4;
+ return (e3 = (n4 = this.pieceList.getObjectAtPosition(t4)) != null ? n4.getAttributes() : void 0) != null ? e3 : {};
+ }, i.prototype.getCommonAttributes = function() {
+ var t4, n4;
+ return t4 = function() {
+ var t5, e3, i2, o2;
+ for (i2 = this.pieceList.toArray(), o2 = [], t5 = 0, e3 = i2.length; e3 > t5; t5++)
+ n4 = i2[t5], o2.push(n4.getAttributes());
+ return o2;
+ }.call(this), e2.Hash.fromCommonAttributesOfObjects(t4).toObject();
+ }, i.prototype.getCommonAttributesAtRange = function(t4) {
+ var e3;
+ return (e3 = this.getTextAtRange(t4).getCommonAttributes()) != null ? e3 : {};
+ }, i.prototype.getExpandedRangeForAttributeAtOffset = function(t4, e3) {
+ var n4, i2, o2;
+ for (n4 = o2 = e3, i2 = this.getLength(); n4 > 0 && this.getCommonAttributesAtRange([n4 - 1, o2])[t4]; )
+ n4--;
+ for (; i2 > o2 && this.getCommonAttributesAtRange([e3, o2 + 1])[t4]; )
+ o2++;
+ return [n4, o2];
+ }, i.prototype.getTextAtRange = function(t4) {
+ return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t4));
+ }, i.prototype.getStringAtRange = function(t4) {
+ return this.pieceList.getSplittableListInRange(t4).toString();
+ }, i.prototype.getStringAtPosition = function(t4) {
+ return this.getStringAtRange([t4, t4 + 1]);
+ }, i.prototype.startsWithString = function(t4) {
+ return this.getStringAtRange([0, t4.length]) === t4;
+ }, i.prototype.endsWithString = function(t4) {
+ var e3;
+ return e3 = this.getLength(), this.getStringAtRange([e3 - t4.length, e3]) === t4;
+ }, i.prototype.getAttachmentPieces = function() {
+ var t4, e3, n4, i2, o2;
+ for (i2 = this.pieceList.toArray(), o2 = [], t4 = 0, e3 = i2.length; e3 > t4; t4++)
+ n4 = i2[t4], n4.attachment != null && o2.push(n4);
+ return o2;
+ }, i.prototype.getAttachments = function() {
+ var t4, e3, n4, i2, o2;
+ for (i2 = this.getAttachmentPieces(), o2 = [], t4 = 0, e3 = i2.length; e3 > t4; t4++)
+ n4 = i2[t4], o2.push(n4.attachment);
+ return o2;
+ }, i.prototype.getAttachmentAndPositionById = function(t4) {
+ var e3, n4, i2, o2, r2, s2;
+ for (o2 = 0, r2 = this.pieceList.toArray(), e3 = 0, n4 = r2.length; n4 > e3; e3++) {
+ if (i2 = r2[e3], ((s2 = i2.attachment) != null ? s2.id : void 0) === t4)
+ return {attachment: i2.attachment, position: o2};
+ o2 += i2.length;
+ }
+ return {attachment: null, position: null};
+ }, i.prototype.getAttachmentById = function(t4) {
+ var e3, n4, i2;
+ return i2 = this.getAttachmentAndPositionById(t4), e3 = i2.attachment, n4 = i2.position, e3;
+ }, i.prototype.getRangeOfAttachment = function(t4) {
+ var e3, n4;
+ return n4 = this.getAttachmentAndPositionById(t4.id), t4 = n4.attachment, e3 = n4.position, t4 != null ? [e3, e3 + 1] : void 0;
+ }, i.prototype.updateAttributesForAttachment = function(t4, e3) {
+ var n4;
+ return (n4 = this.getRangeOfAttachment(e3)) ? this.addAttributesAtRange(t4, n4) : this;
+ }, i.prototype.getLength = function() {
+ return this.pieceList.getEndPosition();
+ }, i.prototype.isEmpty = function() {
+ return this.getLength() === 0;
+ }, i.prototype.isEqualTo = function(t4) {
+ var e3;
+ return i.__super__.isEqualTo.apply(this, arguments) || (t4 != null && (e3 = t4.pieceList) != null ? e3.isEqualTo(this.pieceList) : void 0);
+ }, i.prototype.isBlockBreak = function() {
+ return this.getLength() === 1 && this.pieceList.getObjectAtIndex(0).isBlockBreak();
+ }, i.prototype.eachPiece = function(t4) {
+ return this.pieceList.eachObject(t4);
+ }, i.prototype.getPieces = function() {
+ return this.pieceList.toArray();
+ }, i.prototype.getPieceAtPosition = function(t4) {
+ return this.pieceList.getObjectAtPosition(t4);
+ }, i.prototype.contentsForInspection = function() {
+ return {pieceList: this.pieceList.inspect()};
+ }, i.prototype.toSerializableText = function() {
+ var t4;
+ return t4 = this.pieceList.selectSplittableList(function(t5) {
+ return t5.isSerializable();
+ }), this.copyWithPieceList(t4);
+ }, i.prototype.toString = function() {
+ return this.pieceList.toString();
+ }, i.prototype.toJSON = function() {
+ return this.pieceList.toJSON();
+ }, i.prototype.toConsole = function() {
+ var t4;
+ return JSON.stringify(function() {
+ var e3, n4, i2, o2;
+ for (i2 = this.pieceList.toArray(), o2 = [], e3 = 0, n4 = i2.length; n4 > e3; e3++)
+ t4 = i2[e3], o2.push(JSON.parse(t4.toConsole()));
+ return o2;
+ }.call(this));
+ }, i.prototype.getDirection = function() {
+ return e2.getDirection(this.toString());
+ }, i.prototype.isRTL = function() {
+ return this.getDirection() === "rtl";
+ }, i;
+ }(e2.Object);
+ }.call(this), function() {
+ var t3, n2, i, o2, r2, s2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ a2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, a2 = {}.hasOwnProperty, u = [].indexOf || function(t4) {
+ for (var e3 = 0, n3 = this.length; n3 > e3; e3++)
+ if (e3 in this && this[e3] === t4)
+ return e3;
+ return -1;
+ }, c2 = [].slice;
+ t3 = e2.arraysAreEqual, r2 = e2.spliceArray, i = e2.getBlockConfig, n2 = e2.getBlockAttributeNames, o2 = e2.getListAttributeNames, e2.Block = function(n3) {
+ function a3(t4, n4) {
+ t4 == null && (t4 = new e2.Text()), n4 == null && (n4 = []), a3.__super__.constructor.apply(this, arguments), this.text = h(t4), this.attributes = n4;
+ }
+ var l, h, p2, d, f, g, m, v, y;
+ return s2(a3, n3), a3.fromJSON = function(t4) {
+ var n4;
+ return n4 = e2.Text.fromJSON(t4.text), new this(n4, t4.attributes);
+ }, a3.prototype.isEmpty = function() {
+ return this.text.isBlockBreak();
+ }, a3.prototype.isEqualTo = function(e3) {
+ return a3.__super__.isEqualTo.apply(this, arguments) || this.text.isEqualTo(e3 != null ? e3.text : void 0) && t3(this.attributes, e3 != null ? e3.attributes : void 0);
+ }, a3.prototype.copyWithText = function(t4) {
+ return new this.constructor(t4, this.attributes);
+ }, a3.prototype.copyWithoutText = function() {
+ return this.copyWithText(null);
+ }, a3.prototype.copyWithAttributes = function(t4) {
+ return new this.constructor(this.text, t4);
+ }, a3.prototype.copyWithoutAttributes = function() {
+ return this.copyWithAttributes(null);
+ }, a3.prototype.copyUsingObjectMap = function(t4) {
+ var e3;
+ return this.copyWithText((e3 = t4.find(this.text)) ? e3 : this.text.copyUsingObjectMap(t4));
+ }, a3.prototype.addAttribute = function(t4) {
+ var e3;
+ return e3 = this.attributes.concat(d(t4)), this.copyWithAttributes(e3);
+ }, a3.prototype.removeAttribute = function(t4) {
+ var e3, n4;
+ return n4 = i(t4).listAttribute, e3 = g(g(this.attributes, t4), n4), this.copyWithAttributes(e3);
+ }, a3.prototype.removeLastAttribute = function() {
+ return this.removeAttribute(this.getLastAttribute());
+ }, a3.prototype.getLastAttribute = function() {
+ return f(this.attributes);
+ }, a3.prototype.getAttributes = function() {
+ return this.attributes.slice(0);
+ }, a3.prototype.getAttributeLevel = function() {
+ return this.attributes.length;
+ }, a3.prototype.getAttributeAtLevel = function(t4) {
+ return this.attributes[t4 - 1];
+ }, a3.prototype.hasAttribute = function(t4) {
+ return u.call(this.attributes, t4) >= 0;
+ }, a3.prototype.hasAttributes = function() {
+ return this.getAttributeLevel() > 0;
+ }, a3.prototype.getLastNestableAttribute = function() {
+ return f(this.getNestableAttributes());
+ }, a3.prototype.getNestableAttributes = function() {
+ var t4, e3, n4, o3, r3;
+ for (o3 = this.attributes, r3 = [], e3 = 0, n4 = o3.length; n4 > e3; e3++)
+ t4 = o3[e3], i(t4).nestable && r3.push(t4);
+ return r3;
+ }, a3.prototype.getNestingLevel = function() {
+ return this.getNestableAttributes().length;
+ }, a3.prototype.decreaseNestingLevel = function() {
+ var t4;
+ return (t4 = this.getLastNestableAttribute()) ? this.removeAttribute(t4) : this;
+ }, a3.prototype.increaseNestingLevel = function() {
+ var t4, e3, n4;
+ return (t4 = this.getLastNestableAttribute()) ? (n4 = this.attributes.lastIndexOf(t4), e3 = r2.apply(null, [this.attributes, n4 + 1, 0].concat(c2.call(d(t4)))), this.copyWithAttributes(e3)) : this;
+ }, a3.prototype.getListItemAttributes = function() {
+ var t4, e3, n4, o3, r3;
+ for (o3 = this.attributes, r3 = [], e3 = 0, n4 = o3.length; n4 > e3; e3++)
+ t4 = o3[e3], i(t4).listAttribute && r3.push(t4);
+ return r3;
+ }, a3.prototype.isListItem = function() {
+ var t4;
+ return (t4 = i(this.getLastAttribute())) != null ? t4.listAttribute : void 0;
+ }, a3.prototype.isTerminalBlock = function() {
+ var t4;
+ return (t4 = i(this.getLastAttribute())) != null ? t4.terminal : void 0;
+ }, a3.prototype.breaksOnReturn = function() {
+ var t4;
+ return (t4 = i(this.getLastAttribute())) != null ? t4.breakOnReturn : void 0;
+ }, a3.prototype.findLineBreakInDirectionFromPosition = function(t4, e3) {
+ var n4, i2;
+ return i2 = this.toString(), n4 = function() {
+ switch (t4) {
+ case "forward":
+ return i2.indexOf("\n", e3);
+ case "backward":
+ return i2.slice(0, e3).lastIndexOf("\n");
+ }
+ }(), n4 !== -1 ? n4 : void 0;
+ }, a3.prototype.contentsForInspection = function() {
+ return {text: this.text.inspect(), attributes: this.attributes};
+ }, a3.prototype.toString = function() {
+ return this.text.toString();
+ }, a3.prototype.toJSON = function() {
+ return {text: this.text, attributes: this.attributes};
+ }, a3.prototype.getDirection = function() {
+ return this.text.getDirection();
+ }, a3.prototype.isRTL = function() {
+ return this.text.isRTL();
+ }, a3.prototype.getLength = function() {
+ return this.text.getLength();
+ }, a3.prototype.canBeConsolidatedWith = function(t4) {
+ return !this.hasAttributes() && !t4.hasAttributes() && this.getDirection() === t4.getDirection();
+ }, a3.prototype.consolidateWith = function(t4) {
+ var n4, i2;
+ return n4 = e2.Text.textForStringWithAttributes("\n"), i2 = this.getTextWithoutBlockBreak().appendText(n4), this.copyWithText(i2.appendText(t4.text));
+ }, a3.prototype.splitAtOffset = function(t4) {
+ var e3, n4;
+ return t4 === 0 ? (e3 = null, n4 = this) : t4 === this.getLength() ? (e3 = this, n4 = null) : (e3 = this.copyWithText(this.text.getTextAtRange([0, t4])), n4 = this.copyWithText(this.text.getTextAtRange([t4, this.getLength()]))), [e3, n4];
+ }, a3.prototype.getBlockBreakPosition = function() {
+ return this.text.getLength() - 1;
+ }, a3.prototype.getTextWithoutBlockBreak = function() {
+ return m(this.text) ? this.text.getTextAtRange([0, this.getBlockBreakPosition()]) : this.text.copy();
+ }, a3.prototype.canBeGrouped = function(t4) {
+ return this.attributes[t4];
+ }, a3.prototype.canBeGroupedWith = function(t4, e3) {
+ var n4, r3, s3, a4;
+ return s3 = t4.getAttributes(), r3 = s3[e3], n4 = this.attributes[e3], !(n4 !== r3 || i(n4).group === false && (a4 = s3[e3 + 1], u.call(o2(), a4) < 0) || this.getDirection() !== t4.getDirection() && !t4.isEmpty());
+ }, h = function(t4) {
+ return t4 = y(t4), t4 = l(t4);
+ }, y = function(t4) {
+ var n4, i2, o3, r3, s3, a4;
+ return r3 = false, a4 = t4.getPieces(), i2 = 2 <= a4.length ? c2.call(a4, 0, n4 = a4.length - 1) : (n4 = 0, []), o3 = a4[n4++], o3 == null ? t4 : (i2 = function() {
+ var t5, e3, n5;
+ for (n5 = [], t5 = 0, e3 = i2.length; e3 > t5; t5++)
+ s3 = i2[t5], s3.isBlockBreak() ? (r3 = true, n5.push(v(s3))) : n5.push(s3);
+ return n5;
+ }(), r3 ? new e2.Text(c2.call(i2).concat([o3])) : t4);
+ }, p2 = e2.Text.textForStringWithAttributes("\n", {blockBreak: true}), l = function(t4) {
+ return m(t4) ? t4 : t4.appendText(p2);
+ }, m = function(t4) {
+ var e3, n4;
+ return n4 = t4.getLength(), n4 === 0 ? false : (e3 = t4.getTextAtRange([n4 - 1, n4]), e3.isBlockBreak());
+ }, v = function(t4) {
+ return t4.copyWithoutAttribute("blockBreak");
+ }, d = function(t4) {
+ var e3;
+ return e3 = i(t4).listAttribute, e3 != null ? [e3, t4] : [t4];
+ }, f = function(t4) {
+ return t4.slice(-1)[0];
+ }, g = function(t4, e3) {
+ var n4;
+ return n4 = t4.lastIndexOf(e3), n4 === -1 ? t4 : r2(t4, n4, 1);
+ }, a3;
+ }(e2.Object);
+ }.call(this), function() {
+ var t3, n2, i, o2 = function(t4, e3) {
+ function n3() {
+ this.constructor = t4;
+ }
+ for (var i2 in e3)
+ r2.call(e3, i2) && (t4[i2] = e3[i2]);
+ return n3.prototype = e3.prototype, t4.prototype = new n3(), t4.__super__ = e3.prototype, t4;
+ }, r2 = {}.hasOwnProperty, s2 = [].indexOf || function(t4) {
+ for (var e3 = 0, n3 = this.length; n3 > e3; e3++)
+ if (e3 in this && this[e3] === t4)
+ return e3;
+ return -1;
+ }, a2 = [].slice;
+ n2 = e2.tagName, i = e2.walkTree, t3 = e2.nodeIsAttachmentElement, e2.HTMLSanitizer = function(r3) {
+ function u(t4, e3) {
+ var n3;
+ n3 = e3 != null ? e3 : {}, this.allowedAttributes = n3.allowedAttributes, this.forbiddenProtocols = n3.forbiddenProtocols, this.forbiddenElements = n3.forbiddenElements, this.allowedAttributes == null && (this.allowedAttributes = c2), this.forbiddenProtocols == null && (this.forbiddenProtocols = h), this.forbiddenElements == null && (this.forbiddenElements = l), this.body = p2(t4);
+ }
+ var c2, l, h, p2;
+ return o2(u, r3), c2 = "style href src width height class".split(" "), h = "javascript:".split(" "), l = "script iframe".split(" "), u.sanitize = function(t4, e3) {
+ var n3;
+ return n3 = new this(t4, e3), n3.sanitize(), n3;
+ }, u.prototype.sanitize = function() {
+ return this.sanitizeElements(), this.normalizeListElementNesting();
+ }, u.prototype.getHTML = function() {
+ return this.body.innerHTML;
+ }, u.prototype.getBody = function() {
+ return this.body;
+ }, u.prototype.sanitizeElements = function() {
+ var t4, n3, o3, r4, s3;
+ for (s3 = i(this.body), r4 = []; s3.nextNode(); )
+ switch (o3 = s3.currentNode, o3.nodeType) {
+ case Node.ELEMENT_NODE:
+ this.elementIsRemovable(o3) ? r4.push(o3) : this.sanitizeElement(o3);
+ break;
+ case Node.COMMENT_NODE:
+ r4.push(o3);
+ }
+ for (t4 = 0, n3 = r4.length; n3 > t4; t4++)
+ o3 = r4[t4], e2.removeNode(o3);
+ return this.body;
+ }, u.prototype.sanitizeElement = function(t4) {
+ var e3, n3, i2, o3, r4;
+ for (t4.hasAttribute("href") && (o3 = t4.protocol, s2.call(this.forbiddenProtocols, o3) >= 0 && t4.removeAttribute("href")), r4 = a2.call(t4.attributes), e3 = 0, n3 = r4.length; n3 > e3; e3++)
+ i2 = r4[e3].name, s2.call(this.allowedAttributes, i2) >= 0 || i2.indexOf("data-trix") === 0 || t4.removeAttribute(i2);
+ return t4;
+ }, u.prototype.normalizeListElementNesting = function() {
+ var t4, e3, i2, o3, r4;
+ for (r4 = a2.call(this.body.querySelectorAll("ul,ol")), t4 = 0, e3 = r4.length; e3 > t4; t4++)
+ i2 = r4[t4], (o3 = i2.previousElementSibling) && n2(o3) === "li" && o3.appendChild(i2);
+ return this.body;
+ }, u.prototype.elementIsRemovable = function(t4) {
+ return (t4 != null ? t4.nodeType : void 0) === Node.ELEMENT_NODE ? this.elementIsForbidden(t4) || this.elementIsntSerializable(t4) : void 0;
+ }, u.prototype.elementIsForbidden = function(t4) {
+ var e3;
+ return e3 = n2(t4), s2.call(this.forbiddenElements, e3) >= 0;
+ }, u.prototype.elementIsntSerializable = function(e3) {
+ return e3.getAttribute("data-trix-serialize") === "false" && !t3(e3);
+ }, p2 = function(t4) {
+ var e3, n3, i2, o3, r4;
+ for (t4 == null && (t4 = ""), t4 = t4.replace(/<\/html[^>]*>[^]*$/i, "